mirror of
https://github.com/Nexoniarz/Finch.git
synced 2026-11-03 00:44:27 +00:00
boot/ is src/ now. The C++ compiler and CMake are gone from this branch (they are on before-bootstrap). bootstrap/build.sh builds the compiler from bootstrap/<system>.ll -- the compiler's own LLVM IR -- then builds it with itself and checks the two come out identical. bootstrap/build.sh seed writes the seed anew. The driver is complete: the runtime is compiled once and kept in ~/.cache/finch; a program's own C files, .o and .a files and frameworks link along; a linker failure is read and answered with link "lib" or the library that is missing. The old tests/fail diagnostics are all in again (a missing import, a str compared with null, 'write just the library's name', a map key that is a float, non-ASCII names, ...). tests/run.sh is the one test runner: programs, refusals, -g builds and the shared library. 106 passed.
79936 lines
3.4 MiB
79936 lines
3.4 MiB
; generated by the Finch compiler written in Finch
|
|
|
|
%S.main.Loader = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } }
|
|
%S.lexer.Token = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1 }
|
|
%S.lexer.Lexer = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 }
|
|
%S.ast.Type = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64 }
|
|
%S.ast.Node = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.ast.Type, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64 }
|
|
%S.ast.Program = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } }
|
|
%S.parser.Parser = type { { ptr, i64, i64 }, i64, i64, i64, { ptr, i64, i64 } }
|
|
%S.gen.Var = type { { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, i1, i64 }
|
|
%S.platform.Target = type { { ptr, i64, i64 }, i1, i1, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } }
|
|
%S.gen.Options = type { i1, i1, { ptr, i64, i64 }, %S.platform.Target }
|
|
%S.gen.Template = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1, i1 }
|
|
%S.gen.Binds = type { { ptr, i64, i64 }, { ptr, i64, i64 } }
|
|
%S.gen.EnumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } }
|
|
%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } }
|
|
%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64 }
|
|
%S.gen.FnSig = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 }
|
|
%S.gen.StructDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 }
|
|
%S.gen.Val = type { { ptr, i64, i64 }, %S.ast.Type, i1, i1 }
|
|
%S.gen.Place = type { { ptr, i64, i64 }, %S.ast.Type }
|
|
%S.gen.Ref = type { i1, %S.gen.Place, %S.gen.Val }
|
|
%S.cimport.CImports = type { { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 } }
|
|
%S.gen.Gen = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.gen.FnSig, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, %S.cimport.CImports, i1, i1, %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.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.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 }
|
|
@.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 [2 x i8] c"/\00"
|
|
@.str.12 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.13 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.14 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.15 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.16 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00"
|
|
@.str.17 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.18 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.19 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.20 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.21 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00"
|
|
@.str.22 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.23 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.24 = private unnamed_addr constant [30 x i8] c"used .paths on a null pointer\00"
|
|
@.str.25 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.26 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.27 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.28 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00"
|
|
@.str.29 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.30 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.31 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.32 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.33 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00"
|
|
@.str.34 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.35 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.36 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.37 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.38 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.39 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.40 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00"
|
|
@.str.41 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.42 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00"
|
|
@.str.43 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.44 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.45 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.46 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00"
|
|
@.str.47 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.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 [5 x i8] c".fch\00"
|
|
@.str.59 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.60 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00"
|
|
@.str.61 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.62 = private unnamed_addr constant [5 x i8] c".fch\00"
|
|
@.str.63 = private unnamed_addr constant [31 x i8] c"error: can't find the module '\00"
|
|
@.str.64 = private unnamed_addr constant [15 x i8] c"' (looked for \00"
|
|
@.str.65 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.66 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.67 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.68 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.69 = private unnamed_addr constant [20 x i8] c"error: can't open '\00"
|
|
@.str.70 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.71 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.72 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.73 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.74 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.75 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.76 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.77 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.78 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.79 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.80 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.81 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.82 = private unnamed_addr constant [31 x i8] c"used .loaded on a null pointer\00"
|
|
@.str.83 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.84 = private unnamed_addr constant [31 x i8] c"used .loaded on a null pointer\00"
|
|
@.str.85 = private unnamed_addr constant [42 x i8] c"Finch -- the compiler is written in Finch\00"
|
|
@.str.86 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.87 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.88 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.89 = private unnamed_addr constant [7 x i8] c"usage:\00"
|
|
@.str.90 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.91 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.92 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.93 = private unnamed_addr constant [61 x i8] c" finch run <file.fch> [args...] build and run a program\00"
|
|
@.str.94 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.95 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.96 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.97 = private unnamed_addr constant [53 x i8] c" finch build <file.fch> [-o name] build a program\00"
|
|
@.str.98 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.99 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.100 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.101 = private unnamed_addr constant [55 x i8] c" finch ir <file.fch> print the LLVM IR\00"
|
|
@.str.102 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.103 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.104 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.105 = private unnamed_addr constant [54 x i8] c" finch version show the version\00"
|
|
@.str.106 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.107 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.108 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.109 = private unnamed_addr constant [9 x i8] c"options:\00"
|
|
@.str.110 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.111 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.112 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.113 = private unnamed_addr constant [54 x i8] c" -O0 no optimization (faster to build)\00"
|
|
@.str.114 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.115 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.116 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.117 = private unnamed_addr constant [77 x i8] c" -l <lib> link a library (the same as link \22lib\22 in the program)\00"
|
|
@.str.118 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.119 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.120 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.121 = private unnamed_addr constant [58 x i8] c" -I <dir> look for imported C headers there too\00"
|
|
@.str.122 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.123 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.124 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.125 = private unnamed_addr constant [67 x i8] c" -g debug info (for gdb and lldb; use -O0 with it)\00"
|
|
@.str.126 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.127 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.128 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.129 = private unnamed_addr constant [102 x i8] c" --target <name> build for another system: windows, linux, arm64 (Linux), macos, or an LLVM triple\00"
|
|
@.str.130 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.131 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.132 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.133 = private unnamed_addr constant [79 x i8] c"not in this compiler yet: lsp. It is in the C++ one (branch before-bootstrap).\00"
|
|
@.str.134 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.135 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.136 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.137 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.138 = private unnamed_addr constant [8 x i8] c"version\00"
|
|
@.str.139 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.140 = private unnamed_addr constant [10 x i8] c"--version\00"
|
|
@.str.141 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00"
|
|
@.str.142 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.143 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.144 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.145 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.146 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.147 = private unnamed_addr constant [6 x i8] c"build\00"
|
|
@.str.148 = private unnamed_addr constant [4 x i8] c"run\00"
|
|
@.str.149 = private unnamed_addr constant [3 x i8] c"ir\00"
|
|
@.str.150 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.151 = private unnamed_addr constant [4 x i8] c"-O2\00"
|
|
@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.153 = private unnamed_addr constant [4 x i8] c"run\00"
|
|
@.str.154 = private unnamed_addr constant [3 x i8] c"-o\00"
|
|
@.str.155 = private unnamed_addr constant [6 x i8] c"build\00"
|
|
@.str.156 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.157 = private unnamed_addr constant [9 x i8] c"--shared\00"
|
|
@.str.158 = private unnamed_addr constant [6 x i8] c"build\00"
|
|
@.str.159 = private unnamed_addr constant [4 x i8] c"-O0\00"
|
|
@.str.160 = private unnamed_addr constant [4 x i8] c"-O0\00"
|
|
@.str.161 = private unnamed_addr constant [3 x i8] c"-l\00"
|
|
@.str.162 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.164 = private unnamed_addr constant [3 x i8] c"-l\00"
|
|
@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.166 = private unnamed_addr constant [3 x i8] c"-I\00"
|
|
@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.168 = private unnamed_addr constant [3 x i8] c"-g\00"
|
|
@.str.169 = private unnamed_addr constant [9 x i8] c"--target\00"
|
|
@.str.170 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.171 = private unnamed_addr constant [4 x i8] c"run\00"
|
|
@.str.172 = private unnamed_addr constant [4 x i8] c"run\00"
|
|
@.str.173 = private unnamed_addr constant [16 x i8] c"/tmp/finch_run_\00"
|
|
@.str.174 = private unnamed_addr constant [5 x i8] c".dll\00"
|
|
@.str.175 = private unnamed_addr constant [4 x i8] c"lib\00"
|
|
@.str.176 = private unnamed_addr constant [7 x i8] c".dylib\00"
|
|
@.str.177 = private unnamed_addr constant [4 x i8] c"lib\00"
|
|
@.str.178 = private unnamed_addr constant [4 x i8] c".so\00"
|
|
@.str.179 = private unnamed_addr constant [6 x i8] c"linux\00"
|
|
@.str.180 = private unnamed_addr constant [8 x i8] c"windows\00"
|
|
@.str.181 = private unnamed_addr constant [6 x i8] c"macos\00"
|
|
@.str.182 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.183 = private unnamed_addr constant [8 x i8] c"/../std\00"
|
|
@.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.185 = private unnamed_addr constant [5 x i8] c"/std\00"
|
|
@.str.186 = private unnamed_addr constant [4 x i8] c"std\00"
|
|
@.str.187 = private unnamed_addr constant [10 x i8] c"/path.fch\00"
|
|
@.str.188 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00"
|
|
@.str.189 = private unnamed_addr constant [1 x i8] c"\00"
|
|
declare ptr @getenv(ptr)
|
|
@.str.190 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.191 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.192 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.193 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.194 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.195 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.196 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.197 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.198 = private unnamed_addr constant [3 x i8] c".c\00"
|
|
@.str.199 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.200 = private unnamed_addr constant [3 x i8] c".o\00"
|
|
@.str.201 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.202 = private unnamed_addr constant [3 x i8] c".a\00"
|
|
@.str.203 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.204 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.205 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.206 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.207 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.208 = private unnamed_addr constant [4 x i8] c"PWD\00"
|
|
@.str.209 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.210 = private unnamed_addr constant [3 x i8] c"ir\00"
|
|
@.str.211 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.212 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.213 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.214 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00"
|
|
@.str.215 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.216 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.217 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00"
|
|
@.str.218 = private unnamed_addr constant [13 x i8] c"src/main.fch\00"
|
|
@.str.219 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00"
|
|
@.str.220 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00"
|
|
@.str.221 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00"
|
|
@.str.222 = private unnamed_addr constant [57 x i8] c"error: can't find the Finch runtime (runtime/finch_rt.c)\00"
|
|
@.str.223 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.224 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.225 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.226 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.227 = private unnamed_addr constant [7 x i8] c" -fPIC\00"
|
|
@.str.228 = private unnamed_addr constant [4 x i8] c" -g\00"
|
|
@.str.229 = private unnamed_addr constant [4 x i8] c"run\00"
|
|
@.str.230 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.231 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.232 = private unnamed_addr constant [7 x i8] c"rm -f \00"
|
|
@.str.233 = private unnamed_addr constant [3 x i8] c"fn\00"
|
|
@.str.234 = private unnamed_addr constant [7 x i8] c"return\00"
|
|
@.str.235 = private unnamed_addr constant [3 x i8] c"if\00"
|
|
@.str.236 = private unnamed_addr constant [5 x i8] c"else\00"
|
|
@.str.237 = private unnamed_addr constant [6 x i8] c"while\00"
|
|
@.str.238 = private unnamed_addr constant [4 x i8] c"for\00"
|
|
@.str.239 = private unnamed_addr constant [3 x i8] c"in\00"
|
|
@.str.240 = private unnamed_addr constant [6 x i8] c"break\00"
|
|
@.str.241 = private unnamed_addr constant [9 x i8] c"continue\00"
|
|
@.str.242 = private unnamed_addr constant [5 x i8] c"true\00"
|
|
@.str.243 = private unnamed_addr constant [6 x i8] c"false\00"
|
|
@.str.244 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.245 = private unnamed_addr constant [7 x i8] c"import\00"
|
|
@.str.246 = private unnamed_addr constant [5 x i8] c"link\00"
|
|
@.str.247 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.248 = private unnamed_addr constant [6 x i8] c"defer\00"
|
|
@.str.249 = private unnamed_addr constant [3 x i8] c"or\00"
|
|
@.str.250 = private unnamed_addr constant [4 x i8] c"try\00"
|
|
@.str.251 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.252 = private unnamed_addr constant [6 x i8] c"match\00"
|
|
@.str.253 = private unnamed_addr constant [7 x i8] c"export\00"
|
|
@.str.254 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.255 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00"
|
|
@.str.256 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.257 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.258 = private unnamed_addr constant [10 x i8] c": error: \00"
|
|
@.str.259 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.260 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.261 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.262 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.263 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.264 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.265 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.266 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.267 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.268 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.269 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.270 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.271 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.272 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.273 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.274 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.275 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.276 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.277 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00"
|
|
@.str.278 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.279 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00"
|
|
@.str.280 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.281 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00"
|
|
@.str.282 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.283 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00"
|
|
@.str.284 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.285 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.286 = private unnamed_addr constant [3 x i8] c"->\00"
|
|
@.str.287 = private unnamed_addr constant [3 x i8] c"<<\00"
|
|
@.str.288 = private unnamed_addr constant [3 x i8] c">>\00"
|
|
@.str.289 = private unnamed_addr constant [3 x i8] c"<=\00"
|
|
@.str.290 = private unnamed_addr constant [3 x i8] c">=\00"
|
|
@.str.291 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.292 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.293 = private unnamed_addr constant [3 x i8] c"&&\00"
|
|
@.str.294 = private unnamed_addr constant [3 x i8] c"||\00"
|
|
@.str.295 = private unnamed_addr constant [3 x i8] c"..\00"
|
|
@.str.296 = private unnamed_addr constant [3 x i8] c":=\00"
|
|
@.str.297 = private unnamed_addr constant [3 x i8] c"+=\00"
|
|
@.str.298 = private unnamed_addr constant [3 x i8] c"-=\00"
|
|
@.str.299 = private unnamed_addr constant [3 x i8] c"*=\00"
|
|
@.str.300 = private unnamed_addr constant [3 x i8] c"/=\00"
|
|
@.str.301 = private unnamed_addr constant [3 x i8] c"%=\00"
|
|
@.str.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 [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.306 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.307 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.308 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.310 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.311 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.312 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.313 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00"
|
|
@.str.314 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.315 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.316 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.317 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.318 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.319 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.320 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.321 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.322 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.323 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.324 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00"
|
|
@.str.325 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.326 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00"
|
|
@.str.327 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00"
|
|
@.str.328 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.329 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.330 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.331 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.332 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.333 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.334 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.335 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.336 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.338 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.339 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.340 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.341 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.342 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.343 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.344 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.345 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.347 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00"
|
|
@.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.349 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00"
|
|
@.str.350 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.351 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.353 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.354 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.355 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.356 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.357 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.358 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.359 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.360 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.361 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.362 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.363 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00"
|
|
@.str.364 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.365 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.366 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.367 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00"
|
|
@.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.369 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00"
|
|
@.str.370 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.371 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00"
|
|
@.str.372 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.373 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00"
|
|
@.str.374 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.375 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.376 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.377 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.378 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.379 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.380 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.381 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.382 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.383 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.384 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.385 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.386 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.387 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.388 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.389 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.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 [14 x i8] c"src/lexer.fch\00"
|
|
@.str.393 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.394 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.395 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.396 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.398 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.399 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.400 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.401 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.402 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.403 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.404 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.406 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.407 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.408 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.409 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.410 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.411 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.412 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.413 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.414 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.415 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.416 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.417 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.418 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.420 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.421 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.422 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.423 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.424 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.425 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.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 [28 x i8] c"used .src on a null pointer\00"
|
|
@.str.442 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.443 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.444 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.445 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.446 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.447 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.448 = private unnamed_addr constant [7 x i8] c"string\00"
|
|
@.str.449 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.450 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00"
|
|
@.str.451 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00"
|
|
@.str.452 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.453 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00"
|
|
@.str.454 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.455 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00"
|
|
@.str.456 = private unnamed_addr constant [23 x i8] c"unexpected character '\00"
|
|
@.str.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 [14 x i8] c"src/lexer.fch\00"
|
|
@.str.461 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.462 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.463 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.464 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.465 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.466 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.467 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.468 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00"
|
|
@.str.469 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00"
|
|
@.str.470 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00"
|
|
@.str.471 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.472 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.473 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.474 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.475 = private unnamed_addr constant [6 x i8] c"named\00"
|
|
@.str.476 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.477 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.478 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.479 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.480 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.481 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.482 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00"
|
|
@.str.483 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00"
|
|
@.str.484 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.485 = private unnamed_addr constant [3 x i8] c"[]\00"
|
|
@.str.486 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00"
|
|
@.str.487 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.488 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.489 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.490 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00"
|
|
@.str.491 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.492 = private unnamed_addr constant [5 x i8] c"map[\00"
|
|
@.str.493 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00"
|
|
@.str.494 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.495 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00"
|
|
@.str.496 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.497 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.498 = private unnamed_addr constant [5 x i8] c"ptr[\00"
|
|
@.str.499 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00"
|
|
@.str.500 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.501 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.502 = private unnamed_addr constant [6 x i8] c"named\00"
|
|
@.str.503 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.504 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.505 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.506 = private unnamed_addr constant [8 x i8] c"nothing\00"
|
|
@.str.507 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.508 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00"
|
|
@.str.509 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.510 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.511 = private unnamed_addr constant [10 x i8] c": error: \00"
|
|
@.str.512 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.513 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.514 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.515 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.516 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.517 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.518 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.519 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.520 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.521 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.522 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.523 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.524 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.525 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.526 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.527 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.528 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.529 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.530 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.531 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.532 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.533 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.534 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.535 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.537 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.538 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.539 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.540 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.541 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.542 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.543 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.545 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.546 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.547 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.548 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.549 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.550 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.551 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.552 = private unnamed_addr constant [12 x i8] c"end of file\00"
|
|
@.str.553 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.554 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.555 = private unnamed_addr constant [9 x i8] c"a number\00"
|
|
@.str.556 = private unnamed_addr constant [7 x i8] c"string\00"
|
|
@.str.557 = private unnamed_addr constant [9 x i8] c"a string\00"
|
|
@.str.558 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.559 = private unnamed_addr constant [7 x i8] c"a char\00"
|
|
@.str.560 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.561 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.562 = private unnamed_addr constant [10 x i8] c"expected \00"
|
|
@.str.563 = private unnamed_addr constant [9 x i8] c", found \00"
|
|
@.str.564 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.565 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.566 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.567 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.568 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.569 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.570 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.571 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.572 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.573 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.574 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.575 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.576 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.577 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00"
|
|
@.str.578 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.579 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.580 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.581 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.582 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.583 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.584 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.585 = private unnamed_addr constant [4 x i8] c"i16\00"
|
|
@.str.586 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.587 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.588 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.589 = private unnamed_addr constant [4 x i8] c"u16\00"
|
|
@.str.590 = private unnamed_addr constant [4 x i8] c"u32\00"
|
|
@.str.591 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.592 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.593 = private unnamed_addr constant [4 x i8] c"f64\00"
|
|
@.str.594 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.595 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.596 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00"
|
|
@.str.597 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.598 = private unnamed_addr constant [12 x i8] c"unexpected \00"
|
|
@.str.599 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00"
|
|
@.str.600 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.601 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.602 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.603 = private unnamed_addr constant [40 x i8] c"']' (a map type looks like map[str]int)\00"
|
|
@.str.604 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.605 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.606 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.607 = private unnamed_addr constant [4 x i8] c"']'\00"
|
|
@.str.608 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.609 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.610 = private unnamed_addr constant [4 x i8] c"f64\00"
|
|
@.str.611 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.612 = private unnamed_addr constant [6 x i8] c"named\00"
|
|
@.str.613 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.614 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.615 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.616 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.617 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.618 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.619 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00"
|
|
@.str.620 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.621 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.622 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.623 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.624 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.625 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.626 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.627 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.628 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.629 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.630 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.631 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.632 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.633 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.634 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.635 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.636 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.637 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.638 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.639 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.640 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.641 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.642 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.643 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.644 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.645 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.646 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.647 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.648 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.649 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.650 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.651 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.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 [2 x i8] c"]\00"
|
|
@.str.656 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.657 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.658 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.659 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.660 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.661 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.662 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.663 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.664 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.666 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.667 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.668 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.669 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.670 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.671 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.672 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.673 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.674 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.675 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.676 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.677 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.678 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.679 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.680 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.681 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.682 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.683 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.684 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.685 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.686 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.687 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.688 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.689 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.690 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.691 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.692 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.693 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.694 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.695 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.696 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.697 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.698 = private unnamed_addr constant [2 x i8] c"}\00"
|
|
@.str.699 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.700 = private unnamed_addr constant [12 x i8] c"unexpected \00"
|
|
@.str.701 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00"
|
|
@.str.702 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.703 = private unnamed_addr constant [7 x i8] c"import\00"
|
|
@.str.704 = private unnamed_addr constant [7 x i8] c"string\00"
|
|
@.str.705 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.706 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00"
|
|
@.str.707 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.708 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.709 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.710 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00"
|
|
@.str.711 = private unnamed_addr constant [5 x i8] c"link\00"
|
|
@.str.712 = private unnamed_addr constant [7 x i8] c"string\00"
|
|
@.str.713 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00"
|
|
@.str.714 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.715 = private unnamed_addr constant [3 x i8] c".c\00"
|
|
@.str.716 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.717 = private unnamed_addr constant [3 x i8] c".o\00"
|
|
@.str.718 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.719 = private unnamed_addr constant [3 x i8] c".a\00"
|
|
@.str.720 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.721 = private unnamed_addr constant [4 x i8] c"lib\00"
|
|
@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.723 = private unnamed_addr constant [4 x i8] c".so\00"
|
|
@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.725 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.726 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00"
|
|
@.str.727 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.728 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.729 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.730 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.731 = private unnamed_addr constant [7 x i8] c"'enum'\00"
|
|
@.str.732 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.733 = private unnamed_addr constant [13 x i8] c"an enum name\00"
|
|
@.str.734 = private unnamed_addr constant [2 x i8] c"{\00"
|
|
@.str.735 = private unnamed_addr constant [4 x i8] c"'{'\00"
|
|
@.str.736 = private unnamed_addr constant [2 x i8] c"}\00"
|
|
@.str.737 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.738 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00"
|
|
@.str.739 = private unnamed_addr constant [8 x i8] c"variant\00"
|
|
@.str.740 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.741 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00"
|
|
@.str.742 = private unnamed_addr constant [2 x i8] c"=\00"
|
|
@.str.743 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.744 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.745 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.746 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.747 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00"
|
|
@.str.748 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.749 = private unnamed_addr constant [10 x i8] c"the enum \00"
|
|
@.str.750 = private unnamed_addr constant [17 x i8] c" has no variants\00"
|
|
@.str.751 = private unnamed_addr constant [6 x i8] c"match\00"
|
|
@.str.752 = private unnamed_addr constant [6 x i8] c"match\00"
|
|
@.str.753 = private unnamed_addr constant [8 x i8] c"'match'\00"
|
|
@.str.754 = private unnamed_addr constant [2 x i8] c"{\00"
|
|
@.str.755 = private unnamed_addr constant [4 x i8] c"'{'\00"
|
|
@.str.756 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.757 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.758 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.759 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.760 = private unnamed_addr constant [2 x i8] c"}\00"
|
|
@.str.761 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.762 = private unnamed_addr constant [38 x i8] c"a match is never closed (missing '}')\00"
|
|
@.str.763 = private unnamed_addr constant [4 x i8] c"arm\00"
|
|
@.str.764 = private unnamed_addr constant [9 x i8] c"patterns\00"
|
|
@.str.765 = private unnamed_addr constant [5 x i8] c"else\00"
|
|
@.str.766 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.767 = private unnamed_addr constant [3 x i8] c"->\00"
|
|
@.str.768 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00"
|
|
@.str.769 = private unnamed_addr constant [2 x i8] c"{\00"
|
|
@.str.770 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.771 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.772 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.773 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00"
|
|
@.str.774 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.775 = private unnamed_addr constant [4 x i8] c"'['\00"
|
|
@.str.776 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.777 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00"
|
|
@.str.778 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.779 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.780 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00"
|
|
@.str.781 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.782 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.783 = private unnamed_addr constant [9 x i8] c"'struct'\00"
|
|
@.str.784 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.785 = private unnamed_addr constant [14 x i8] c"a struct name\00"
|
|
@.str.786 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.787 = private unnamed_addr constant [2 x i8] c"{\00"
|
|
@.str.788 = private unnamed_addr constant [4 x i8] c"'{'\00"
|
|
@.str.789 = private unnamed_addr constant [2 x i8] c"}\00"
|
|
@.str.790 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.791 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00"
|
|
@.str.792 = private unnamed_addr constant [6 x i8] c"field\00"
|
|
@.str.793 = private unnamed_addr constant [12 x i8] c"unexpected \00"
|
|
@.str.794 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00"
|
|
@.str.795 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.796 = private unnamed_addr constant [13 x i8] c"a field name\00"
|
|
@.str.797 = private unnamed_addr constant [2 x i8] c"=\00"
|
|
@.str.798 = private unnamed_addr constant [3 x i8] c"fn\00"
|
|
@.str.799 = private unnamed_addr constant [7 x i8] c"export\00"
|
|
@.str.800 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.801 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00"
|
|
@.str.802 = private unnamed_addr constant [3 x i8] c"fn\00"
|
|
@.str.803 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00"
|
|
@.str.804 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.805 = private unnamed_addr constant [16 x i8] c"a function name\00"
|
|
@.str.806 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.807 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.808 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.809 = private unnamed_addr constant [14 x i8] c"a method name\00"
|
|
@.str.810 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.811 = private unnamed_addr constant [4 x i8] c"'('\00"
|
|
@.str.812 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.813 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.814 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.815 = private unnamed_addr constant [6 x i8] c"param\00"
|
|
@.str.816 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.817 = private unnamed_addr constant [17 x i8] c"a parameter name\00"
|
|
@.str.818 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.819 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.820 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.821 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.822 = private unnamed_addr constant [4 x i8] c"')'\00"
|
|
@.str.823 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.824 = private unnamed_addr constant [3 x i8] c"->\00"
|
|
@.str.825 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.826 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.827 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.828 = private unnamed_addr constant [12 x i8] c"unexpected \00"
|
|
@.str.829 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00"
|
|
@.str.830 = private unnamed_addr constant [6 x i8] c"block\00"
|
|
@.str.831 = private unnamed_addr constant [2 x i8] c"{\00"
|
|
@.str.832 = private unnamed_addr constant [4 x i8] c"'{'\00"
|
|
@.str.833 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.834 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.835 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.836 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.837 = private unnamed_addr constant [2 x i8] c"}\00"
|
|
@.str.838 = private unnamed_addr constant [4 x i8] c"eof\00"
|
|
@.str.839 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00"
|
|
@.str.840 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.841 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.842 = private unnamed_addr constant [3 x i8] c"if\00"
|
|
@.str.843 = private unnamed_addr constant [6 x i8] c"while\00"
|
|
@.str.844 = private unnamed_addr constant [6 x i8] c"while\00"
|
|
@.str.845 = private unnamed_addr constant [4 x i8] c"for\00"
|
|
@.str.846 = private unnamed_addr constant [4 x i8] c"for\00"
|
|
@.str.847 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.848 = private unnamed_addr constant [21 x i8] c"a loop variable name\00"
|
|
@.str.849 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.850 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.851 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00"
|
|
@.str.852 = private unnamed_addr constant [3 x i8] c"in\00"
|
|
@.str.853 = private unnamed_addr constant [5 x i8] c"'in'\00"
|
|
@.str.854 = private unnamed_addr constant [3 x i8] c"..\00"
|
|
@.str.855 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00"
|
|
@.str.856 = private unnamed_addr constant [5 x i8] c"each\00"
|
|
@.str.857 = private unnamed_addr constant [6 x i8] c"match\00"
|
|
@.str.858 = private unnamed_addr constant [7 x i8] c"return\00"
|
|
@.str.859 = private unnamed_addr constant [7 x i8] c"return\00"
|
|
@.str.860 = private unnamed_addr constant [2 x i8] c"}\00"
|
|
@.str.861 = private unnamed_addr constant [6 x i8] c"break\00"
|
|
@.str.862 = private unnamed_addr constant [9 x i8] c"continue\00"
|
|
@.str.863 = private unnamed_addr constant [2 x i8] c"{\00"
|
|
@.str.864 = private unnamed_addr constant [6 x i8] c"defer\00"
|
|
@.str.865 = private unnamed_addr constant [6 x i8] c"defer\00"
|
|
@.str.866 = private unnamed_addr constant [6 x i8] c"defer\00"
|
|
@.str.867 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00"
|
|
@.str.868 = private unnamed_addr constant [3 x i8] c"fn\00"
|
|
@.str.869 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.870 = private unnamed_addr constant [7 x i8] c"import\00"
|
|
@.str.871 = private unnamed_addr constant [5 x i8] c"link\00"
|
|
@.str.872 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.873 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00"
|
|
@.str.874 = private unnamed_addr constant [5 x i8] c"decl\00"
|
|
@.str.875 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.876 = private unnamed_addr constant [16 x i8] c"a variable name\00"
|
|
@.str.877 = private unnamed_addr constant [2 x i8] c"=\00"
|
|
@.str.878 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.879 = private unnamed_addr constant [3 x i8] c":=\00"
|
|
@.str.880 = private unnamed_addr constant [5 x i8] c"decl\00"
|
|
@.str.881 = private unnamed_addr constant [2 x i8] c"=\00"
|
|
@.str.882 = private unnamed_addr constant [3 x i8] c"+=\00"
|
|
@.str.883 = private unnamed_addr constant [3 x i8] c"-=\00"
|
|
@.str.884 = private unnamed_addr constant [3 x i8] c"*=\00"
|
|
@.str.885 = private unnamed_addr constant [3 x i8] c"/=\00"
|
|
@.str.886 = private unnamed_addr constant [3 x i8] c"%=\00"
|
|
@.str.887 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.888 = private unnamed_addr constant [7 x i8] c"member\00"
|
|
@.str.889 = private unnamed_addr constant [6 x i8] c"index\00"
|
|
@.str.890 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00"
|
|
@.str.891 = private unnamed_addr constant [7 x i8] c"assign\00"
|
|
@.str.892 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.893 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00"
|
|
@.str.894 = private unnamed_addr constant [5 x i8] c"call\00"
|
|
@.str.895 = private unnamed_addr constant [7 x i8] c"method\00"
|
|
@.str.896 = private unnamed_addr constant [4 x i8] c"try\00"
|
|
@.str.897 = private unnamed_addr constant [3 x i8] c"or\00"
|
|
@.str.898 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00"
|
|
@.str.899 = private unnamed_addr constant [5 x i8] c"expr\00"
|
|
@.str.900 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.901 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00"
|
|
@.str.902 = private unnamed_addr constant [3 x i8] c"if\00"
|
|
@.str.903 = private unnamed_addr constant [3 x i8] c"if\00"
|
|
@.str.904 = private unnamed_addr constant [5 x i8] c"'if'\00"
|
|
@.str.905 = private unnamed_addr constant [5 x i8] c"else\00"
|
|
@.str.906 = private unnamed_addr constant [3 x i8] c"if\00"
|
|
@.str.907 = private unnamed_addr constant [3 x i8] c"||\00"
|
|
@.str.908 = private unnamed_addr constant [3 x i8] c"&&\00"
|
|
@.str.909 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.910 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.911 = private unnamed_addr constant [2 x i8] c"<\00"
|
|
@.str.912 = private unnamed_addr constant [3 x i8] c"<=\00"
|
|
@.str.913 = private unnamed_addr constant [2 x i8] c">\00"
|
|
@.str.914 = private unnamed_addr constant [3 x i8] c">=\00"
|
|
@.str.915 = private unnamed_addr constant [2 x i8] c"+\00"
|
|
@.str.916 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.917 = private unnamed_addr constant [2 x i8] c"|\00"
|
|
@.str.918 = private unnamed_addr constant [2 x i8] c"^\00"
|
|
@.str.919 = private unnamed_addr constant [2 x i8] c"*\00"
|
|
@.str.920 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.921 = private unnamed_addr constant [2 x i8] c"%\00"
|
|
@.str.922 = private unnamed_addr constant [3 x i8] c"<<\00"
|
|
@.str.923 = private unnamed_addr constant [3 x i8] c">>\00"
|
|
@.str.924 = private unnamed_addr constant [2 x i8] c"&\00"
|
|
@.str.925 = private unnamed_addr constant [3 x i8] c"or\00"
|
|
@.str.926 = private unnamed_addr constant [3 x i8] c"or\00"
|
|
@.str.927 = private unnamed_addr constant [2 x i8] c"{\00"
|
|
@.str.928 = private unnamed_addr constant [7 x i8] c"binary\00"
|
|
@.str.929 = private unnamed_addr constant [4 x i8] c"try\00"
|
|
@.str.930 = private unnamed_addr constant [4 x i8] c"try\00"
|
|
@.str.931 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.932 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.933 = private unnamed_addr constant [2 x i8] c"~\00"
|
|
@.str.934 = private unnamed_addr constant [6 x i8] c"unary\00"
|
|
@.str.935 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.936 = private unnamed_addr constant [4 x i8] c"'('\00"
|
|
@.str.937 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.938 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.939 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.940 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.941 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.942 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.943 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.944 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.945 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00"
|
|
@.str.946 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.947 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00"
|
|
@.str.948 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.949 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.950 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.951 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.952 = private unnamed_addr constant [4 x i8] c"')'\00"
|
|
@.str.953 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.954 = private unnamed_addr constant [7 x i8] c"member\00"
|
|
@.str.955 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.956 = private unnamed_addr constant [17 x i8] c"a name after '.'\00"
|
|
@.str.957 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.958 = private unnamed_addr constant [7 x i8] c"method\00"
|
|
@.str.959 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.960 = private unnamed_addr constant [6 x i8] c"index\00"
|
|
@.str.961 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.962 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.963 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.964 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.965 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.966 = private unnamed_addr constant [4 x i8] c"']'\00"
|
|
@.str.967 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.968 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.969 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.970 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.971 = private unnamed_addr constant [7 x i8] c"string\00"
|
|
@.str.972 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.973 = private unnamed_addr constant [5 x i8] c"true\00"
|
|
@.str.974 = private unnamed_addr constant [6 x i8] c"false\00"
|
|
@.str.975 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.976 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.977 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.978 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.979 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.980 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.981 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.982 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.983 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.984 = private unnamed_addr constant [4 x i8] c"')'\00"
|
|
@.str.985 = private unnamed_addr constant [6 x i8] c"match\00"
|
|
@.str.986 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.987 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.988 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.989 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.990 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.991 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.992 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.993 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.994 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.995 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.996 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.997 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.998 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00"
|
|
@.str.999 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.1000 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.1001 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00"
|
|
@.str.1002 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.1003 = private unnamed_addr constant [4 x i8] c"']'\00"
|
|
@.str.1004 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.1005 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.1006 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.1007 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00"
|
|
@.str.1008 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.1009 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00"
|
|
@.str.1010 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00"
|
|
@.str.1011 = private unnamed_addr constant [6 x i8] c"ident\00"
|
|
@.str.1012 = private unnamed_addr constant [6 x i8] c"targs\00"
|
|
@.str.1013 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.1014 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.1015 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00"
|
|
@.str.1016 = private unnamed_addr constant [5 x i8] c"call\00"
|
|
@.str.1017 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.1018 = private unnamed_addr constant [5 x i8] c"call\00"
|
|
@.str.1019 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.1020 = private unnamed_addr constant [12 x i8] c"unexpected \00"
|
|
@.str.1021 = private unnamed_addr constant [20 x i8] c" (expected a value)\00"
|
|
@.str.1022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1023 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.1024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1025 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.1026 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.1027 = private unnamed_addr constant [10 x i8] c": error: \00"
|
|
@.str.1028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1029 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.1030 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1031 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.1032 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.1033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1034 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.1035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1036 = private unnamed_addr constant [6 x i8] c"call \00"
|
|
@.str.1037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1038 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.1039 = private unnamed_addr constant [3 x i8] c" \00"
|
|
@.str.1040 = private unnamed_addr constant [9 x i8] c", !dbg !\00"
|
|
@.str.1041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1042 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.1043 = private unnamed_addr constant [3 x i8] c" \00"
|
|
@.str.1044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1045 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00"
|
|
@.str.1046 = private unnamed_addr constant [3 x i8] c"%t\00"
|
|
@.str.1047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1048 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00"
|
|
@.str.1049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1050 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00"
|
|
@.str.1051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1052 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00"
|
|
@.str.1053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1054 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.1055 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.1056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1057 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1059 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1060 = private unnamed_addr constant [11 x i8] c"br label %\00"
|
|
@.str.1061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1062 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1063 = private unnamed_addr constant [7 x i8] c"br i1 \00"
|
|
@.str.1064 = private unnamed_addr constant [10 x i8] c", label %\00"
|
|
@.str.1065 = private unnamed_addr constant [10 x i8] c", label %\00"
|
|
@.str.1066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1067 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1069 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00"
|
|
@.str.1070 = private unnamed_addr constant [3 x i8] c"%a\00"
|
|
@.str.1071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1072 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00"
|
|
@.str.1073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1074 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00"
|
|
@.str.1075 = private unnamed_addr constant [3 x i8] c" \00"
|
|
@.str.1076 = private unnamed_addr constant [11 x i8] c" = alloca \00"
|
|
@.str.1077 = private unnamed_addr constant [11 x i8] c", align 16\00"
|
|
@.str.1078 = private unnamed_addr constant [9 x i8] c" = load \00"
|
|
@.str.1079 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1080 = private unnamed_addr constant [7 x i8] c"store \00"
|
|
@.str.1081 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1082 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1083 = private unnamed_addr constant [4 x i8] c" = \00"
|
|
@.str.1084 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.1085 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.1086 = private unnamed_addr constant [4 x i8] c"i16\00"
|
|
@.str.1087 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.1088 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.1089 = private unnamed_addr constant [4 x i8] c"u16\00"
|
|
@.str.1090 = private unnamed_addr constant [4 x i8] c"u32\00"
|
|
@.str.1091 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.1092 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1093 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.1094 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.1095 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.1096 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.1097 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.1098 = private unnamed_addr constant [4 x i8] c"i16\00"
|
|
@.str.1099 = private unnamed_addr constant [4 x i8] c"u16\00"
|
|
@.str.1100 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.1101 = private unnamed_addr constant [4 x i8] c"u32\00"
|
|
@.str.1102 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.1103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1105 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1107 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1110 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1113 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.1114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1115 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.1116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1118 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.1119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1121 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1123 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1126 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1128 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1130 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1132 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1134 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.1135 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.1136 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1137 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.1138 = private unnamed_addr constant [64 x i8] c"a map key must be a whole number, a char, a bool or a str, not \00"
|
|
@.str.1139 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1140 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.1141 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00"
|
|
@.str.1142 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.1143 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.1144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1145 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1147 = private unnamed_addr constant [6 x i8] c"named\00"
|
|
@.str.1148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1149 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.1150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1151 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.1152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1153 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.1154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1156 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1157 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1158 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00"
|
|
@.str.1159 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1160 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1161 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1162 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00"
|
|
@.str.1163 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1164 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.1165 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1167 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1168 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1169 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00"
|
|
@.str.1170 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1171 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.1172 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1173 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.1174 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1175 = private unnamed_addr constant [25 x i8] c"there is no type named '\00"
|
|
@.str.1176 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1177 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.1178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1179 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.1180 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.1181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1182 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.1183 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1185 = private unnamed_addr constant [2 x i8] c",\00"
|
|
@.str.1186 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.1187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1188 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1189 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1190 = private unnamed_addr constant [5 x i8] c"main\00"
|
|
@.str.1191 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.1192 = private unnamed_addr constant [3 x i8] c"i1\00"
|
|
@.str.1193 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.1194 = private unnamed_addr constant [2 x i8] c"i\00"
|
|
@.str.1195 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1196 = private unnamed_addr constant [7 x i8] c"double\00"
|
|
@.str.1197 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.1198 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1199 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1200 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.1201 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.1202 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.1203 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00"
|
|
@.str.1204 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.1205 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.1206 = private unnamed_addr constant [4 x i8] c" x \00"
|
|
@.str.1207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1208 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.1209 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.1210 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.1211 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1212 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1213 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1214 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.1215 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.1216 = private unnamed_addr constant [4 x i8] c"%S.\00"
|
|
@.str.1217 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.1218 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.1219 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.1220 = private unnamed_addr constant [7 x i8] c"{ i1, \00"
|
|
@.str.1221 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00"
|
|
@.str.1222 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.1223 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.1224 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.1225 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.1226 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.1227 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.1228 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.1229 = private unnamed_addr constant [6 x i8] c"false\00"
|
|
@.str.1230 = private unnamed_addr constant [4 x i8] c"0.0\00"
|
|
@.str.1231 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1232 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1233 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1234 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.1235 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00"
|
|
@.str.1236 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00"
|
|
@.str.1237 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1238 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.1239 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.1240 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.1241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1242 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1244 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.1245 = private unnamed_addr constant [5 x i8] c"arr_\00"
|
|
@.str.1246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1247 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.1248 = private unnamed_addr constant [5 x i8] c"map_\00"
|
|
@.str.1249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1250 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.1251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1252 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.1253 = private unnamed_addr constant [3 x i8] c"E_\00"
|
|
@.str.1254 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.1255 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.1256 = private unnamed_addr constant [3 x i8] c"S_\00"
|
|
@.str.1257 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.1258 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00"
|
|
@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1262 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00"
|
|
@.str.1263 = private unnamed_addr constant [7 x i8] c"@.str.\00"
|
|
@.str.1264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1265 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00"
|
|
@.str.1266 = private unnamed_addr constant [2 x i8] c"\5C\00"
|
|
@.str.1267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1268 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00"
|
|
@.str.1269 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00"
|
|
@.str.1270 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00"
|
|
@.str.1271 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1272 = private unnamed_addr constant [5 x i8] c"\5C00\22\00"
|
|
@.str.1273 = private unnamed_addr constant [7 x i8] c"{ ptr \00"
|
|
@.str.1274 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1275 = private unnamed_addr constant [10 x i8] c", i64 0 }\00"
|
|
@.str.1276 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1277 = private unnamed_addr constant [6 x i8] c"panic\00"
|
|
@.str.1278 = private unnamed_addr constant [3 x i8] c"ok\00"
|
|
@.str.1279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1280 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.1281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1282 = private unnamed_addr constant [28 x i8] c"call void @finch_panic(ptr \00"
|
|
@.str.1283 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1284 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1285 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1286 = private unnamed_addr constant [12 x i8] c"unreachable\00"
|
|
@.str.1287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1288 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1289 = private unnamed_addr constant [6 x i8] c"range\00"
|
|
@.str.1290 = private unnamed_addr constant [8 x i8] c"inrange\00"
|
|
@.str.1291 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00"
|
|
@.str.1292 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.1293 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1294 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.1295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1296 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00"
|
|
@.str.1297 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1298 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1299 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1300 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1301 = private unnamed_addr constant [12 x i8] c"unreachable\00"
|
|
@.str.1302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1303 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1305 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.1306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1307 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00"
|
|
@.str.1308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1309 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00"
|
|
@.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1311 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1313 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.1314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1315 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.1316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1317 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.1318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1319 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00"
|
|
@.str.1320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1321 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00"
|
|
@.str.1322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1323 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1325 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.1326 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00"
|
|
@.str.1327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1328 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00"
|
|
@.str.1329 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.1330 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.1331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1332 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.1333 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.1334 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00"
|
|
@.str.1335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1336 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.1337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1338 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00"
|
|
@.str.1339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1340 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00"
|
|
@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1342 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1344 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.1345 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1346 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1347 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.1348 = private unnamed_addr constant [7 x i8] c"n.cond\00"
|
|
@.str.1349 = private unnamed_addr constant [7 x i8] c"n.body\00"
|
|
@.str.1350 = private unnamed_addr constant [6 x i8] c"n.end\00"
|
|
@.str.1351 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1352 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00"
|
|
@.str.1353 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.1354 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1356 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1357 = private unnamed_addr constant [9 x i8] c"add i64 \00"
|
|
@.str.1358 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.1359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1362 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1363 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00"
|
|
@.str.1364 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1365 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1366 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.1367 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.1368 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.1369 = private unnamed_addr constant [11 x i8] c"call void \00"
|
|
@.str.1370 = private unnamed_addr constant [6 x i8] c"(ptr \00"
|
|
@.str.1371 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1372 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1373 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00"
|
|
@.str.1374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1375 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00"
|
|
@.str.1376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1377 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00"
|
|
@.str.1378 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.1379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1380 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00"
|
|
@.str.1381 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1382 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1383 = private unnamed_addr constant [5 x i8] c"%dst\00"
|
|
@.str.1384 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1385 = private unnamed_addr constant [5 x i8] c"%src\00"
|
|
@.str.1386 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1387 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00"
|
|
@.str.1388 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1389 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1390 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1392 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1393 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1394 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1396 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.1397 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00"
|
|
@.str.1398 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1399 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1401 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1402 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1403 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00"
|
|
@.str.1404 = private unnamed_addr constant [5 x i8] c"%src\00"
|
|
@.str.1405 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1406 = private unnamed_addr constant [5 x i8] c"%dst\00"
|
|
@.str.1407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1408 = private unnamed_addr constant [11 x i8] c"entry.live\00"
|
|
@.str.1409 = private unnamed_addr constant [11 x i8] c"entry.next\00"
|
|
@.str.1410 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00"
|
|
@.str.1411 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1412 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1413 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1414 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00"
|
|
@.str.1415 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.1416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1419 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1421 = private unnamed_addr constant [5 x i8] c"%src\00"
|
|
@.str.1422 = private unnamed_addr constant [5 x i8] c"%dst\00"
|
|
@.str.1423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1424 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1425 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00"
|
|
@.str.1426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1427 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1428 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00"
|
|
@.str.1429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1431 = private unnamed_addr constant [9 x i8] c"ret void\00"
|
|
@.str.1432 = private unnamed_addr constant [22 x i8] c"define internal void \00"
|
|
@.str.1433 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00"
|
|
@.str.1434 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1435 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.1436 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00"
|
|
@.str.1437 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1438 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00"
|
|
@.str.1439 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.1440 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00"
|
|
@.str.1441 = private unnamed_addr constant [7 x i8] c", null\00"
|
|
@.str.1442 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1443 = private unnamed_addr constant [11 x i8] c"select i1 \00"
|
|
@.str.1444 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1445 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1446 = private unnamed_addr constant [5 x i8] c"%lld\00"
|
|
@.str.1447 = private unnamed_addr constant [5 x i8] c"i64 \00"
|
|
@.str.1448 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.1449 = private unnamed_addr constant [5 x i8] c"%llu\00"
|
|
@.str.1450 = private unnamed_addr constant [5 x i8] c"i64 \00"
|
|
@.str.1451 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.1452 = private unnamed_addr constant [3 x i8] c"%g\00"
|
|
@.str.1453 = private unnamed_addr constant [8 x i8] c"double \00"
|
|
@.str.1454 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1455 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.1456 = private unnamed_addr constant [9 x i8] c"sext i8 \00"
|
|
@.str.1457 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.1458 = private unnamed_addr constant [5 x i8] c"'%c'\00"
|
|
@.str.1459 = private unnamed_addr constant [5 x i8] c"i32 \00"
|
|
@.str.1460 = private unnamed_addr constant [3 x i8] c"%c\00"
|
|
@.str.1461 = private unnamed_addr constant [5 x i8] c"i32 \00"
|
|
@.str.1462 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.1463 = private unnamed_addr constant [5 x i8] c"true\00"
|
|
@.str.1464 = private unnamed_addr constant [6 x i8] c"false\00"
|
|
@.str.1465 = private unnamed_addr constant [11 x i8] c"select i1 \00"
|
|
@.str.1466 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1467 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1468 = private unnamed_addr constant [3 x i8] c"%s\00"
|
|
@.str.1469 = private unnamed_addr constant [5 x i8] c"ptr \00"
|
|
@.str.1470 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1471 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00"
|
|
@.str.1472 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.1473 = private unnamed_addr constant [11 x i8] c"trunc i64 \00"
|
|
@.str.1474 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.1475 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00"
|
|
@.str.1476 = private unnamed_addr constant [5 x i8] c"i32 \00"
|
|
@.str.1477 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1478 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.1479 = private unnamed_addr constant [5 x i8] c"i32 \00"
|
|
@.str.1480 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1481 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1482 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00"
|
|
@.str.1483 = private unnamed_addr constant [7 x i8] c", null\00"
|
|
@.str.1484 = private unnamed_addr constant [9 x i8] c"ptr.null\00"
|
|
@.str.1485 = private unnamed_addr constant [9 x i8] c"ptr.addr\00"
|
|
@.str.1486 = private unnamed_addr constant [9 x i8] c"ptr.done\00"
|
|
@.str.1487 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1488 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1489 = private unnamed_addr constant [7 x i8] c"0x%llx\00"
|
|
@.str.1490 = private unnamed_addr constant [5 x i8] c"i64 \00"
|
|
@.str.1491 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00"
|
|
@.str.1492 = private unnamed_addr constant [8 x i8] c" to i64\00"
|
|
@.str.1493 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1494 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1495 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1496 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.1497 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.1498 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.1499 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00"
|
|
@.str.1500 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1501 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00"
|
|
@.str.1502 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1503 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1504 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1505 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.1506 = private unnamed_addr constant [2 x i8] c"1\00"
|
|
@.str.1507 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00"
|
|
@.str.1508 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1509 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.1510 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1511 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00"
|
|
@.str.1512 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1513 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.1514 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1515 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00"
|
|
@.str.1516 = private unnamed_addr constant [10 x i8] c", double \00"
|
|
@.str.1517 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1518 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1519 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.1520 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00"
|
|
@.str.1521 = private unnamed_addr constant [6 x i8] c", i8 \00"
|
|
@.str.1522 = private unnamed_addr constant [7 x i8] c", i32 \00"
|
|
@.str.1523 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1524 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.1525 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00"
|
|
@.str.1526 = private unnamed_addr constant [7 x i8] c", i32 \00"
|
|
@.str.1527 = private unnamed_addr constant [9 x i8] c"zext i1 \00"
|
|
@.str.1528 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.1529 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1530 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1531 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00"
|
|
@.str.1532 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1533 = private unnamed_addr constant [7 x i8] c", i32 \00"
|
|
@.str.1534 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1535 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1536 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1537 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00"
|
|
@.str.1538 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1539 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1540 = private unnamed_addr constant [11 x i8] c"call void \00"
|
|
@.str.1541 = private unnamed_addr constant [6 x i8] c"(ptr \00"
|
|
@.str.1542 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1543 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1544 = private unnamed_addr constant [15 x i8] c"@finch.format.\00"
|
|
@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1546 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00"
|
|
@.str.1547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1548 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00"
|
|
@.str.1549 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.1550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1551 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1552 = private unnamed_addr constant [3 x i8] c"%a\00"
|
|
@.str.1553 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1554 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00"
|
|
@.str.1555 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1556 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.1557 = private unnamed_addr constant [4 x i8] c"sep\00"
|
|
@.str.1558 = private unnamed_addr constant [5 x i8] c"item\00"
|
|
@.str.1559 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00"
|
|
@.str.1560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1561 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.1562 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1563 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.1564 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1565 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.1566 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.1567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1568 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1569 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1570 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.1571 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.1572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1573 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.1574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1575 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.1576 = private unnamed_addr constant [3 x i8] c"%a\00"
|
|
@.str.1577 = private unnamed_addr constant [11 x i8] c"enum.other\00"
|
|
@.str.1578 = private unnamed_addr constant [10 x i8] c"enum.done\00"
|
|
@.str.1579 = private unnamed_addr constant [7 x i8] c"enum.v\00"
|
|
@.str.1580 = private unnamed_addr constant [5 x i8] c"i32 \00"
|
|
@.str.1581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1582 = private unnamed_addr constant [10 x i8] c", label %\00"
|
|
@.str.1583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1584 = private unnamed_addr constant [12 x i8] c"switch i32 \00"
|
|
@.str.1585 = private unnamed_addr constant [10 x i8] c", label %\00"
|
|
@.str.1586 = private unnamed_addr constant [4 x i8] c" [ \00"
|
|
@.str.1587 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1588 = private unnamed_addr constant [3 x i8] c" ]\00"
|
|
@.str.1589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1590 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1592 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1594 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1595 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.1596 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00"
|
|
@.str.1597 = private unnamed_addr constant [10 x i8] c"sext i32 \00"
|
|
@.str.1598 = private unnamed_addr constant [8 x i8] c" to i64\00"
|
|
@.str.1599 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1600 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1601 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1602 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.1603 = private unnamed_addr constant [3 x i8] c"i1\00"
|
|
@.str.1604 = private unnamed_addr constant [3 x i8] c"i1\00"
|
|
@.str.1605 = private unnamed_addr constant [5 x i8] c"true\00"
|
|
@.str.1606 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1607 = private unnamed_addr constant [2 x i8] c"{\00"
|
|
@.str.1608 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1609 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1610 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00"
|
|
@.str.1611 = private unnamed_addr constant [3 x i8] c"%a\00"
|
|
@.str.1612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1613 = private unnamed_addr constant [11 x i8] c"entry.live\00"
|
|
@.str.1614 = private unnamed_addr constant [11 x i8] c"entry.next\00"
|
|
@.str.1615 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00"
|
|
@.str.1616 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1617 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.1618 = private unnamed_addr constant [4 x i8] c"sep\00"
|
|
@.str.1619 = private unnamed_addr constant [5 x i8] c"item\00"
|
|
@.str.1620 = private unnamed_addr constant [3 x i8] c"i1\00"
|
|
@.str.1621 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1622 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.1623 = private unnamed_addr constant [3 x i8] c"i1\00"
|
|
@.str.1624 = private unnamed_addr constant [6 x i8] c"false\00"
|
|
@.str.1625 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1627 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1628 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1629 = private unnamed_addr constant [3 x i8] c": \00"
|
|
@.str.1630 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1633 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1634 = private unnamed_addr constant [2 x i8] c"}\00"
|
|
@.str.1635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1636 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1638 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1639 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.1640 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.1641 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1642 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1644 = private unnamed_addr constant [3 x i8] c": \00"
|
|
@.str.1645 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.1646 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00"
|
|
@.str.1647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1648 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1651 = private unnamed_addr constant [5 x i8] c"%buf\00"
|
|
@.str.1652 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1653 = private unnamed_addr constant [9 x i8] c"ret void\00"
|
|
@.str.1654 = private unnamed_addr constant [22 x i8] c"define internal void \00"
|
|
@.str.1655 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00"
|
|
@.str.1656 = private unnamed_addr constant [7 x i8] c"trunc \00"
|
|
@.str.1657 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1658 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.1659 = private unnamed_addr constant [6 x i8] c"sext \00"
|
|
@.str.1660 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1661 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.1662 = private unnamed_addr constant [6 x i8] c"zext \00"
|
|
@.str.1663 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1664 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.1665 = private unnamed_addr constant [7 x i8] c"fpext \00"
|
|
@.str.1666 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1667 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.1668 = private unnamed_addr constant [9 x i8] c"fptrunc \00"
|
|
@.str.1669 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1670 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.1671 = private unnamed_addr constant [8 x i8] c"sitofp \00"
|
|
@.str.1672 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1673 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.1674 = private unnamed_addr constant [8 x i8] c"uitofp \00"
|
|
@.str.1675 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.1676 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.1677 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1678 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1679 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.1680 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1681 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1682 = private unnamed_addr constant [12 x i8] c"the number \00"
|
|
@.str.1683 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00"
|
|
@.str.1684 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1685 = private unnamed_addr constant [3 x i8] c".0\00"
|
|
@.str.1686 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.1687 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1688 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1689 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.1690 = private unnamed_addr constant [10 x i8] c" must be \00"
|
|
@.str.1691 = private unnamed_addr constant [15 x i8] c", but this is \00"
|
|
@.str.1692 = private unnamed_addr constant [7 x i8] c" (use \00"
|
|
@.str.1693 = private unnamed_addr constant [17 x i8] c"(...) to convert\00"
|
|
@.str.1694 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00"
|
|
@.str.1695 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.1696 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1697 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.1698 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.1699 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00"
|
|
@.str.1700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1701 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1703 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1705 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1708 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1710 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1712 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00"
|
|
@.str.1713 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1714 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1716 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1717 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1718 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00"
|
|
@.str.1719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1720 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1722 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1724 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1725 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1726 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1728 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1729 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1732 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1734 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1735 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1736 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1737 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1739 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1740 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1742 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1743 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1744 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1745 = private unnamed_addr constant [6 x i8] c"print\00"
|
|
@.str.1746 = private unnamed_addr constant [5 x i8] c"addr\00"
|
|
@.str.1747 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.1748 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.1749 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.1750 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.1751 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.1752 = private unnamed_addr constant [10 x i8] c"read_file\00"
|
|
@.str.1753 = private unnamed_addr constant [11 x i8] c"write_file\00"
|
|
@.str.1754 = private unnamed_addr constant [12 x i8] c"file_exists\00"
|
|
@.str.1755 = private unnamed_addr constant [6 x i8] c"shell\00"
|
|
@.str.1756 = private unnamed_addr constant [5 x i8] c"exit\00"
|
|
@.str.1757 = private unnamed_addr constant [6 x i8] c"input\00"
|
|
@.str.1758 = private unnamed_addr constant [4 x i8] c"new\00"
|
|
@.str.1759 = private unnamed_addr constant [5 x i8] c"free\00"
|
|
@.str.1760 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.1761 = private unnamed_addr constant [12 x i8] c"delete_file\00"
|
|
@.str.1762 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.1763 = private unnamed_addr constant [4 x i8] c"i16\00"
|
|
@.str.1764 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.1765 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.1766 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.1767 = private unnamed_addr constant [4 x i8] c"u16\00"
|
|
@.str.1768 = private unnamed_addr constant [4 x i8] c"u32\00"
|
|
@.str.1769 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.1770 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.1771 = private unnamed_addr constant [4 x i8] c"f64\00"
|
|
@.str.1772 = private unnamed_addr constant [6 x i8] c"error\00"
|
|
@.str.1773 = private unnamed_addr constant [4 x i8] c"err\00"
|
|
@.str.1774 = private unnamed_addr constant [19 x i8] c"a variable named '\00"
|
|
@.str.1775 = private unnamed_addr constant [22 x i8] c"' already exists here\00"
|
|
@.str.1776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1777 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1778 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1779 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00"
|
|
@.str.1780 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1781 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00"
|
|
@.str.1782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1783 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1785 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1786 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1788 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00"
|
|
@.str.1789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1790 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00"
|
|
@.str.1791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1792 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1794 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1795 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1796 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00"
|
|
@.str.1797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1798 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1801 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00"
|
|
@.str.1802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1803 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00"
|
|
@.str.1804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1805 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00"
|
|
@.str.1806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1808 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00"
|
|
@.str.1809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1810 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00"
|
|
@.str.1811 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1813 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00"
|
|
@.str.1814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1815 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00"
|
|
@.str.1816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1817 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00"
|
|
@.str.1818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1819 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1821 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.1822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1823 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1825 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.1826 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1827 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00"
|
|
@.str.1828 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.1829 = private unnamed_addr constant [7 x i8] c"member\00"
|
|
@.str.1830 = private unnamed_addr constant [6 x i8] c"index\00"
|
|
@.str.1831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1832 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1833 = private unnamed_addr constant [5 x i8] c"push\00"
|
|
@.str.1834 = private unnamed_addr constant [4 x i8] c"pop\00"
|
|
@.str.1835 = private unnamed_addr constant [7 x i8] c"insert\00"
|
|
@.str.1836 = private unnamed_addr constant [7 x i8] c"remove\00"
|
|
@.str.1837 = private unnamed_addr constant [6 x i8] c"clear\00"
|
|
@.str.1838 = private unnamed_addr constant [7 x i8] c"resize\00"
|
|
@.str.1839 = private unnamed_addr constant [5 x i8] c"sort\00"
|
|
@.str.1840 = private unnamed_addr constant [8 x i8] c"reverse\00"
|
|
@.str.1841 = private unnamed_addr constant [7 x i8] c"assign\00"
|
|
@.str.1842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1843 = private unnamed_addr constant [7 x i8] c"method\00"
|
|
@.str.1844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1845 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00"
|
|
@.str.1846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1847 = private unnamed_addr constant [5 x i8] c"call\00"
|
|
@.str.1848 = private unnamed_addr constant [5 x i8] c"addr\00"
|
|
@.str.1849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1851 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1853 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1855 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1856 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1858 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1860 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1861 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1865 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1867 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1868 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1869 = private unnamed_addr constant [13 x i8] c"the struct '\00"
|
|
@.str.1870 = private unnamed_addr constant [19 x i8] c"' is defined twice\00"
|
|
@.str.1871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1872 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.1873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1874 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1876 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1878 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1880 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1881 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1882 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1883 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1884 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1885 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1886 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1887 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1890 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1892 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1894 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1896 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1897 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1898 = private unnamed_addr constant [19 x i8] c"' is defined twice\00"
|
|
@.str.1899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1900 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1901 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1902 = private unnamed_addr constant [10 x i8] c"the enum \00"
|
|
@.str.1903 = private unnamed_addr constant [18 x i8] c" has the variant \00"
|
|
@.str.1904 = private unnamed_addr constant [7 x i8] c" twice\00"
|
|
@.str.1905 = private unnamed_addr constant [17 x i8] c"two variants of \00"
|
|
@.str.1906 = private unnamed_addr constant [18 x i8] c" have the number \00"
|
|
@.str.1907 = private unnamed_addr constant [21 x i8] c" (give each its own)\00"
|
|
@.str.1908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1909 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.1910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1911 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.1912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1913 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1914 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1915 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1916 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.1917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1919 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1921 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1923 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1924 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1926 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1928 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1930 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1931 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.1932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1935 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1936 = private unnamed_addr constant [11 x i8] c"function '\00"
|
|
@.str.1937 = private unnamed_addr constant [19 x i8] c"' is defined twice\00"
|
|
@.str.1938 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1939 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1940 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.1941 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00"
|
|
@.str.1942 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00"
|
|
@.str.1943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1944 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.1945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1946 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1947 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1948 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1950 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1951 = private unnamed_addr constant [12 x i8] c"the method \00"
|
|
@.str.1952 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.1953 = private unnamed_addr constant [18 x i8] c" is defined twice\00"
|
|
@.str.1954 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1955 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1956 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1957 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1958 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.1959 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00"
|
|
@.str.1960 = private unnamed_addr constant [77 x i8] c"' here (a method goes in the same file as its struct, or on a struct from C)\00"
|
|
@.str.1961 = private unnamed_addr constant [12 x i8] c"the method \00"
|
|
@.str.1962 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.1963 = private unnamed_addr constant [18 x i8] c" is defined twice\00"
|
|
@.str.1964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1965 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.1966 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1967 = private unnamed_addr constant [12 x i8] c"the struct \00"
|
|
@.str.1968 = private unnamed_addr constant [29 x i8] c" already has a field named '\00"
|
|
@.str.1969 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1970 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1971 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1972 = private unnamed_addr constant [11 x i8] c"function '\00"
|
|
@.str.1973 = private unnamed_addr constant [19 x i8] c"' is defined twice\00"
|
|
@.str.1974 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.1975 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00"
|
|
@.str.1976 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1977 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1978 = private unnamed_addr constant [8 x i8] c"@finch.\00"
|
|
@.str.1979 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1980 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1981 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.1982 = private unnamed_addr constant [8 x i8] c"@finch.\00"
|
|
@.str.1983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1984 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.1985 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.1986 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.1987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1988 = private unnamed_addr constant [5 x i8] c"self\00"
|
|
@.str.1989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1990 = private unnamed_addr constant [23 x i8] c"'self' is already the \00"
|
|
@.str.1991 = private unnamed_addr constant [25 x i8] c" the method is called on\00"
|
|
@.str.1992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1996 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1997 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.1998 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.1999 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2000 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2003 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2006 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.2007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2008 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2011 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2012 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2015 = private unnamed_addr constant [5 x i8] c"self\00"
|
|
@.str.2016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2017 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2018 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2020 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2021 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00"
|
|
@.str.2022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2023 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2025 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2026 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.2027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2028 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.2029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2030 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2031 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.2032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2034 = private unnamed_addr constant [5 x i8] c"self\00"
|
|
@.str.2035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2037 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.2038 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2040 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00"
|
|
@.str.2041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2042 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2044 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.2045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2046 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2050 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2055 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2058 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2062 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.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 [12 x i8] c"src/gen.fch\00"
|
|
@.str.2068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2069 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.2070 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2071 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.2072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2073 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2074 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2075 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00"
|
|
@.str.2076 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00"
|
|
@.str.2077 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00"
|
|
@.str.2078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2079 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.2080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2081 = private unnamed_addr constant [8 x i8] c" takes \00"
|
|
@.str.2082 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00"
|
|
@.str.2083 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.2084 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2085 = private unnamed_addr constant [12 x i8] c"], but got \00"
|
|
@.str.2086 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.2087 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.2088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2089 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2091 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2092 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.2093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2094 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.2095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2096 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.2097 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.2098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2099 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.2100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2102 = private unnamed_addr constant [8 x i8] c"@finch.\00"
|
|
@.str.2103 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.2104 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.2105 = private unnamed_addr constant [8 x i8] c"@finch.\00"
|
|
@.str.2106 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.2107 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.2108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2109 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.2110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2111 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.2112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2113 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.2114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2115 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.2116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2117 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.2118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2119 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.2120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2121 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.2122 = private unnamed_addr constant [18 x i8] c" (while building \00"
|
|
@.str.2123 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2125 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.2126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2132 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.2133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2134 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.2135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2136 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.2137 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2138 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.2139 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2140 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2142 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2143 = private unnamed_addr constant [6 x i8] c"named\00"
|
|
@.str.2144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2145 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00"
|
|
@.str.2146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2148 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00"
|
|
@.str.2149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2151 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00"
|
|
@.str.2152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2153 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.2154 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.2155 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.2156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2158 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.2159 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.2160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2164 = private unnamed_addr constant [6 x i8] c"named\00"
|
|
@.str.2165 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.2166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2167 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2172 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00"
|
|
@.str.2173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2175 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.2176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2178 = private unnamed_addr constant [8 x i8] c" takes \00"
|
|
@.str.2179 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00"
|
|
@.str.2180 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.2181 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2182 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2183 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.2184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2185 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.2186 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.2187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2188 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00"
|
|
@.str.2189 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2190 = private unnamed_addr constant [6 x i8] c" from\00"
|
|
@.str.2191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2193 = private unnamed_addr constant [17 x i8] c"can't tell what \00"
|
|
@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2195 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00"
|
|
@.str.2196 = private unnamed_addr constant [11 x i8] c"[int](...)\00"
|
|
@.str.2197 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.2198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2199 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2202 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2204 = private unnamed_addr constant [11 x i8] c"argument '\00"
|
|
@.str.2205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2206 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.2207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2208 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.2209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2210 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.2211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2212 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2216 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2218 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.2219 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.2220 = private unnamed_addr constant [7 x i8] c" x i8]\00"
|
|
@.str.2221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2222 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2223 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2225 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2228 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2231 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2233 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.2234 = private unnamed_addr constant [7 x i8] c" x i8]\00"
|
|
@.str.2235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2236 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2238 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00"
|
|
@.str.2239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2240 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2243 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2246 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2248 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2249 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2252 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00"
|
|
@.str.2253 = private unnamed_addr constant [6 x i8] c"%S.C.\00"
|
|
@.str.2254 = private unnamed_addr constant [11 x i8] c" = type { \00"
|
|
@.str.2255 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2256 = private unnamed_addr constant [3 x i8] c" }\00"
|
|
@.str.2257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2258 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2261 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2264 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2265 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2267 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.2268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2269 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.2270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2271 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.2272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2273 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2275 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2276 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.2277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2278 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2281 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.2282 = private unnamed_addr constant [18 x i8] c" (while building \00"
|
|
@.str.2283 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2284 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2286 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2288 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.2289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2290 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.2291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2292 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.2293 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2294 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2296 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.2297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2298 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2302 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2306 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2308 = private unnamed_addr constant [12 x i8] c"the struct \00"
|
|
@.str.2309 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00"
|
|
@.str.2310 = private unnamed_addr constant [8 x i8] c"] or []\00"
|
|
@.str.2311 = private unnamed_addr constant [16 x i8] c" for that field\00"
|
|
@.str.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2313 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2316 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.2317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2318 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2321 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.2322 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.2323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2324 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2327 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2329 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2330 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2333 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2336 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2339 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.2340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2341 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2344 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00"
|
|
@.str.2345 = private unnamed_addr constant [4 x i8] c"%S.\00"
|
|
@.str.2346 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2347 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2348 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2349 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.2350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2351 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2353 = private unnamed_addr constant [11 x i8] c" = type { \00"
|
|
@.str.2354 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2355 = private unnamed_addr constant [3 x i8] c" }\00"
|
|
@.str.2356 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2357 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2359 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2360 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.2361 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.2362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2363 = private unnamed_addr constant [17 x i8] c"division by zero\00"
|
|
@.str.2364 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.2365 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.2366 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.2367 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.2368 = private unnamed_addr constant [4 x i8] c"i16\00"
|
|
@.str.2369 = private unnamed_addr constant [4 x i8] c"u16\00"
|
|
@.str.2370 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.2371 = private unnamed_addr constant [4 x i8] c"u32\00"
|
|
@.str.2372 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.2373 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.2374 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.2375 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.2376 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.2377 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.2378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2379 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.2380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2381 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2383 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00"
|
|
@.str.2384 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00"
|
|
@.str.2385 = private unnamed_addr constant [10 x i8] c", file: !\00"
|
|
@.str.2386 = private unnamed_addr constant [9 x i8] c", line: \00"
|
|
@.str.2387 = private unnamed_addr constant [13 x i8] c", baseType: \00"
|
|
@.str.2388 = private unnamed_addr constant [9 x i8] c", size: \00"
|
|
@.str.2389 = private unnamed_addr constant [11 x i8] c", offset: \00"
|
|
@.str.2390 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2391 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00"
|
|
@.str.2392 = private unnamed_addr constant [10 x i8] c"\22, size: \00"
|
|
@.str.2393 = private unnamed_addr constant [13 x i8] c", encoding: \00"
|
|
@.str.2394 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2395 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.2396 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.2397 = private unnamed_addr constant [3 x i8] c"T:\00"
|
|
@.str.2398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2399 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00"
|
|
@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2401 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00"
|
|
@.str.2402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2404 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00"
|
|
@.str.2405 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2406 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.2407 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.2408 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00"
|
|
@.str.2409 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.2410 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.2411 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00"
|
|
@.str.2412 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.2413 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.2414 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00"
|
|
@.str.2415 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.2416 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.2417 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00"
|
|
@.str.2418 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.2419 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.2420 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00"
|
|
@.str.2421 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00"
|
|
@.str.2422 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00"
|
|
@.str.2423 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.2424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2425 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2427 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00"
|
|
@.str.2428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2429 = private unnamed_addr constant [11 x i8] c"\22, value: \00"
|
|
@.str.2430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2431 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2432 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00"
|
|
@.str.2433 = private unnamed_addr constant [11 x i8] c"\22, file: !\00"
|
|
@.str.2434 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00"
|
|
@.str.2435 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2436 = private unnamed_addr constant [3 x i8] c"})\00"
|
|
@.str.2437 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2439 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00"
|
|
@.str.2440 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.2441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2442 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00"
|
|
@.str.2443 = private unnamed_addr constant [12 x i8] c", size: 64)\00"
|
|
@.str.2444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2445 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2446 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2447 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.2448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2449 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00"
|
|
@.str.2450 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2451 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00"
|
|
@.str.2452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2453 = private unnamed_addr constant [9 x i8] c", size: \00"
|
|
@.str.2454 = private unnamed_addr constant [16 x i8] c", elements: !{!\00"
|
|
@.str.2455 = private unnamed_addr constant [3 x i8] c"})\00"
|
|
@.str.2456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2457 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2459 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.2460 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.2461 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.2462 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.2463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2464 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00"
|
|
@.str.2465 = private unnamed_addr constant [12 x i8] c", size: 64)\00"
|
|
@.str.2466 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.2467 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.2468 = private unnamed_addr constant [4 x i8] c"len\00"
|
|
@.str.2469 = private unnamed_addr constant [4 x i8] c"cap\00"
|
|
@.str.2470 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00"
|
|
@.str.2471 = private unnamed_addr constant [11 x i8] c"\22, file: !\00"
|
|
@.str.2472 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00"
|
|
@.str.2473 = private unnamed_addr constant [4 x i8] c", !\00"
|
|
@.str.2474 = private unnamed_addr constant [4 x i8] c", !\00"
|
|
@.str.2475 = private unnamed_addr constant [3 x i8] c"})\00"
|
|
@.str.2476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2477 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2479 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.2480 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.2481 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00"
|
|
@.str.2482 = private unnamed_addr constant [8 x i8] c"entries\00"
|
|
@.str.2483 = private unnamed_addr constant [4 x i8] c"len\00"
|
|
@.str.2484 = private unnamed_addr constant [5 x i8] c"used\00"
|
|
@.str.2485 = private unnamed_addr constant [4 x i8] c"cap\00"
|
|
@.str.2486 = private unnamed_addr constant [6 x i8] c"index\00"
|
|
@.str.2487 = private unnamed_addr constant [5 x i8] c"icap\00"
|
|
@.str.2488 = private unnamed_addr constant [5 x i8] c"adds\00"
|
|
@.str.2489 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.2490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2491 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00"
|
|
@.str.2492 = private unnamed_addr constant [11 x i8] c"\22, file: !\00"
|
|
@.str.2493 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00"
|
|
@.str.2494 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2495 = private unnamed_addr constant [3 x i8] c"})\00"
|
|
@.str.2496 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2497 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2499 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.2500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2501 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2504 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2508 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00"
|
|
@.str.2509 = private unnamed_addr constant [11 x i8] c"\22, file: !\00"
|
|
@.str.2510 = private unnamed_addr constant [9 x i8] c", size: \00"
|
|
@.str.2511 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00"
|
|
@.str.2512 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2513 = private unnamed_addr constant [3 x i8] c"})\00"
|
|
@.str.2514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2515 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2517 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00"
|
|
@.str.2518 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00"
|
|
@.str.2519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2520 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2521 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2523 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00"
|
|
@.str.2524 = private unnamed_addr constant [3 x i8] c"L:\00"
|
|
@.str.2525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2526 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00"
|
|
@.str.2527 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.2528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2529 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00"
|
|
@.str.2530 = private unnamed_addr constant [2 x i8] c":\00"
|
|
@.str.2531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2532 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2534 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00"
|
|
@.str.2535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2536 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00"
|
|
@.str.2537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2538 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00"
|
|
@.str.2539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2540 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00"
|
|
@.str.2541 = private unnamed_addr constant [11 x i8] c", column: \00"
|
|
@.str.2542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2543 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00"
|
|
@.str.2544 = private unnamed_addr constant [11 x i8] c", scope: !\00"
|
|
@.str.2545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2546 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.2547 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2549 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00"
|
|
@.str.2550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2551 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2552 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.2553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2554 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00"
|
|
@.str.2555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2556 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00"
|
|
@.str.2557 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2558 = private unnamed_addr constant [3 x i8] c"})\00"
|
|
@.str.2559 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00"
|
|
@.str.2560 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00"
|
|
@.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2562 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00"
|
|
@.str.2563 = private unnamed_addr constant [10 x i8] c", file: !\00"
|
|
@.str.2564 = private unnamed_addr constant [9 x i8] c", line: \00"
|
|
@.str.2565 = private unnamed_addr constant [10 x i8] c", type: !\00"
|
|
@.str.2566 = private unnamed_addr constant [14 x i8] c", scopeLine: \00"
|
|
@.str.2567 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00"
|
|
@.str.2568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2569 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00"
|
|
@.str.2570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2571 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.2572 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2574 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00"
|
|
@.str.2575 = private unnamed_addr constant [8 x i8] c", arg: \00"
|
|
@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2577 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00"
|
|
@.str.2578 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00"
|
|
@.str.2579 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00"
|
|
@.str.2580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2581 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.2582 = private unnamed_addr constant [10 x i8] c", file: !\00"
|
|
@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2584 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00"
|
|
@.str.2585 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2586 = private unnamed_addr constant [9 x i8] c", line: \00"
|
|
@.str.2587 = private unnamed_addr constant [10 x i8] c", type: !\00"
|
|
@.str.2588 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2590 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00"
|
|
@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2592 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00"
|
|
@.str.2593 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00"
|
|
@.str.2594 = private unnamed_addr constant [13 x i8] c", metadata !\00"
|
|
@.str.2595 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00"
|
|
@.str.2596 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00"
|
|
@.str.2597 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00"
|
|
@.str.2598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2599 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2600 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.2601 = private unnamed_addr constant [4 x i8] c" = \00"
|
|
@.str.2602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2603 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2605 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.2606 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.2607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2608 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.2609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2611 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2613 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2615 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.2616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2617 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2619 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.2620 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2621 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2623 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.2624 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2625 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2626 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.2627 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2628 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2629 = private unnamed_addr constant [18 x i8] c" (while building \00"
|
|
@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2631 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2632 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2634 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00"
|
|
@.str.2635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2636 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.2637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2638 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2641 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2642 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2644 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.2645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2646 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00"
|
|
@.str.2647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2648 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00"
|
|
@.str.2649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2650 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.2651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2652 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00"
|
|
@.str.2653 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2654 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.2655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2656 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00"
|
|
@.str.2657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2658 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.2659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2660 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00"
|
|
@.str.2661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2662 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00"
|
|
@.str.2663 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2664 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00"
|
|
@.str.2665 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2666 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00"
|
|
@.str.2667 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2668 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2670 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2671 = private unnamed_addr constant [10 x i8] c"ptr %self\00"
|
|
@.str.2672 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.2673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2674 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2675 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.2676 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2677 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2679 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2681 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2683 = private unnamed_addr constant [5 x i8] c"self\00"
|
|
@.str.2684 = private unnamed_addr constant [6 x i8] c"%self\00"
|
|
@.str.2685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2686 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00"
|
|
@.str.2687 = private unnamed_addr constant [5 x i8] c"self\00"
|
|
@.str.2688 = private unnamed_addr constant [6 x i8] c"%self\00"
|
|
@.str.2689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2690 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2691 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2692 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2694 = private unnamed_addr constant [4 x i8] c" %p\00"
|
|
@.str.2695 = private unnamed_addr constant [3 x i8] c"%p\00"
|
|
@.str.2696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2697 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2698 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2699 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2700 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00"
|
|
@.str.2701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2702 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2704 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00"
|
|
@.str.2705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2707 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2710 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00"
|
|
@.str.2711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2712 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2713 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.2714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2715 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2716 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.2717 = private unnamed_addr constant [11 x i8] c"function '\00"
|
|
@.str.2718 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00"
|
|
@.str.2719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2720 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2722 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2723 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.2724 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2725 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2726 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00"
|
|
@.str.2727 = private unnamed_addr constant [9 x i8] c"ret void\00"
|
|
@.str.2728 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2729 = private unnamed_addr constant [8 x i8] c" !dbg !\00"
|
|
@.str.2730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2731 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00"
|
|
@.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2733 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.2734 = private unnamed_addr constant [17 x i8] c"define internal \00"
|
|
@.str.2735 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2736 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2737 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.2738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2739 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.2740 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.2741 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2742 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2743 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00"
|
|
@.str.2744 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2745 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00"
|
|
@.str.2746 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.2747 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.2748 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2749 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00"
|
|
@.str.2750 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.2751 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00"
|
|
@.str.2752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2753 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.2754 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00"
|
|
@.str.2755 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2756 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00"
|
|
@.str.2757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2758 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00"
|
|
@.str.2759 = private unnamed_addr constant [6 x i8] c"block\00"
|
|
@.str.2760 = private unnamed_addr constant [5 x i8] c"decl\00"
|
|
@.str.2761 = private unnamed_addr constant [7 x i8] c"assign\00"
|
|
@.str.2762 = private unnamed_addr constant [5 x i8] c"expr\00"
|
|
@.str.2763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2764 = private unnamed_addr constant [3 x i8] c"or\00"
|
|
@.str.2765 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2766 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2767 = private unnamed_addr constant [6 x i8] c"match\00"
|
|
@.str.2768 = private unnamed_addr constant [3 x i8] c"if\00"
|
|
@.str.2769 = private unnamed_addr constant [6 x i8] c"while\00"
|
|
@.str.2770 = private unnamed_addr constant [4 x i8] c"for\00"
|
|
@.str.2771 = private unnamed_addr constant [5 x i8] c"each\00"
|
|
@.str.2772 = private unnamed_addr constant [7 x i8] c"return\00"
|
|
@.str.2773 = private unnamed_addr constant [6 x i8] c"defer\00"
|
|
@.str.2774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2775 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00"
|
|
@.str.2776 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00"
|
|
@.str.2777 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2778 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2779 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2780 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2783 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2784 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2785 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2786 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2787 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00"
|
|
@.str.2788 = private unnamed_addr constant [6 x i8] c"break\00"
|
|
@.str.2789 = private unnamed_addr constant [9 x i8] c"continue\00"
|
|
@.str.2790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2791 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00"
|
|
@.str.2792 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00"
|
|
@.str.2793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2794 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2795 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00"
|
|
@.str.2796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2797 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2799 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2801 = private unnamed_addr constant [6 x i8] c"break\00"
|
|
@.str.2802 = private unnamed_addr constant [19 x i8] c"unknown statement \00"
|
|
@.str.2803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2804 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.2805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2806 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00"
|
|
@.str.2807 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.2808 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2809 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00"
|
|
@.str.2810 = private unnamed_addr constant [8 x i8] c" = null\00"
|
|
@.str.2811 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.2812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2814 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.2815 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.2816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2817 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.2818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2820 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.2821 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2824 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.2825 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00"
|
|
@.str.2826 = private unnamed_addr constant [19 x i8] c"' (create it with \00"
|
|
@.str.2827 = private unnamed_addr constant [9 x i8] c" := ...)\00"
|
|
@.str.2828 = private unnamed_addr constant [20 x i8] c"the loop variable '\00"
|
|
@.str.2829 = private unnamed_addr constant [19 x i8] c"' can't be changed\00"
|
|
@.str.2830 = private unnamed_addr constant [10 x i8] c"the value\00"
|
|
@.str.2831 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.2832 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.2833 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.2834 = private unnamed_addr constant [2 x i8] c"=\00"
|
|
@.str.2835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2836 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2839 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.2840 = private unnamed_addr constant [12 x i8] c"a condition\00"
|
|
@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2842 = private unnamed_addr constant [5 x i8] c"then\00"
|
|
@.str.2843 = private unnamed_addr constant [5 x i8] c"else\00"
|
|
@.str.2844 = private unnamed_addr constant [6 x i8] c"endif\00"
|
|
@.str.2845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2847 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.2848 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2850 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.2851 = private unnamed_addr constant [11 x i8] c"while.cond\00"
|
|
@.str.2852 = private unnamed_addr constant [11 x i8] c"while.body\00"
|
|
@.str.2853 = private unnamed_addr constant [10 x i8] c"while.end\00"
|
|
@.str.2854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2855 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.2856 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2857 = private unnamed_addr constant [5 x i8] c"true\00"
|
|
@.str.2858 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2860 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2862 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2866 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2868 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00"
|
|
@.str.2869 = private unnamed_addr constant [6 x i8] c"break\00"
|
|
@.str.2870 = private unnamed_addr constant [6 x i8] c"while\00"
|
|
@.str.2871 = private unnamed_addr constant [4 x i8] c"for\00"
|
|
@.str.2872 = private unnamed_addr constant [5 x i8] c"each\00"
|
|
@.str.2873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2874 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.2875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2876 = private unnamed_addr constant [21 x i8] c"the start of a range\00"
|
|
@.str.2877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2878 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.2879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2880 = private unnamed_addr constant [19 x i8] c"the end of a range\00"
|
|
@.str.2881 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.2882 = private unnamed_addr constant [9 x i8] c"for.cond\00"
|
|
@.str.2883 = private unnamed_addr constant [9 x i8] c"for.body\00"
|
|
@.str.2884 = private unnamed_addr constant [9 x i8] c"for.step\00"
|
|
@.str.2885 = private unnamed_addr constant [8 x i8] c"for.end\00"
|
|
@.str.2886 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2887 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00"
|
|
@.str.2888 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2890 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2892 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2895 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2897 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00"
|
|
@.str.2898 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2899 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2900 = private unnamed_addr constant [9 x i8] c"add i64 \00"
|
|
@.str.2901 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.2902 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2904 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2906 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2907 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2908 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.2909 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2910 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2911 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.2912 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.2913 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00"
|
|
@.str.2914 = private unnamed_addr constant [9 x i8] c"map.cond\00"
|
|
@.str.2915 = private unnamed_addr constant [10 x i8] c"map.check\00"
|
|
@.str.2916 = private unnamed_addr constant [9 x i8] c"map.body\00"
|
|
@.str.2917 = private unnamed_addr constant [9 x i8] c"map.step\00"
|
|
@.str.2918 = private unnamed_addr constant [8 x i8] c"map.end\00"
|
|
@.str.2919 = private unnamed_addr constant [12 x i8] c"map.changed\00"
|
|
@.str.2920 = private unnamed_addr constant [9 x i8] c"map.same\00"
|
|
@.str.2921 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2922 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.2923 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.2924 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00"
|
|
@.str.2925 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00"
|
|
@.str.2926 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2927 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00"
|
|
@.str.2928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2929 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.2930 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2931 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.2932 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.2933 = private unnamed_addr constant [12 x i8] c"unreachable\00"
|
|
@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2935 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.2936 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2937 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2938 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.2939 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.2940 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00"
|
|
@.str.2941 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00"
|
|
@.str.2942 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2943 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2944 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00"
|
|
@.str.2945 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.2946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2947 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2949 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2952 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2954 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00"
|
|
@.str.2955 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2956 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2957 = private unnamed_addr constant [9 x i8] c"add i64 \00"
|
|
@.str.2958 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2960 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.2961 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.2962 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.2963 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.2964 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2966 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00"
|
|
@.str.2967 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00"
|
|
@.str.2968 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.2969 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.2970 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2973 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2974 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2975 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.2976 = private unnamed_addr constant [10 x i8] c"each.cond\00"
|
|
@.str.2977 = private unnamed_addr constant [10 x i8] c"each.body\00"
|
|
@.str.2978 = private unnamed_addr constant [10 x i8] c"each.step\00"
|
|
@.str.2979 = private unnamed_addr constant [9 x i8] c"each.end\00"
|
|
@.str.2980 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2981 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00"
|
|
@.str.2982 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00"
|
|
@.str.2983 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.2984 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00"
|
|
@.str.2985 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.2986 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.2987 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.2988 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.2989 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.2990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2991 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2993 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.2994 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.2995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2997 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00"
|
|
@.str.2998 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.2999 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00"
|
|
@.str.3000 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3001 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3002 = private unnamed_addr constant [9 x i8] c"add i64 \00"
|
|
@.str.3003 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.3004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3005 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00"
|
|
@.str.3006 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00"
|
|
@.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3008 = private unnamed_addr constant [5 x i8] c"call\00"
|
|
@.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3010 = private unnamed_addr constant [6 x i8] c"error\00"
|
|
@.str.3011 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3012 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3013 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3014 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.3015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3016 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3017 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3018 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3019 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3020 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.3021 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3023 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3024 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00"
|
|
@.str.3025 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3026 = private unnamed_addr constant [6 x i8] c"error\00"
|
|
@.str.3027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3028 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3030 = private unnamed_addr constant [18 x i8] c"the error message\00"
|
|
@.str.3031 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.3032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3033 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3034 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3035 = private unnamed_addr constant [13 x i8] c"insertvalue \00"
|
|
@.str.3036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3037 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3038 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00"
|
|
@.str.3039 = private unnamed_addr constant [4 x i8] c", 2\00"
|
|
@.str.3040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3041 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3043 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3044 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3046 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3048 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3049 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00"
|
|
@.str.3050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3051 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3052 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.3053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3054 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3055 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00"
|
|
@.str.3056 = private unnamed_addr constant [9 x i8] c"ret void\00"
|
|
@.str.3057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3058 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3059 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3061 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3062 = private unnamed_addr constant [15 x i8] c"' must return \00"
|
|
@.str.3063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3064 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3067 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3069 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3070 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3071 = private unnamed_addr constant [19 x i8] c"the returned value\00"
|
|
@.str.3072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3073 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.3074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3076 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3077 = private unnamed_addr constant [13 x i8] c"insertvalue \00"
|
|
@.str.3078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3079 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3080 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00"
|
|
@.str.3081 = private unnamed_addr constant [13 x i8] c"insertvalue \00"
|
|
@.str.3082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3083 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3084 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3085 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3087 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3088 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3089 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.3090 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.3091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3092 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3093 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3094 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3096 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3097 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3099 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3100 = private unnamed_addr constant [8 x i8] c"{ i64, \00"
|
|
@.str.3101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3102 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3104 = private unnamed_addr constant [3 x i8] c" }\00"
|
|
@.str.3105 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00"
|
|
@.str.3106 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00"
|
|
@.str.3107 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3108 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3109 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3110 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00"
|
|
@.str.3111 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3112 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3113 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3114 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3115 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3116 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00"
|
|
@.str.3117 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.3118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3119 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3120 = private unnamed_addr constant [2 x i8] c"1\00"
|
|
@.str.3121 = private unnamed_addr constant [5 x i8] c"ptr \00"
|
|
@.str.3122 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3123 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3124 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3126 = private unnamed_addr constant [7 x i8] c", i32 \00"
|
|
@.str.3127 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00"
|
|
@.str.3128 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3129 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.3130 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.3131 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.3132 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.3133 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00"
|
|
@.str.3134 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3135 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3136 = private unnamed_addr constant [8 x i8] c"map.new\00"
|
|
@.str.3137 = private unnamed_addr constant [9 x i8] c"map.have\00"
|
|
@.str.3138 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00"
|
|
@.str.3139 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.3140 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3149 = private unnamed_addr constant [8 x i8] c"the key\00"
|
|
@.str.3150 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00"
|
|
@.str.3151 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.3152 = private unnamed_addr constant [12 x i8] c"map.missing\00"
|
|
@.str.3153 = private unnamed_addr constant [10 x i8] c"map.found\00"
|
|
@.str.3154 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00"
|
|
@.str.3155 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3156 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.3157 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.3158 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.3159 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00"
|
|
@.str.3160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3161 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.3162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3163 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3164 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3165 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3166 = private unnamed_addr constant [12 x i8] c"unreachable\00"
|
|
@.str.3167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3168 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3169 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.3170 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00"
|
|
@.str.3171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3172 = private unnamed_addr constant [6 x i8] c"unary\00"
|
|
@.str.3173 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3175 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3176 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.3177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3179 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3180 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3182 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00"
|
|
@.str.3183 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3184 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3186 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00"
|
|
@.str.3187 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3188 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.3189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3195 = private unnamed_addr constant [22 x i8] c"every key of this map\00"
|
|
@.str.3196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3198 = private unnamed_addr constant [24 x i8] c"every value of this map\00"
|
|
@.str.3199 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3202 = private unnamed_addr constant [4 x i8] c"has\00"
|
|
@.str.3203 = private unnamed_addr constant [4 x i8] c"get\00"
|
|
@.str.3204 = private unnamed_addr constant [7 x i8] c"remove\00"
|
|
@.str.3205 = private unnamed_addr constant [4 x i8] c"get\00"
|
|
@.str.3206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3208 = private unnamed_addr constant [8 x i8] c"the key\00"
|
|
@.str.3209 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00"
|
|
@.str.3210 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3211 = private unnamed_addr constant [4 x i8] c"has\00"
|
|
@.str.3212 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3213 = private unnamed_addr constant [7 x i8] c"remove\00"
|
|
@.str.3214 = private unnamed_addr constant [11 x i8] c"remove.hit\00"
|
|
@.str.3215 = private unnamed_addr constant [11 x i8] c"remove.end\00"
|
|
@.str.3216 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00"
|
|
@.str.3217 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3218 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3219 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3220 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3221 = private unnamed_addr constant [10 x i8] c"get.found\00"
|
|
@.str.3222 = private unnamed_addr constant [12 x i8] c"get.missing\00"
|
|
@.str.3223 = private unnamed_addr constant [9 x i8] c"get.fend\00"
|
|
@.str.3224 = private unnamed_addr constant [9 x i8] c"get.mend\00"
|
|
@.str.3225 = private unnamed_addr constant [8 x i8] c"get.end\00"
|
|
@.str.3226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3228 = private unnamed_addr constant [12 x i8] c"the default\00"
|
|
@.str.3229 = private unnamed_addr constant [5 x i8] c"phi \00"
|
|
@.str.3230 = private unnamed_addr constant [4 x i8] c" [ \00"
|
|
@.str.3231 = private unnamed_addr constant [4 x i8] c", %\00"
|
|
@.str.3232 = private unnamed_addr constant [7 x i8] c" ], [ \00"
|
|
@.str.3233 = private unnamed_addr constant [4 x i8] c", %\00"
|
|
@.str.3234 = private unnamed_addr constant [3 x i8] c" ]\00"
|
|
@.str.3235 = private unnamed_addr constant [6 x i8] c"clear\00"
|
|
@.str.3236 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00"
|
|
@.str.3237 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3238 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3239 = private unnamed_addr constant [5 x i8] c"keys\00"
|
|
@.str.3240 = private unnamed_addr constant [7 x i8] c"values\00"
|
|
@.str.3241 = private unnamed_addr constant [7 x i8] c"values\00"
|
|
@.str.3242 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.3243 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.3244 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.3245 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3246 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3247 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3248 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00"
|
|
@.str.3249 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00"
|
|
@.str.3250 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3251 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3252 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3253 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3254 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3255 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3256 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.3257 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3258 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3259 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3260 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00"
|
|
@.str.3261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3262 = private unnamed_addr constant [11 x i8] c"entry.live\00"
|
|
@.str.3263 = private unnamed_addr constant [11 x i8] c"entry.next\00"
|
|
@.str.3264 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00"
|
|
@.str.3265 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3266 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3267 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3268 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3269 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3270 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3271 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3272 = private unnamed_addr constant [9 x i8] c"add i64 \00"
|
|
@.str.3273 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.3274 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.3275 = private unnamed_addr constant [22 x i8] c"a map has no method '\00"
|
|
@.str.3276 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00"
|
|
@.str.3277 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.3278 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.3279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3280 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.3281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3282 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3283 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00"
|
|
@.str.3284 = private unnamed_addr constant [11 x i8] c" (it has: \00"
|
|
@.str.3285 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3286 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3288 = private unnamed_addr constant [13 x i8] c"this pattern\00"
|
|
@.str.3289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3290 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3291 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3293 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00"
|
|
@.str.3294 = private unnamed_addr constant [10 x i8] c"match.end\00"
|
|
@.str.3295 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3297 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00"
|
|
@.str.3298 = private unnamed_addr constant [10 x i8] c"match.arm\00"
|
|
@.str.3299 = private unnamed_addr constant [11 x i8] c"match.next\00"
|
|
@.str.3300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3302 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.3303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3304 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00"
|
|
@.str.3305 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.3306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3307 = private unnamed_addr constant [9 x i8] c"match.or\00"
|
|
@.str.3308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3309 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3310 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3311 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3312 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00"
|
|
@.str.3313 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00"
|
|
@.str.3314 = private unnamed_addr constant [11 x i8] c"match.from\00"
|
|
@.str.3315 = private unnamed_addr constant [6 x i8] c"block\00"
|
|
@.str.3316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3317 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3318 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.3319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3320 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.3321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3324 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00"
|
|
@.str.3325 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3326 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00"
|
|
@.str.3327 = private unnamed_addr constant [12 x i8] c"a match on \00"
|
|
@.str.3328 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00"
|
|
@.str.3329 = private unnamed_addr constant [5 x i8] c"true\00"
|
|
@.str.3330 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00"
|
|
@.str.3331 = private unnamed_addr constant [12 x i8] c"unreachable\00"
|
|
@.str.3332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3333 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3334 = private unnamed_addr constant [12 x i8] c"unreachable\00"
|
|
@.str.3335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3336 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3337 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3338 = private unnamed_addr constant [5 x i8] c"phi \00"
|
|
@.str.3339 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3340 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3341 = private unnamed_addr constant [3 x i8] c"[ \00"
|
|
@.str.3342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3343 = private unnamed_addr constant [4 x i8] c", %\00"
|
|
@.str.3344 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3345 = private unnamed_addr constant [3 x i8] c" ]\00"
|
|
@.str.3346 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3347 = private unnamed_addr constant [5 x i8] c"call\00"
|
|
@.str.3348 = private unnamed_addr constant [7 x i8] c"method\00"
|
|
@.str.3349 = private unnamed_addr constant [81 x i8] c"only a function call can fail; 'or' and 'try' go after one, like int(text) or 0\00"
|
|
@.str.3350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3351 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00"
|
|
@.str.3352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3353 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.3354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3355 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.3356 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3357 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00"
|
|
@.str.3358 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3360 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.3361 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.3362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3363 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.3364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3365 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.3366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3367 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.3368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3369 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00"
|
|
@.str.3370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3371 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.3372 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3373 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.3374 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00"
|
|
@.str.3375 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3376 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00"
|
|
@.str.3377 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00"
|
|
@.str.3378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3379 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3380 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.3381 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3382 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3383 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3385 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3386 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.3387 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00"
|
|
@.str.3388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3389 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3390 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00"
|
|
@.str.3391 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or <value> / ... or { ... }\00"
|
|
@.str.3392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3393 = private unnamed_addr constant [11 x i8] c"try.failed\00"
|
|
@.str.3394 = private unnamed_addr constant [7 x i8] c"try.ok\00"
|
|
@.str.3395 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.3396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3397 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3398 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3399 = private unnamed_addr constant [13 x i8] c"insertvalue \00"
|
|
@.str.3400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3401 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00"
|
|
@.str.3402 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00"
|
|
@.str.3403 = private unnamed_addr constant [4 x i8] c", 2\00"
|
|
@.str.3404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3405 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3407 = private unnamed_addr constant [10 x i8] c"or.failed\00"
|
|
@.str.3408 = private unnamed_addr constant [6 x i8] c"or.ok\00"
|
|
@.str.3409 = private unnamed_addr constant [4 x i8] c"err\00"
|
|
@.str.3410 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3413 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00"
|
|
@.str.3414 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3416 = private unnamed_addr constant [143 x i8] c"this block must leave with return, break, continue or exit(...): after a failure there is no value to go on with (or give one: ... or <value>)\00"
|
|
@.str.3417 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3418 = private unnamed_addr constant [7 x i8] c"or.end\00"
|
|
@.str.3419 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3420 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3422 = private unnamed_addr constant [99 x i8] c"this call gives back no value, so there is nothing to replace; handle the failure with or { ... }\00"
|
|
@.str.3423 = private unnamed_addr constant [4 x i8] c"err\00"
|
|
@.str.3424 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3427 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00"
|
|
@.str.3428 = private unnamed_addr constant [8 x i8] c"or.bend\00"
|
|
@.str.3429 = private unnamed_addr constant [7 x i8] c"or.end\00"
|
|
@.str.3430 = private unnamed_addr constant [5 x i8] c"phi \00"
|
|
@.str.3431 = private unnamed_addr constant [4 x i8] c" [ \00"
|
|
@.str.3432 = private unnamed_addr constant [4 x i8] c", %\00"
|
|
@.str.3433 = private unnamed_addr constant [7 x i8] c" ], [ \00"
|
|
@.str.3434 = private unnamed_addr constant [4 x i8] c", %\00"
|
|
@.str.3435 = private unnamed_addr constant [3 x i8] c" ]\00"
|
|
@.str.3436 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.3437 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.3438 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.3439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3440 = private unnamed_addr constant [3 x i8] c"0x\00"
|
|
@.str.3441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3442 = private unnamed_addr constant [3 x i8] c"0X\00"
|
|
@.str.3443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3444 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.3445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3446 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.3447 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3448 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3449 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3450 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3451 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.3452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3453 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.3454 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3455 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3456 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3457 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3458 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.3459 = private unnamed_addr constant [7 x i8] c"member\00"
|
|
@.str.3460 = private unnamed_addr constant [6 x i8] c"index\00"
|
|
@.str.3461 = private unnamed_addr constant [6 x i8] c"match\00"
|
|
@.str.3462 = private unnamed_addr constant [4 x i8] c"try\00"
|
|
@.str.3463 = private unnamed_addr constant [3 x i8] c"or\00"
|
|
@.str.3464 = private unnamed_addr constant [6 x i8] c"unary\00"
|
|
@.str.3465 = private unnamed_addr constant [7 x i8] c"binary\00"
|
|
@.str.3466 = private unnamed_addr constant [5 x i8] c"call\00"
|
|
@.str.3467 = private unnamed_addr constant [7 x i8] c"method\00"
|
|
@.str.3468 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.3469 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3470 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.3471 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3472 = private unnamed_addr constant [20 x i8] c"unknown expression \00"
|
|
@.str.3473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3474 = private unnamed_addr constant [2 x i8] c"!\00"
|
|
@.str.3475 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3477 = private unnamed_addr constant [20 x i8] c"the value after '!'\00"
|
|
@.str.3478 = private unnamed_addr constant [8 x i8] c"xor i1 \00"
|
|
@.str.3479 = private unnamed_addr constant [7 x i8] c", true\00"
|
|
@.str.3480 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3481 = private unnamed_addr constant [2 x i8] c"~\00"
|
|
@.str.3482 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00"
|
|
@.str.3483 = private unnamed_addr constant [5 x i8] c"xor \00"
|
|
@.str.3484 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3485 = private unnamed_addr constant [5 x i8] c", -1\00"
|
|
@.str.3486 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00"
|
|
@.str.3487 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3488 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.3489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3490 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.3491 = private unnamed_addr constant [5 x i8] c"sub \00"
|
|
@.str.3492 = private unnamed_addr constant [5 x i8] c" 0, \00"
|
|
@.str.3493 = private unnamed_addr constant [6 x i8] c"fneg \00"
|
|
@.str.3494 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3495 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00"
|
|
@.str.3496 = private unnamed_addr constant [12 x i8] c"can't use '\00"
|
|
@.str.3497 = private unnamed_addr constant [6 x i8] c"' on \00"
|
|
@.str.3498 = private unnamed_addr constant [6 x i8] c" and \00"
|
|
@.str.3499 = private unnamed_addr constant [2 x i8] c"+\00"
|
|
@.str.3500 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3501 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3502 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00"
|
|
@.str.3503 = private unnamed_addr constant [2 x i8] c"&\00"
|
|
@.str.3504 = private unnamed_addr constant [2 x i8] c"|\00"
|
|
@.str.3505 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3506 = private unnamed_addr constant [2 x i8] c"&\00"
|
|
@.str.3507 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00"
|
|
@.str.3508 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00"
|
|
@.str.3509 = private unnamed_addr constant [2 x i8] c"&\00"
|
|
@.str.3510 = private unnamed_addr constant [2 x i8] c"|\00"
|
|
@.str.3511 = private unnamed_addr constant [2 x i8] c"^\00"
|
|
@.str.3512 = private unnamed_addr constant [3 x i8] c"<<\00"
|
|
@.str.3513 = private unnamed_addr constant [3 x i8] c">>\00"
|
|
@.str.3514 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00"
|
|
@.str.3515 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.3516 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.3517 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.3518 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.3519 = private unnamed_addr constant [32 x i8] c" (compare the parts one by one)\00"
|
|
@.str.3520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3521 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3523 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3525 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3527 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3529 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00"
|
|
@.str.3530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3531 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00"
|
|
@.str.3532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3533 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00"
|
|
@.str.3534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3535 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3537 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3539 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00"
|
|
@.str.3540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3541 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3543 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3545 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00"
|
|
@.str.3546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3547 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00"
|
|
@.str.3548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3549 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00"
|
|
@.str.3550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3551 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3553 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3554 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3555 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00"
|
|
@.str.3556 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3557 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3559 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3561 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3562 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3563 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3565 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00"
|
|
@.str.3566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3567 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3569 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3571 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3573 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3575 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3577 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3578 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3579 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00"
|
|
@.str.3580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3581 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3583 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3585 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3587 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3589 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3591 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3593 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3595 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3596 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.3597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3598 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3599 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3600 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3601 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3602 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3604 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3606 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3607 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.3608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3609 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3611 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3613 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3615 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3616 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.3617 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3618 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00"
|
|
@.str.3619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3620 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3621 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3622 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3623 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3624 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3625 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3626 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3627 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.3628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3629 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00"
|
|
@.str.3630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3631 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00"
|
|
@.str.3632 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3633 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3635 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00"
|
|
@.str.3636 = private unnamed_addr constant [2 x i8] c"+\00"
|
|
@.str.3637 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3638 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3639 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.3640 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00"
|
|
@.str.3641 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3642 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3643 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3644 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.3645 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3646 = private unnamed_addr constant [2 x i8] c"+\00"
|
|
@.str.3647 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.3648 = private unnamed_addr constant [2 x i8] c"*\00"
|
|
@.str.3649 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.3650 = private unnamed_addr constant [2 x i8] c"%\00"
|
|
@.str.3651 = private unnamed_addr constant [2 x i8] c"&\00"
|
|
@.str.3652 = private unnamed_addr constant [2 x i8] c"|\00"
|
|
@.str.3653 = private unnamed_addr constant [2 x i8] c"^\00"
|
|
@.str.3654 = private unnamed_addr constant [3 x i8] c"<<\00"
|
|
@.str.3655 = private unnamed_addr constant [3 x i8] c">>\00"
|
|
@.str.3656 = private unnamed_addr constant [4 x i8] c"add\00"
|
|
@.str.3657 = private unnamed_addr constant [4 x i8] c"sub\00"
|
|
@.str.3658 = private unnamed_addr constant [4 x i8] c"mul\00"
|
|
@.str.3659 = private unnamed_addr constant [5 x i8] c"sdiv\00"
|
|
@.str.3660 = private unnamed_addr constant [5 x i8] c"srem\00"
|
|
@.str.3661 = private unnamed_addr constant [4 x i8] c"and\00"
|
|
@.str.3662 = private unnamed_addr constant [3 x i8] c"or\00"
|
|
@.str.3663 = private unnamed_addr constant [4 x i8] c"xor\00"
|
|
@.str.3664 = private unnamed_addr constant [4 x i8] c"shl\00"
|
|
@.str.3665 = private unnamed_addr constant [5 x i8] c"ashr\00"
|
|
@.str.3666 = private unnamed_addr constant [4 x i8] c"add\00"
|
|
@.str.3667 = private unnamed_addr constant [4 x i8] c"sub\00"
|
|
@.str.3668 = private unnamed_addr constant [4 x i8] c"mul\00"
|
|
@.str.3669 = private unnamed_addr constant [5 x i8] c"udiv\00"
|
|
@.str.3670 = private unnamed_addr constant [5 x i8] c"urem\00"
|
|
@.str.3671 = private unnamed_addr constant [4 x i8] c"and\00"
|
|
@.str.3672 = private unnamed_addr constant [3 x i8] c"or\00"
|
|
@.str.3673 = private unnamed_addr constant [4 x i8] c"xor\00"
|
|
@.str.3674 = private unnamed_addr constant [4 x i8] c"shl\00"
|
|
@.str.3675 = private unnamed_addr constant [5 x i8] c"lshr\00"
|
|
@.str.3676 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.3677 = private unnamed_addr constant [2 x i8] c"%\00"
|
|
@.str.3678 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.3679 = private unnamed_addr constant [17 x i8] c"division by zero\00"
|
|
@.str.3680 = private unnamed_addr constant [9 x i8] c"icmp eq \00"
|
|
@.str.3681 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3682 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3683 = private unnamed_addr constant [17 x i8] c"division by zero\00"
|
|
@.str.3684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3685 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3686 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3687 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3688 = private unnamed_addr constant [2 x i8] c"+\00"
|
|
@.str.3689 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.3690 = private unnamed_addr constant [2 x i8] c"*\00"
|
|
@.str.3691 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.3692 = private unnamed_addr constant [2 x i8] c"%\00"
|
|
@.str.3693 = private unnamed_addr constant [5 x i8] c"fadd\00"
|
|
@.str.3694 = private unnamed_addr constant [5 x i8] c"fsub\00"
|
|
@.str.3695 = private unnamed_addr constant [5 x i8] c"fmul\00"
|
|
@.str.3696 = private unnamed_addr constant [5 x i8] c"fdiv\00"
|
|
@.str.3697 = private unnamed_addr constant [5 x i8] c"frem\00"
|
|
@.str.3698 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3699 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3700 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3701 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3702 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.3703 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.3704 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3705 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3706 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3707 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3708 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3709 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3710 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00"
|
|
@.str.3711 = private unnamed_addr constant [3 x i8] c"eq\00"
|
|
@.str.3712 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.3713 = private unnamed_addr constant [3 x i8] c"ne\00"
|
|
@.str.3714 = private unnamed_addr constant [6 x i8] c"icmp \00"
|
|
@.str.3715 = private unnamed_addr constant [6 x i8] c" ptr \00"
|
|
@.str.3716 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3717 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3718 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3719 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3720 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00"
|
|
@.str.3721 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3722 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3723 = private unnamed_addr constant [3 x i8] c"ne\00"
|
|
@.str.3724 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.3725 = private unnamed_addr constant [3 x i8] c"eq\00"
|
|
@.str.3726 = private unnamed_addr constant [6 x i8] c"icmp \00"
|
|
@.str.3727 = private unnamed_addr constant [6 x i8] c" i32 \00"
|
|
@.str.3728 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3729 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3730 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00"
|
|
@.str.3731 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3732 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3733 = private unnamed_addr constant [6 x i8] c"icmp \00"
|
|
@.str.3734 = private unnamed_addr constant [6 x i8] c" i64 \00"
|
|
@.str.3735 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3736 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3737 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.3738 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.3739 = private unnamed_addr constant [2 x i8] c"<\00"
|
|
@.str.3740 = private unnamed_addr constant [3 x i8] c"<=\00"
|
|
@.str.3741 = private unnamed_addr constant [2 x i8] c">\00"
|
|
@.str.3742 = private unnamed_addr constant [3 x i8] c">=\00"
|
|
@.str.3743 = private unnamed_addr constant [4 x i8] c"oeq\00"
|
|
@.str.3744 = private unnamed_addr constant [4 x i8] c"une\00"
|
|
@.str.3745 = private unnamed_addr constant [4 x i8] c"olt\00"
|
|
@.str.3746 = private unnamed_addr constant [4 x i8] c"ole\00"
|
|
@.str.3747 = private unnamed_addr constant [4 x i8] c"ogt\00"
|
|
@.str.3748 = private unnamed_addr constant [4 x i8] c"oge\00"
|
|
@.str.3749 = private unnamed_addr constant [6 x i8] c"fcmp \00"
|
|
@.str.3750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3751 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3752 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3753 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3754 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3755 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.3756 = private unnamed_addr constant [116 x i8] c"enums can only be compared with == and != (to go through them in order, give the variants numbers and use int(...))\00"
|
|
@.str.3757 = private unnamed_addr constant [3 x i8] c"eq\00"
|
|
@.str.3758 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.3759 = private unnamed_addr constant [3 x i8] c"ne\00"
|
|
@.str.3760 = private unnamed_addr constant [6 x i8] c"icmp \00"
|
|
@.str.3761 = private unnamed_addr constant [6 x i8] c" i32 \00"
|
|
@.str.3762 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3763 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3764 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3765 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.3766 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3767 = private unnamed_addr constant [6 x i8] c"icmp \00"
|
|
@.str.3768 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3769 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3770 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3771 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3772 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.3773 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.3774 = private unnamed_addr constant [2 x i8] c"<\00"
|
|
@.str.3775 = private unnamed_addr constant [3 x i8] c"<=\00"
|
|
@.str.3776 = private unnamed_addr constant [2 x i8] c">\00"
|
|
@.str.3777 = private unnamed_addr constant [3 x i8] c">=\00"
|
|
@.str.3778 = private unnamed_addr constant [3 x i8] c"eq\00"
|
|
@.str.3779 = private unnamed_addr constant [3 x i8] c"ne\00"
|
|
@.str.3780 = private unnamed_addr constant [4 x i8] c"ult\00"
|
|
@.str.3781 = private unnamed_addr constant [4 x i8] c"ule\00"
|
|
@.str.3782 = private unnamed_addr constant [4 x i8] c"ugt\00"
|
|
@.str.3783 = private unnamed_addr constant [4 x i8] c"uge\00"
|
|
@.str.3784 = private unnamed_addr constant [3 x i8] c"eq\00"
|
|
@.str.3785 = private unnamed_addr constant [3 x i8] c"ne\00"
|
|
@.str.3786 = private unnamed_addr constant [4 x i8] c"slt\00"
|
|
@.str.3787 = private unnamed_addr constant [4 x i8] c"sle\00"
|
|
@.str.3788 = private unnamed_addr constant [4 x i8] c"sgt\00"
|
|
@.str.3789 = private unnamed_addr constant [4 x i8] c"sge\00"
|
|
@.str.3790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3791 = private unnamed_addr constant [3 x i8] c"&&\00"
|
|
@.str.3792 = private unnamed_addr constant [3 x i8] c"||\00"
|
|
@.str.3793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3794 = private unnamed_addr constant [11 x i8] c"logic.from\00"
|
|
@.str.3795 = private unnamed_addr constant [10 x i8] c"logic.rhs\00"
|
|
@.str.3796 = private unnamed_addr constant [10 x i8] c"logic.end\00"
|
|
@.str.3797 = private unnamed_addr constant [3 x i8] c"&&\00"
|
|
@.str.3798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3799 = private unnamed_addr constant [11 x i8] c"logic.rend\00"
|
|
@.str.3800 = private unnamed_addr constant [5 x i8] c"true\00"
|
|
@.str.3801 = private unnamed_addr constant [3 x i8] c"&&\00"
|
|
@.str.3802 = private unnamed_addr constant [6 x i8] c"false\00"
|
|
@.str.3803 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00"
|
|
@.str.3804 = private unnamed_addr constant [4 x i8] c", %\00"
|
|
@.str.3805 = private unnamed_addr constant [7 x i8] c" ], [ \00"
|
|
@.str.3806 = private unnamed_addr constant [4 x i8] c", %\00"
|
|
@.str.3807 = private unnamed_addr constant [3 x i8] c" ]\00"
|
|
@.str.3808 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.3809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3811 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.3812 = private unnamed_addr constant [3 x i8] c"!=\00"
|
|
@.str.3813 = private unnamed_addr constant [2 x i8] c"<\00"
|
|
@.str.3814 = private unnamed_addr constant [3 x i8] c"<=\00"
|
|
@.str.3815 = private unnamed_addr constant [2 x i8] c">\00"
|
|
@.str.3816 = private unnamed_addr constant [3 x i8] c">=\00"
|
|
@.str.3817 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3818 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.3819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3820 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00"
|
|
@.str.3821 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.3822 = private unnamed_addr constant [28 x i8] c"every element of this array\00"
|
|
@.str.3823 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.3824 = private unnamed_addr constant [9 x i8] c"mul i64 \00"
|
|
@.str.3825 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3826 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00"
|
|
@.str.3827 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3828 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3829 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3830 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3832 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00"
|
|
@.str.3833 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3834 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00"
|
|
@.str.3835 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3836 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.3837 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00"
|
|
@.str.3838 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.3839 = private unnamed_addr constant [4 x i8] c", 2\00"
|
|
@.str.3840 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.3841 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00"
|
|
@.str.3842 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3843 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00"
|
|
@.str.3844 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.3845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3846 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.3847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3848 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.3849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3850 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.3851 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.3852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3853 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.3854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3855 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.3856 = private unnamed_addr constant [8 x i8] c"fprintf\00"
|
|
@.str.3857 = private unnamed_addr constant [6 x i8] c"stdin\00"
|
|
@.str.3858 = private unnamed_addr constant [7 x i8] c"stdout\00"
|
|
@.str.3859 = private unnamed_addr constant [7 x i8] c"stderr\00"
|
|
@.str.3860 = private unnamed_addr constant [2 x i8] c"2\00"
|
|
@.str.3861 = private unnamed_addr constant [6 x i8] c"stdin\00"
|
|
@.str.3862 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.3863 = private unnamed_addr constant [7 x i8] c"stdout\00"
|
|
@.str.3864 = private unnamed_addr constant [2 x i8] c"1\00"
|
|
@.str.3865 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00"
|
|
@.str.3866 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3867 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3868 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3869 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.3870 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3871 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.3872 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3874 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00"
|
|
@.str.3875 = private unnamed_addr constant [3 x i8] c"g:\00"
|
|
@.str.3876 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3877 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00"
|
|
@.str.3878 = private unnamed_addr constant [3 x i8] c"g:\00"
|
|
@.str.3879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3880 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00"
|
|
@.str.3881 = private unnamed_addr constant [2 x i8] c"@\00"
|
|
@.str.3882 = private unnamed_addr constant [20 x i8] c" = external global \00"
|
|
@.str.3883 = private unnamed_addr constant [2 x i8] c"@\00"
|
|
@.str.3884 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3885 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00"
|
|
@.str.3886 = private unnamed_addr constant [11 x i8] c".name(...)\00"
|
|
@.str.3887 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00"
|
|
@.str.3888 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3889 = private unnamed_addr constant [7 x i8] c"member\00"
|
|
@.str.3890 = private unnamed_addr constant [6 x i8] c"index\00"
|
|
@.str.3891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3892 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.3893 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.3894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3895 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.3896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3897 = private unnamed_addr constant [2 x i8] c"e\00"
|
|
@.str.3898 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3899 = private unnamed_addr constant [2 x i8] c"E\00"
|
|
@.str.3900 = private unnamed_addr constant [3 x i8] c".0\00"
|
|
@.str.3901 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3902 = private unnamed_addr constant [3 x i8] c".0\00"
|
|
@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3904 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.3905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3906 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.3907 = private unnamed_addr constant [7 x i8] c"member\00"
|
|
@.str.3908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3909 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.3910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3914 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.3915 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3916 = private unnamed_addr constant [10 x i8] c"the enum \00"
|
|
@.str.3917 = private unnamed_addr constant [18 x i8] c" has no variant '\00"
|
|
@.str.3918 = private unnamed_addr constant [12 x i8] c"' (it has: \00"
|
|
@.str.3919 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3920 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3922 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.3923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3924 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00"
|
|
@.str.3925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3926 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3927 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3928 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00"
|
|
@.str.3929 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00"
|
|
@.str.3930 = private unnamed_addr constant [7 x i8] c", null\00"
|
|
@.str.3931 = private unnamed_addr constant [7 x i8] c"used .\00"
|
|
@.str.3932 = private unnamed_addr constant [19 x i8] c" on a null pointer\00"
|
|
@.str.3933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3934 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.3935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3936 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.3937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3938 = private unnamed_addr constant [6 x i8] c"value\00"
|
|
@.str.3939 = private unnamed_addr constant [6 x i8] c"value\00"
|
|
@.str.3940 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.3941 = private unnamed_addr constant [3 x i8] c"a \00"
|
|
@.str.3942 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00"
|
|
@.str.3943 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.3944 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.3945 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00"
|
|
@.str.3946 = private unnamed_addr constant [4 x i8] c"len\00"
|
|
@.str.3947 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.3948 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3949 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00"
|
|
@.str.3950 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3951 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00"
|
|
@.str.3952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3953 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.3954 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3955 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.3956 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00"
|
|
@.str.3957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3958 = private unnamed_addr constant [2 x i8] c"%\00"
|
|
@.str.3959 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00"
|
|
@.str.3960 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3961 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.3962 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00"
|
|
@.str.3963 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.3964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3965 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.3966 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.3967 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.3968 = private unnamed_addr constant [4 x i8] c"len\00"
|
|
@.str.3969 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00"
|
|
@.str.3970 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.3971 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00"
|
|
@.str.3972 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3973 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3974 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00"
|
|
@.str.3975 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.3976 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.3977 = private unnamed_addr constant [14 x i8] c"extractvalue \00"
|
|
@.str.3978 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3979 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.3980 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.3981 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.3982 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00"
|
|
@.str.3983 = private unnamed_addr constant [3 x i8] c"')\00"
|
|
@.str.3984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3985 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.3986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3987 = private unnamed_addr constant [12 x i8] c"the struct \00"
|
|
@.str.3988 = private unnamed_addr constant [16 x i8] c" has no field '\00"
|
|
@.str.3989 = private unnamed_addr constant [12 x i8] c"' (it has: \00"
|
|
@.str.3990 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.3991 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.3992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3993 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.3994 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.3995 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00"
|
|
@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.3997 = private unnamed_addr constant [14 x i8] c"extractvalue \00"
|
|
@.str.3998 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.3999 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4000 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4002 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.4003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4004 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4006 = private unnamed_addr constant [9 x i8] c"an index\00"
|
|
@.str.4007 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.4008 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4009 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.4010 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4011 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00"
|
|
@.str.4012 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4013 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4014 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00"
|
|
@.str.4015 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4017 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.4018 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4019 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4020 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.4021 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4022 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00"
|
|
@.str.4023 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4024 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.4025 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4026 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4027 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00"
|
|
@.str.4028 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00"
|
|
@.str.4029 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4030 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4031 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00"
|
|
@.str.4032 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.4033 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00"
|
|
@.str.4034 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4035 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.4036 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4037 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4038 = private unnamed_addr constant [18 x i8] c"named arguments (\00"
|
|
@.str.4039 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00"
|
|
@.str.4040 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4041 = private unnamed_addr constant [9 x i8] c"' takes \00"
|
|
@.str.4042 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00"
|
|
@.str.4043 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4044 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4045 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.4046 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4047 = private unnamed_addr constant [4 x i8] c"f64\00"
|
|
@.str.4048 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4049 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4050 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4051 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4052 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4053 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.4054 = private unnamed_addr constant [4 x i8] c"i16\00"
|
|
@.str.4055 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.4056 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.4057 = private unnamed_addr constant [4 x i8] c"u16\00"
|
|
@.str.4058 = private unnamed_addr constant [4 x i8] c"u32\00"
|
|
@.str.4059 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.4060 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.4061 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4062 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4064 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4066 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00"
|
|
@.str.4067 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4068 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4069 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4070 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.4071 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.4072 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.4073 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00"
|
|
@.str.4074 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4075 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4076 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4077 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00"
|
|
@.str.4078 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4080 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.4081 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4083 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.4084 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.4085 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4086 = private unnamed_addr constant [7 x i8] c"double\00"
|
|
@.str.4087 = private unnamed_addr constant [7 x i8] c"double\00"
|
|
@.str.4088 = private unnamed_addr constant [4 x i8] c"0.0\00"
|
|
@.str.4089 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00"
|
|
@.str.4090 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4091 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4092 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4093 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00"
|
|
@.str.4094 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4096 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.4097 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4099 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.4100 = private unnamed_addr constant [7 x i8] c"double\00"
|
|
@.str.4101 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4102 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4104 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.4105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4106 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00"
|
|
@.str.4107 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4108 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4109 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4110 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4111 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00"
|
|
@.str.4112 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4113 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4114 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4115 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4116 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.4117 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.4118 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4119 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4120 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4121 = private unnamed_addr constant [9 x i8] c"zext i1 \00"
|
|
@.str.4122 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.4123 = private unnamed_addr constant [7 x i8] c"fptoui\00"
|
|
@.str.4124 = private unnamed_addr constant [7 x i8] c"fptosi\00"
|
|
@.str.4125 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4126 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4127 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.4128 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4129 = private unnamed_addr constant [9 x i8] c"icmp ne \00"
|
|
@.str.4130 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4131 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4132 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4133 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4134 = private unnamed_addr constant [5 x i8] c"null\00"
|
|
@.str.4135 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4136 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00"
|
|
@.str.4137 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.4138 = private unnamed_addr constant [8 x i8] c" to ptr\00"
|
|
@.str.4139 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4140 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00"
|
|
@.str.4141 = private unnamed_addr constant [5 x i8] c" to \00"
|
|
@.str.4142 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4143 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4145 = private unnamed_addr constant [71 x i8] c"use .ptr to get a str's address (it is only valid while the str lives)\00"
|
|
@.str.4146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4147 = private unnamed_addr constant [12 x i8] c"can't turn \00"
|
|
@.str.4148 = private unnamed_addr constant [7 x i8] c" into \00"
|
|
@.str.4149 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4151 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4153 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.4154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4155 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4156 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4157 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4158 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.4159 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4160 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4162 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4166 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.4167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4169 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4171 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4173 = private unnamed_addr constant [7 x i8] c"double\00"
|
|
@.str.4174 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4175 = private unnamed_addr constant [2 x i8] c"[\00"
|
|
@.str.4176 = private unnamed_addr constant [4 x i8] c" x \00"
|
|
@.str.4177 = private unnamed_addr constant [2 x i8] c"]\00"
|
|
@.str.4178 = private unnamed_addr constant [3 x i8] c"{ \00"
|
|
@.str.4179 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4180 = private unnamed_addr constant [3 x i8] c" }\00"
|
|
@.str.4181 = private unnamed_addr constant [9 x i8] c"indirect\00"
|
|
@.str.4182 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4183 = private unnamed_addr constant [5 x i8] c"i128\00"
|
|
@.str.4184 = private unnamed_addr constant [5 x i8] c"i128\00"
|
|
@.str.4185 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.4186 = private unnamed_addr constant [2 x i8] c"i\00"
|
|
@.str.4187 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00"
|
|
@.str.4188 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00"
|
|
@.str.4189 = private unnamed_addr constant [7 x i8] c"direct\00"
|
|
@.str.4190 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4192 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4195 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.4196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4197 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.4198 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4199 = private unnamed_addr constant [2 x i8] c"i\00"
|
|
@.str.4200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4201 = private unnamed_addr constant [9 x i8] c"indirect\00"
|
|
@.str.4202 = private unnamed_addr constant [7 x i8] c"memory\00"
|
|
@.str.4203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4204 = private unnamed_addr constant [17 x i8] c"division by zero\00"
|
|
@.str.4205 = private unnamed_addr constant [7 x i8] c"memory\00"
|
|
@.str.4206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4208 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4210 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4213 = private unnamed_addr constant [7 x i8] c"double\00"
|
|
@.str.4214 = private unnamed_addr constant [12 x i8] c"<2 x float>\00"
|
|
@.str.4215 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4216 = private unnamed_addr constant [2 x i8] c"i\00"
|
|
@.str.4217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4218 = private unnamed_addr constant [3 x i8] c"{ \00"
|
|
@.str.4219 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4220 = private unnamed_addr constant [3 x i8] c" }\00"
|
|
@.str.4221 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4222 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4223 = private unnamed_addr constant [9 x i8] c"indirect\00"
|
|
@.str.4224 = private unnamed_addr constant [7 x i8] c"memory\00"
|
|
@.str.4225 = private unnamed_addr constant [7 x i8] c"memory\00"
|
|
@.str.4226 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4227 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4228 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4230 = private unnamed_addr constant [2 x i8] c"i\00"
|
|
@.str.4231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4232 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.4233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4234 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.4235 = private unnamed_addr constant [7 x i8] c"memory\00"
|
|
@.str.4236 = private unnamed_addr constant [7 x i8] c"direct\00"
|
|
@.str.4237 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4239 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4241 = private unnamed_addr constant [17 x i8] c"the C function '\00"
|
|
@.str.4242 = private unnamed_addr constant [3 x i8] c"' \00"
|
|
@.str.4243 = private unnamed_addr constant [19 x i8] c" the Finch struct \00"
|
|
@.str.4244 = private unnamed_addr constant [21 x i8] c", which C can't take\00"
|
|
@.str.4245 = private unnamed_addr constant [17 x i8] c"the C function '\00"
|
|
@.str.4246 = private unnamed_addr constant [3 x i8] c"' \00"
|
|
@.str.4247 = private unnamed_addr constant [13 x i8] c" the struct \00"
|
|
@.str.4248 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00"
|
|
@.str.4249 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4250 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4251 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4252 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00"
|
|
@.str.4253 = private unnamed_addr constant [75 x i8] c"an export fn can't fail (C has no errors as values): handle them inside it\00"
|
|
@.str.4254 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00"
|
|
@.str.4255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4257 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00"
|
|
@.str.4258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4259 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00"
|
|
@.str.4260 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4261 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00"
|
|
@.str.4262 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4264 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.4265 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4266 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00"
|
|
@.str.4267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4268 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4269 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00"
|
|
@.str.4270 = private unnamed_addr constant [4 x i8] c"i1 \00"
|
|
@.str.4271 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00"
|
|
@.str.4272 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4273 = private unnamed_addr constant [4 x i8] c" %e\00"
|
|
@.str.4274 = private unnamed_addr constant [4 x i8] c" %e\00"
|
|
@.str.4275 = private unnamed_addr constant [6 x i8] c"call \00"
|
|
@.str.4276 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4277 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.4278 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4279 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4280 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4281 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4282 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4283 = private unnamed_addr constant [9 x i8] c"ret void\00"
|
|
@.str.4284 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4285 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.4286 = private unnamed_addr constant [9 x i8] c" zeroext\00"
|
|
@.str.4287 = private unnamed_addr constant [8 x i8] c"ret i8 \00"
|
|
@.str.4288 = private unnamed_addr constant [9 x i8] c"zext i1 \00"
|
|
@.str.4289 = private unnamed_addr constant [7 x i8] c" to i8\00"
|
|
@.str.4290 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.4291 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4292 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4293 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4294 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.4295 = private unnamed_addr constant [11 x i8] c" dllexport\00"
|
|
@.str.4296 = private unnamed_addr constant [7 x i8] c"define\00"
|
|
@.str.4297 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4298 = private unnamed_addr constant [3 x i8] c" @\00"
|
|
@.str.4299 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.4300 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4301 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4303 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.4304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4305 = private unnamed_addr constant [10 x i8] c"@finch.c.\00"
|
|
@.str.4306 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.4307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4308 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00"
|
|
@.str.4309 = private unnamed_addr constant [3 x i8] c"t:\00"
|
|
@.str.4310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4311 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00"
|
|
@.str.4312 = private unnamed_addr constant [3 x i8] c"t:\00"
|
|
@.str.4313 = private unnamed_addr constant [6 x i8] c"addr(\00"
|
|
@.str.4314 = private unnamed_addr constant [82 x i8] c") gives C a function pointer, so it can't be a method or a function that can fail\00"
|
|
@.str.4315 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4316 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4317 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4318 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4320 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4322 = private unnamed_addr constant [6 x i8] c"addr(\00"
|
|
@.str.4323 = private unnamed_addr constant [96 x i8] c") gives C a function pointer, so its parameters must be C types (numbers, ptr, C structs), not \00"
|
|
@.str.4324 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4325 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4326 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4327 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4328 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4329 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4330 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4332 = private unnamed_addr constant [6 x i8] c"addr(\00"
|
|
@.str.4333 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00"
|
|
@.str.4334 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4335 = private unnamed_addr constant [10 x i8] c"ptr sret(\00"
|
|
@.str.4336 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00"
|
|
@.str.4337 = private unnamed_addr constant [4 x i8] c"%c0\00"
|
|
@.str.4338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4340 = private unnamed_addr constant [7 x i8] c"memory\00"
|
|
@.str.4341 = private unnamed_addr constant [11 x i8] c"ptr byval(\00"
|
|
@.str.4342 = private unnamed_addr constant [9 x i8] c") align \00"
|
|
@.str.4343 = private unnamed_addr constant [4 x i8] c" %c\00"
|
|
@.str.4344 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4345 = private unnamed_addr constant [3 x i8] c"%c\00"
|
|
@.str.4346 = private unnamed_addr constant [9 x i8] c"indirect\00"
|
|
@.str.4347 = private unnamed_addr constant [7 x i8] c"ptr %c\00"
|
|
@.str.4348 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4349 = private unnamed_addr constant [3 x i8] c"%c\00"
|
|
@.str.4350 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4351 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00"
|
|
@.str.4352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4353 = private unnamed_addr constant [4 x i8] c" %c\00"
|
|
@.str.4354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4355 = private unnamed_addr constant [3 x i8] c"%c\00"
|
|
@.str.4356 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00"
|
|
@.str.4357 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4358 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4359 = private unnamed_addr constant [4 x i8] c" %c\00"
|
|
@.str.4360 = private unnamed_addr constant [4 x i8] c" %c\00"
|
|
@.str.4361 = private unnamed_addr constant [6 x i8] c"call \00"
|
|
@.str.4362 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4363 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.4364 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4365 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4366 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4367 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4368 = private unnamed_addr constant [9 x i8] c"ret void\00"
|
|
@.str.4369 = private unnamed_addr constant [9 x i8] c"ret void\00"
|
|
@.str.4370 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4371 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00"
|
|
@.str.4372 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.4373 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4374 = private unnamed_addr constant [5 x i8] c"ret \00"
|
|
@.str.4375 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4376 = private unnamed_addr constant [16 x i8] c"define internal\00"
|
|
@.str.4377 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4378 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4379 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.4380 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4381 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4383 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00"
|
|
@.str.4384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4387 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00"
|
|
@.str.4388 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.4389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4391 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00"
|
|
@.str.4392 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4393 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4394 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00"
|
|
@.str.4395 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4397 = private unnamed_addr constant [7 x i8] c"or i1 \00"
|
|
@.str.4398 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4399 = private unnamed_addr constant [8 x i8] c"xor i1 \00"
|
|
@.str.4400 = private unnamed_addr constant [7 x i8] c", true\00"
|
|
@.str.4401 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00"
|
|
@.str.4402 = private unnamed_addr constant [11 x i8] c"trunc i64 \00"
|
|
@.str.4403 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.4404 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4405 = private unnamed_addr constant [9 x i8] c" zeroext\00"
|
|
@.str.4406 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4408 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.4409 = private unnamed_addr constant [9 x i8] c" signext\00"
|
|
@.str.4410 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4411 = private unnamed_addr constant [9 x i8] c" zeroext\00"
|
|
@.str.4412 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4413 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4414 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4415 = private unnamed_addr constant [17 x i8] c"the C function '\00"
|
|
@.str.4416 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00"
|
|
@.str.4417 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4418 = private unnamed_addr constant [18 x i8] c"' takes at least \00"
|
|
@.str.4419 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00"
|
|
@.str.4420 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4421 = private unnamed_addr constant [9 x i8] c"' takes \00"
|
|
@.str.4422 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00"
|
|
@.str.4423 = private unnamed_addr constant [8 x i8] c"returns\00"
|
|
@.str.4424 = private unnamed_addr constant [6 x i8] c"takes\00"
|
|
@.str.4425 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4426 = private unnamed_addr constant [10 x i8] c"ptr sret(\00"
|
|
@.str.4427 = private unnamed_addr constant [11 x i8] c") align 16\00"
|
|
@.str.4428 = private unnamed_addr constant [10 x i8] c"ptr sret(\00"
|
|
@.str.4429 = private unnamed_addr constant [12 x i8] c") align 16 \00"
|
|
@.str.4430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4434 = private unnamed_addr constant [10 x i8] c"argument \00"
|
|
@.str.4435 = private unnamed_addr constant [5 x i8] c" of \00"
|
|
@.str.4436 = private unnamed_addr constant [7 x i8] c"memory\00"
|
|
@.str.4437 = private unnamed_addr constant [11 x i8] c"ptr byval(\00"
|
|
@.str.4438 = private unnamed_addr constant [9 x i8] c") align \00"
|
|
@.str.4439 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4440 = private unnamed_addr constant [9 x i8] c"indirect\00"
|
|
@.str.4441 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4442 = private unnamed_addr constant [5 x i8] c"ptr \00"
|
|
@.str.4443 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4444 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00"
|
|
@.str.4445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4446 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00"
|
|
@.str.4447 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4450 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4451 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4452 = private unnamed_addr constant [5 x i8] c"ptr \00"
|
|
@.str.4453 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4455 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4457 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00"
|
|
@.str.4458 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4459 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.4460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4461 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00"
|
|
@.str.4462 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.4463 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4464 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4465 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4466 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4467 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4468 = private unnamed_addr constant [9 x i8] c"zext i1 \00"
|
|
@.str.4469 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.4470 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.4471 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4472 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.4473 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.4474 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4475 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4476 = private unnamed_addr constant [7 x i8] c"direct\00"
|
|
@.str.4477 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4478 = private unnamed_addr constant [6 x i8] c", ...\00"
|
|
@.str.4479 = private unnamed_addr constant [4 x i8] c"...\00"
|
|
@.str.4480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4481 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00"
|
|
@.str.4482 = private unnamed_addr constant [3 x i8] c"f:\00"
|
|
@.str.4483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4484 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00"
|
|
@.str.4485 = private unnamed_addr constant [3 x i8] c"f:\00"
|
|
@.str.4486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4487 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00"
|
|
@.str.4488 = private unnamed_addr constant [8 x i8] c"declare\00"
|
|
@.str.4489 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4490 = private unnamed_addr constant [3 x i8] c" @\00"
|
|
@.str.4491 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.4492 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4493 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4494 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4495 = private unnamed_addr constant [3 x i8] c" (\00"
|
|
@.str.4496 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4497 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4498 = private unnamed_addr constant [5 x i8] c"call\00"
|
|
@.str.4499 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4500 = private unnamed_addr constant [3 x i8] c" @\00"
|
|
@.str.4501 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.4502 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4503 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4504 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4505 = private unnamed_addr constant [7 x i8] c"expand\00"
|
|
@.str.4506 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00"
|
|
@.str.4507 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4508 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4509 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4510 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00"
|
|
@.str.4511 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4512 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4513 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4514 = private unnamed_addr constant [7 x i8] c"printf\00"
|
|
@.str.4515 = private unnamed_addr constant [7 x i8] c"fflush\00"
|
|
@.str.4516 = private unnamed_addr constant [5 x i8] c"exit\00"
|
|
@.str.4517 = private unnamed_addr constant [5 x i8] c"free\00"
|
|
@.str.4518 = private unnamed_addr constant [6 x i8] c"qsort\00"
|
|
@.str.4519 = private unnamed_addr constant [7 x i8] c"printf\00"
|
|
@.str.4520 = private unnamed_addr constant [5 x i8] c"puts\00"
|
|
@.str.4521 = private unnamed_addr constant [8 x i8] c"putchar\00"
|
|
@.str.4522 = private unnamed_addr constant [6 x i8] c"scanf\00"
|
|
@.str.4523 = private unnamed_addr constant [6 x i8] c"fopen\00"
|
|
@.str.4524 = private unnamed_addr constant [8 x i8] c"getchar\00"
|
|
@.str.4525 = private unnamed_addr constant [5 x i8] c"sqrt\00"
|
|
@.str.4526 = private unnamed_addr constant [4 x i8] c"pow\00"
|
|
@.str.4527 = private unnamed_addr constant [4 x i8] c"sin\00"
|
|
@.str.4528 = private unnamed_addr constant [4 x i8] c"cos\00"
|
|
@.str.4529 = private unnamed_addr constant [6 x i8] c"floor\00"
|
|
@.str.4530 = private unnamed_addr constant [5 x i8] c"fabs\00"
|
|
@.str.4531 = private unnamed_addr constant [7 x i8] c"malloc\00"
|
|
@.str.4532 = private unnamed_addr constant [5 x i8] c"rand\00"
|
|
@.str.4533 = private unnamed_addr constant [6 x i8] c"srand\00"
|
|
@.str.4534 = private unnamed_addr constant [4 x i8] c"abs\00"
|
|
@.str.4535 = private unnamed_addr constant [5 x i8] c"atoi\00"
|
|
@.str.4536 = private unnamed_addr constant [7 x i8] c"strlen\00"
|
|
@.str.4537 = private unnamed_addr constant [7 x i8] c"strcpy\00"
|
|
@.str.4538 = private unnamed_addr constant [7 x i8] c"memcpy\00"
|
|
@.str.4539 = private unnamed_addr constant [5 x i8] c"time\00"
|
|
@.str.4540 = private unnamed_addr constant [6 x i8] c"sleep\00"
|
|
@.str.4541 = private unnamed_addr constant [7 x i8] c"usleep\00"
|
|
@.str.4542 = private unnamed_addr constant [8 x i8] c"stdio.h\00"
|
|
@.str.4543 = private unnamed_addr constant [8 x i8] c"stdio.h\00"
|
|
@.str.4544 = private unnamed_addr constant [8 x i8] c"stdio.h\00"
|
|
@.str.4545 = private unnamed_addr constant [8 x i8] c"stdio.h\00"
|
|
@.str.4546 = private unnamed_addr constant [8 x i8] c"stdio.h\00"
|
|
@.str.4547 = private unnamed_addr constant [8 x i8] c"stdio.h\00"
|
|
@.str.4548 = private unnamed_addr constant [7 x i8] c"math.h\00"
|
|
@.str.4549 = private unnamed_addr constant [7 x i8] c"math.h\00"
|
|
@.str.4550 = private unnamed_addr constant [7 x i8] c"math.h\00"
|
|
@.str.4551 = private unnamed_addr constant [7 x i8] c"math.h\00"
|
|
@.str.4552 = private unnamed_addr constant [7 x i8] c"math.h\00"
|
|
@.str.4553 = private unnamed_addr constant [7 x i8] c"math.h\00"
|
|
@.str.4554 = private unnamed_addr constant [9 x i8] c"stdlib.h\00"
|
|
@.str.4555 = private unnamed_addr constant [9 x i8] c"stdlib.h\00"
|
|
@.str.4556 = private unnamed_addr constant [9 x i8] c"stdlib.h\00"
|
|
@.str.4557 = private unnamed_addr constant [9 x i8] c"stdlib.h\00"
|
|
@.str.4558 = private unnamed_addr constant [9 x i8] c"stdlib.h\00"
|
|
@.str.4559 = private unnamed_addr constant [9 x i8] c"string.h\00"
|
|
@.str.4560 = private unnamed_addr constant [9 x i8] c"string.h\00"
|
|
@.str.4561 = private unnamed_addr constant [9 x i8] c"string.h\00"
|
|
@.str.4562 = private unnamed_addr constant [7 x i8] c"time.h\00"
|
|
@.str.4563 = private unnamed_addr constant [9 x i8] c"unistd.h\00"
|
|
@.str.4564 = private unnamed_addr constant [9 x i8] c"unistd.h\00"
|
|
@.str.4565 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4566 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00"
|
|
@.str.4567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4568 = private unnamed_addr constant [15 x i8] c"\22 at the top)\00"
|
|
@.str.4569 = private unnamed_addr constant [6 x i8] c"error\00"
|
|
@.str.4570 = private unnamed_addr constant [87 x i8] c"error(...) makes an error to return from a function that can fail: return error(\22...\22)\00"
|
|
@.str.4571 = private unnamed_addr constant [6 x i8] c"print\00"
|
|
@.str.4572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4573 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4575 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00"
|
|
@.str.4576 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4577 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4578 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.4579 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4580 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4581 = private unnamed_addr constant [5 x i8] c"addr\00"
|
|
@.str.4582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4583 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.4584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4585 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4586 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4587 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.4588 = private unnamed_addr constant [7 x i8] c"member\00"
|
|
@.str.4589 = private unnamed_addr constant [6 x i8] c"index\00"
|
|
@.str.4590 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00"
|
|
@.str.4591 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4593 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4594 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00"
|
|
@.str.4595 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4596 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4597 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4598 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00"
|
|
@.str.4599 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4600 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.4601 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4602 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00"
|
|
@.str.4603 = private unnamed_addr constant [10 x i8] c", double \00"
|
|
@.str.4604 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
@.str.4605 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4606 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4607 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00"
|
|
@.str.4608 = private unnamed_addr constant [14 x i8] c", i8 signext \00"
|
|
@.str.4609 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4610 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4611 = private unnamed_addr constant [9 x i8] c"zext i1 \00"
|
|
@.str.4612 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.4613 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00"
|
|
@.str.4614 = private unnamed_addr constant [7 x i8] c", i32 \00"
|
|
@.str.4615 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4616 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4617 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4618 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4619 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00"
|
|
@.str.4620 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4621 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4622 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.4623 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4624 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.4625 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4626 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4627 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4628 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4629 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00"
|
|
@.str.4630 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4631 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4632 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4633 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.4634 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.4635 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.4636 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4637 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.4638 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4639 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4641 = private unnamed_addr constant [12 x i8] c"can't turn \00"
|
|
@.str.4642 = private unnamed_addr constant [10 x i8] c" into str\00"
|
|
@.str.4643 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4644 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4645 = private unnamed_addr constant [10 x i8] c"read_file\00"
|
|
@.str.4646 = private unnamed_addr constant [12 x i8] c"file_exists\00"
|
|
@.str.4647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4648 = private unnamed_addr constant [14 x i8] c"the file name\00"
|
|
@.str.4649 = private unnamed_addr constant [12 x i8] c"file_exists\00"
|
|
@.str.4650 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00"
|
|
@.str.4651 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4652 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00"
|
|
@.str.4653 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4654 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4656 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00"
|
|
@.str.4657 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4658 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4659 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4660 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4661 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4662 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00"
|
|
@.str.4663 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4664 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4665 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4666 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00"
|
|
@.str.4667 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4669 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.4670 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4672 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.4673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4674 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4675 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4676 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.4677 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4678 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00"
|
|
@.str.4679 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4680 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4681 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.4682 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4683 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4684 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4685 = private unnamed_addr constant [11 x i8] c"write_file\00"
|
|
@.str.4686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4687 = private unnamed_addr constant [14 x i8] c"the file name\00"
|
|
@.str.4688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4689 = private unnamed_addr constant [9 x i8] c"the text\00"
|
|
@.str.4690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4691 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00"
|
|
@.str.4692 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4693 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4694 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4695 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00"
|
|
@.str.4696 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4697 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4698 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4699 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00"
|
|
@.str.4700 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4702 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.4703 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4705 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.4706 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4707 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00"
|
|
@.str.4708 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4709 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4710 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00"
|
|
@.str.4711 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4712 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4713 = private unnamed_addr constant [12 x i8] c"delete_file\00"
|
|
@.str.4714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4715 = private unnamed_addr constant [14 x i8] c"the file name\00"
|
|
@.str.4716 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00"
|
|
@.str.4717 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4718 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4720 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00"
|
|
@.str.4721 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4722 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4723 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4724 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00"
|
|
@.str.4725 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4726 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4727 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00"
|
|
@.str.4728 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4729 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4730 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.4731 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4733 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.4734 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4735 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00"
|
|
@.str.4736 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4737 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00"
|
|
@.str.4738 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4739 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.4740 = private unnamed_addr constant [6 x i8] c"shell\00"
|
|
@.str.4741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4742 = private unnamed_addr constant [12 x i8] c"the command\00"
|
|
@.str.4743 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00"
|
|
@.str.4744 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4745 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4746 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00"
|
|
@.str.4747 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4748 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4749 = private unnamed_addr constant [5 x i8] c"exit\00"
|
|
@.str.4750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4751 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.4752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4753 = private unnamed_addr constant [14 x i8] c"the exit code\00"
|
|
@.str.4754 = private unnamed_addr constant [11 x i8] c"trunc i64 \00"
|
|
@.str.4755 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.4756 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00"
|
|
@.str.4757 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00"
|
|
@.str.4758 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4759 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4760 = private unnamed_addr constant [6 x i8] c"input\00"
|
|
@.str.4761 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4762 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4763 = private unnamed_addr constant [13 x i8] c"the question\00"
|
|
@.str.4764 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00"
|
|
@.str.4765 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.4766 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4767 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4768 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4769 = private unnamed_addr constant [4 x i8] c"new\00"
|
|
@.str.4770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4771 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00"
|
|
@.str.4772 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4773 = private unnamed_addr constant [5 x i8] c"free\00"
|
|
@.str.4774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4775 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4777 = private unnamed_addr constant [120 x i8] c"free(...) is only for pointers from new(...) or C; arrays, str and structs are freed by Finch at the end of their block\00"
|
|
@.str.4778 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00"
|
|
@.str.4779 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4780 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4782 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4783 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4784 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00"
|
|
@.str.4785 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4786 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4788 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4789 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4791 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4792 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4793 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4794 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00"
|
|
@.str.4795 = private unnamed_addr constant [11 x i8] c"[int](...)\00"
|
|
@.str.4796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4797 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4799 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4801 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4803 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.4804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4805 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00"
|
|
@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4807 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
@.str.4808 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4809 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00"
|
|
@.str.4810 = private unnamed_addr constant [29 x i8] c"there is no function named '\00"
|
|
@.str.4811 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4813 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4815 = private unnamed_addr constant [5 x i8] c"main\00"
|
|
@.str.4816 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00"
|
|
@.str.4817 = private unnamed_addr constant [5 x i8] c"ptr \00"
|
|
@.str.4818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4821 = private unnamed_addr constant [11 x i8] c"argument '\00"
|
|
@.str.4822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4823 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4826 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4828 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00"
|
|
@.str.4829 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4830 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00"
|
|
@.str.4831 = private unnamed_addr constant [20 x i8] c"(...) or <value>, \00"
|
|
@.str.4832 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00"
|
|
@.str.4833 = private unnamed_addr constant [6 x i8] c"(...)\00"
|
|
@.str.4834 = private unnamed_addr constant [6 x i8] c"call \00"
|
|
@.str.4835 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4836 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.4837 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4838 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4839 = private unnamed_addr constant [14 x i8] c"extractvalue \00"
|
|
@.str.4840 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4841 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.4842 = private unnamed_addr constant [8 x i8] c"xor i1 \00"
|
|
@.str.4843 = private unnamed_addr constant [7 x i8] c", true\00"
|
|
@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4845 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00"
|
|
@.str.4846 = private unnamed_addr constant [14 x i8] c"extractvalue \00"
|
|
@.str.4847 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4848 = private unnamed_addr constant [4 x i8] c", 2\00"
|
|
@.str.4849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4850 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00"
|
|
@.str.4851 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4852 = private unnamed_addr constant [14 x i8] c"extractvalue \00"
|
|
@.str.4853 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4854 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.4855 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.4856 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4857 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4858 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4860 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.4861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4863 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4867 = private unnamed_addr constant [70 x i8] c"give either all fields by name (x: 1, y: 2) or none (1, 2), not a mix\00"
|
|
@.str.4868 = private unnamed_addr constant [6 x i8] c" has \00"
|
|
@.str.4869 = private unnamed_addr constant [18 x i8] c" fields, but got \00"
|
|
@.str.4870 = private unnamed_addr constant [24 x i8] c" values (or name them: \00"
|
|
@.str.4871 = private unnamed_addr constant [16 x i8] c"(field: value))\00"
|
|
@.str.4872 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4874 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4875 = private unnamed_addr constant [16 x i8] c" has no field '\00"
|
|
@.str.4876 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4877 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4878 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4880 = private unnamed_addr constant [12 x i8] c"the field '\00"
|
|
@.str.4881 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4882 = private unnamed_addr constant [17 x i8] c"' is given twice\00"
|
|
@.str.4883 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4884 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00"
|
|
@.str.4885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4886 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4891 = private unnamed_addr constant [12 x i8] c"the field '\00"
|
|
@.str.4892 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4893 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4896 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.4897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4898 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4900 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.4901 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4902 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.4903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4904 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.4905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4906 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.4907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4908 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.4909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4910 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4915 = private unnamed_addr constant [17 x i8] c"the default of '\00"
|
|
@.str.4916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4917 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4919 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00"
|
|
@.str.4920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4921 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00"
|
|
@.str.4922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4923 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00"
|
|
@.str.4924 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4925 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00"
|
|
@.str.4926 = private unnamed_addr constant [13 x i8] c"insertvalue \00"
|
|
@.str.4927 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4928 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4929 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4930 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4933 = private unnamed_addr constant [4 x i8] c"var\00"
|
|
@.str.4934 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00"
|
|
@.str.4935 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00"
|
|
@.str.4936 = private unnamed_addr constant [14 x i8] c" at the top)\00"
|
|
@.str.4937 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.4938 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4939 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4940 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4941 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.4942 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4943 = private unnamed_addr constant [13 x i8] c"the module '\00"
|
|
@.str.4944 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00"
|
|
@.str.4945 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.4946 = private unnamed_addr constant [5 x i8] c"push\00"
|
|
@.str.4947 = private unnamed_addr constant [4 x i8] c"pop\00"
|
|
@.str.4948 = private unnamed_addr constant [7 x i8] c"insert\00"
|
|
@.str.4949 = private unnamed_addr constant [7 x i8] c"remove\00"
|
|
@.str.4950 = private unnamed_addr constant [6 x i8] c"clear\00"
|
|
@.str.4951 = private unnamed_addr constant [7 x i8] c"resize\00"
|
|
@.str.4952 = private unnamed_addr constant [5 x i8] c"sort\00"
|
|
@.str.4953 = private unnamed_addr constant [8 x i8] c"reverse\00"
|
|
@.str.4954 = private unnamed_addr constant [6 x i8] c"array\00"
|
|
@.str.4955 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4956 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00"
|
|
@.str.4957 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.4958 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.4959 = private unnamed_addr constant [4 x i8] c"map\00"
|
|
@.str.4960 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4961 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00"
|
|
@.str.4962 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.4963 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4965 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4966 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.4967 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00"
|
|
@.str.4968 = private unnamed_addr constant [7 x i8] c", null\00"
|
|
@.str.4969 = private unnamed_addr constant [9 x i8] c"called .\00"
|
|
@.str.4970 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00"
|
|
@.str.4971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4972 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4973 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.4974 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4975 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.4976 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.4977 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4978 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4979 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4981 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4982 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4984 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00"
|
|
@.str.4985 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.4987 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.4988 = private unnamed_addr constant [5 x i8] c"the \00"
|
|
@.str.4989 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4990 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00"
|
|
@.str.4991 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.4992 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00"
|
|
@.str.4993 = private unnamed_addr constant [5 x i8] c"the \00"
|
|
@.str.4994 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.4995 = private unnamed_addr constant [17 x i8] c" has no method '\00"
|
|
@.str.4996 = private unnamed_addr constant [12 x i8] c"' (it has: \00"
|
|
@.str.4997 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.4998 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.4999 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5000 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.5001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5002 = private unnamed_addr constant [7 x i8] c"struct\00"
|
|
@.str.5003 = private unnamed_addr constant [5 x i8] c"enum\00"
|
|
@.str.5004 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00"
|
|
@.str.5005 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00"
|
|
@.str.5006 = private unnamed_addr constant [20 x i8] c"the loop variable '\00"
|
|
@.str.5007 = private unnamed_addr constant [19 x i8] c"' can't be changed\00"
|
|
@.str.5008 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.5009 = private unnamed_addr constant [16 x i8] c" has no methods\00"
|
|
@.str.5010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5011 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00"
|
|
@.str.5012 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00"
|
|
@.str.5013 = private unnamed_addr constant [5 x i8] c"push\00"
|
|
@.str.5014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5016 = private unnamed_addr constant [12 x i8] c"the element\00"
|
|
@.str.5017 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5018 = private unnamed_addr constant [9 x i8] c"add i64 \00"
|
|
@.str.5019 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.5020 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00"
|
|
@.str.5021 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5022 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5023 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5024 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5025 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5026 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5027 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5028 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5029 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.5030 = private unnamed_addr constant [4 x i8] c"pop\00"
|
|
@.str.5031 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5032 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00"
|
|
@.str.5033 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.5034 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00"
|
|
@.str.5035 = private unnamed_addr constant [9 x i8] c"sub i64 \00"
|
|
@.str.5036 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.5037 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5038 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5039 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5040 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5041 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5042 = private unnamed_addr constant [6 x i8] c"clear\00"
|
|
@.str.5043 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5044 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.5045 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.5046 = private unnamed_addr constant [5 x i8] c"find\00"
|
|
@.str.5047 = private unnamed_addr constant [9 x i8] c"contains\00"
|
|
@.str.5048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5050 = private unnamed_addr constant [22 x i8] c"the value to look for\00"
|
|
@.str.5051 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5052 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5053 = private unnamed_addr constant [3 x i8] c"-1\00"
|
|
@.str.5054 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5055 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5056 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5057 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5058 = private unnamed_addr constant [2 x i8] c"0\00"
|
|
@.str.5059 = private unnamed_addr constant [10 x i8] c"find.cond\00"
|
|
@.str.5060 = private unnamed_addr constant [10 x i8] c"find.body\00"
|
|
@.str.5061 = private unnamed_addr constant [9 x i8] c"find.hit\00"
|
|
@.str.5062 = private unnamed_addr constant [10 x i8] c"find.next\00"
|
|
@.str.5063 = private unnamed_addr constant [9 x i8] c"find.end\00"
|
|
@.str.5064 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5065 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00"
|
|
@.str.5066 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5067 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5068 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5069 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5070 = private unnamed_addr constant [3 x i8] c"==\00"
|
|
@.str.5071 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5072 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5073 = private unnamed_addr constant [9 x i8] c"add i64 \00"
|
|
@.str.5074 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.5075 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5076 = private unnamed_addr constant [5 x i8] c"find\00"
|
|
@.str.5077 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5078 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00"
|
|
@.str.5079 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.5080 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.5081 = private unnamed_addr constant [5 x i8] c"join\00"
|
|
@.str.5082 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5083 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00"
|
|
@.str.5084 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5085 = private unnamed_addr constant [14 x i8] c"the separator\00"
|
|
@.str.5086 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00"
|
|
@.str.5087 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5088 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5089 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5090 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5091 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5092 = private unnamed_addr constant [7 x i8] c"insert\00"
|
|
@.str.5093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5094 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5096 = private unnamed_addr constant [13 x i8] c"the position\00"
|
|
@.str.5097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5099 = private unnamed_addr constant [12 x i8] c"the element\00"
|
|
@.str.5100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5101 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.5102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5103 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00"
|
|
@.str.5104 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5105 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5106 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5107 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5108 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5109 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5110 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5111 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5112 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5113 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.5114 = private unnamed_addr constant [7 x i8] c"remove\00"
|
|
@.str.5115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5116 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5118 = private unnamed_addr constant [13 x i8] c"the position\00"
|
|
@.str.5119 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5120 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5121 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5122 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5123 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5124 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00"
|
|
@.str.5125 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5126 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5127 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5128 = private unnamed_addr constant [7 x i8] c"resize\00"
|
|
@.str.5129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5130 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5132 = private unnamed_addr constant [15 x i8] c"the new length\00"
|
|
@.str.5133 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00"
|
|
@.str.5134 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5135 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5136 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5137 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.5138 = private unnamed_addr constant [8 x i8] c"reverse\00"
|
|
@.str.5139 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5140 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5141 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00"
|
|
@.str.5142 = private unnamed_addr constant [4 x i8] c", 2\00"
|
|
@.str.5143 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5144 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5145 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5147 = private unnamed_addr constant [9 x i8] c"sub i64 \00"
|
|
@.str.5148 = private unnamed_addr constant [9 x i8] c"sub i64 \00"
|
|
@.str.5149 = private unnamed_addr constant [4 x i8] c", 1\00"
|
|
@.str.5150 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5152 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5153 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5154 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5155 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.5156 = private unnamed_addr constant [6 x i8] c"slice\00"
|
|
@.str.5157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5158 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5160 = private unnamed_addr constant [10 x i8] c"the start\00"
|
|
@.str.5161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5162 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5164 = private unnamed_addr constant [8 x i8] c"the end\00"
|
|
@.str.5165 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5166 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00"
|
|
@.str.5167 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.5168 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00"
|
|
@.str.5169 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5170 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00"
|
|
@.str.5171 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5172 = private unnamed_addr constant [7 x i8] c"or i1 \00"
|
|
@.str.5173 = private unnamed_addr constant [7 x i8] c"or i1 \00"
|
|
@.str.5174 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5175 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5176 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00"
|
|
@.str.5177 = private unnamed_addr constant [9 x i8] c"sub i64 \00"
|
|
@.str.5178 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5179 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5180 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00"
|
|
@.str.5181 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5182 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5183 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5184 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5185 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5186 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5187 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5188 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5190 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00"
|
|
@.str.5191 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5192 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5193 = private unnamed_addr constant [9 x i8] c"add i64 \00"
|
|
@.str.5194 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5196 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5197 = private unnamed_addr constant [5 x i8] c"sort\00"
|
|
@.str.5198 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.5199 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5200 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00"
|
|
@.str.5201 = private unnamed_addr constant [4 x i8] c"i64\00"
|
|
@.str.5202 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5203 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00"
|
|
@.str.5204 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5205 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5206 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5207 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5208 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.5209 = private unnamed_addr constant [25 x i8] c"an array has no method '\00"
|
|
@.str.5210 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00"
|
|
@.str.5211 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00"
|
|
@.str.5212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5213 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00"
|
|
@.str.5214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5215 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00"
|
|
@.str.5216 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5217 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5218 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00"
|
|
@.str.5219 = private unnamed_addr constant [11 x i8] c"trunc i64 \00"
|
|
@.str.5220 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.5221 = private unnamed_addr constant [3 x i8] c"%x\00"
|
|
@.str.5222 = private unnamed_addr constant [3 x i8] c"%y\00"
|
|
@.str.5223 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5224 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5225 = private unnamed_addr constant [10 x i8] c"fcmp olt \00"
|
|
@.str.5226 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5227 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5228 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00"
|
|
@.str.5229 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5230 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5231 = private unnamed_addr constant [6 x i8] c"icmp \00"
|
|
@.str.5232 = private unnamed_addr constant [2 x i8] c"<\00"
|
|
@.str.5233 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5234 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5235 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5236 = private unnamed_addr constant [6 x i8] c"icmp \00"
|
|
@.str.5237 = private unnamed_addr constant [2 x i8] c">\00"
|
|
@.str.5238 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5239 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5240 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5241 = private unnamed_addr constant [9 x i8] c"sub i32 \00"
|
|
@.str.5242 = private unnamed_addr constant [9 x i8] c"zext i1 \00"
|
|
@.str.5243 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.5244 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5245 = private unnamed_addr constant [9 x i8] c"zext i1 \00"
|
|
@.str.5246 = private unnamed_addr constant [8 x i8] c" to i32\00"
|
|
@.str.5247 = private unnamed_addr constant [9 x i8] c"ret i32 \00"
|
|
@.str.5248 = private unnamed_addr constant [21 x i8] c"define internal i32 \00"
|
|
@.str.5249 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00"
|
|
@.str.5250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5251 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00"
|
|
@.str.5252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5253 = private unnamed_addr constant [4 x i8] c"sub\00"
|
|
@.str.5254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5255 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5257 = private unnamed_addr constant [10 x i8] c"the start\00"
|
|
@.str.5258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5259 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5261 = private unnamed_addr constant [8 x i8] c"the end\00"
|
|
@.str.5262 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00"
|
|
@.str.5263 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5264 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5265 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5266 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5267 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5268 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5269 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5270 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5271 = private unnamed_addr constant [5 x i8] c"find\00"
|
|
@.str.5272 = private unnamed_addr constant [9 x i8] c"contains\00"
|
|
@.str.5273 = private unnamed_addr constant [12 x i8] c"starts_with\00"
|
|
@.str.5274 = private unnamed_addr constant [10 x i8] c"ends_with\00"
|
|
@.str.5275 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5276 = private unnamed_addr constant [21 x i8] c"the text to look for\00"
|
|
@.str.5277 = private unnamed_addr constant [5 x i8] c"find\00"
|
|
@.str.5278 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00"
|
|
@.str.5279 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5280 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5281 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5282 = private unnamed_addr constant [9 x i8] c"contains\00"
|
|
@.str.5283 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00"
|
|
@.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5285 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5286 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00"
|
|
@.str.5287 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.5288 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.5289 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00"
|
|
@.str.5290 = private unnamed_addr constant [10 x i8] c"ends_with\00"
|
|
@.str.5291 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00"
|
|
@.str.5292 = private unnamed_addr constant [10 x i8] c"call i32 \00"
|
|
@.str.5293 = private unnamed_addr constant [6 x i8] c"(ptr \00"
|
|
@.str.5294 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5295 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5296 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00"
|
|
@.str.5297 = private unnamed_addr constant [4 x i8] c", 0\00"
|
|
@.str.5298 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.5299 = private unnamed_addr constant [5 x i8] c"trim\00"
|
|
@.str.5300 = private unnamed_addr constant [6 x i8] c"upper\00"
|
|
@.str.5301 = private unnamed_addr constant [6 x i8] c"lower\00"
|
|
@.str.5302 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00"
|
|
@.str.5303 = private unnamed_addr constant [6 x i8] c"(ptr \00"
|
|
@.str.5304 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5305 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5306 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5307 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5308 = private unnamed_addr constant [8 x i8] c"replace\00"
|
|
@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5310 = private unnamed_addr constant [20 x i8] c"the text to replace\00"
|
|
@.str.5311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5312 = private unnamed_addr constant [13 x i8] c"the new text\00"
|
|
@.str.5313 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00"
|
|
@.str.5314 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5315 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5316 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5317 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5318 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5319 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5320 = private unnamed_addr constant [6 x i8] c"split\00"
|
|
@.str.5321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5322 = private unnamed_addr constant [14 x i8] c"the separator\00"
|
|
@.str.5323 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00"
|
|
@.str.5324 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5325 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5326 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5327 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5328 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5329 = private unnamed_addr constant [7 x i8] c"repeat\00"
|
|
@.str.5330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5331 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5333 = private unnamed_addr constant [10 x i8] c"the count\00"
|
|
@.str.5334 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00"
|
|
@.str.5335 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5336 = private unnamed_addr constant [7 x i8] c", i64 \00"
|
|
@.str.5337 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5338 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5339 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5340 = private unnamed_addr constant [6 x i8] c"bytes\00"
|
|
@.str.5341 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00"
|
|
@.str.5342 = private unnamed_addr constant [7 x i8] c", ptr \00"
|
|
@.str.5343 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5344 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00"
|
|
@.str.5345 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.5346 = private unnamed_addr constant [22 x i8] c"a str has no method '\00"
|
|
@.str.5347 = private unnamed_addr constant [107 x i8] c"' (it has: sub, find, contains, starts_with, ends_with, split, trim, upper, lower, replace, repeat, bytes)\00"
|
|
@.str.5348 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00"
|
|
@.str.5349 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00"
|
|
@.str.5350 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00"
|
|
@.str.5351 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00"
|
|
@.str.5352 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00"
|
|
@.str.5353 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00"
|
|
@.str.5354 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00"
|
|
@.str.5355 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00"
|
|
@.str.5356 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00"
|
|
@.str.5357 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00"
|
|
@.str.5358 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00"
|
|
@.str.5359 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00"
|
|
@.str.5360 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00"
|
|
@.str.5361 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00"
|
|
@.str.5362 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00"
|
|
@.str.5363 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00"
|
|
@.str.5364 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00"
|
|
@.str.5365 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00"
|
|
@.str.5366 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00"
|
|
@.str.5367 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00"
|
|
@.str.5368 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00"
|
|
@.str.5369 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00"
|
|
@.str.5370 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00"
|
|
@.str.5371 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00"
|
|
@.str.5372 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00"
|
|
@.str.5373 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00"
|
|
@.str.5374 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00"
|
|
@.str.5375 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00"
|
|
@.str.5376 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00"
|
|
@.str.5377 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00"
|
|
@.str.5378 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00"
|
|
@.str.5379 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00"
|
|
@.str.5380 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00"
|
|
@.str.5381 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00"
|
|
@.str.5382 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00"
|
|
@.str.5383 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00"
|
|
@.str.5384 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00"
|
|
@.str.5385 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00"
|
|
@.str.5386 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00"
|
|
@.str.5387 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00"
|
|
@.str.5388 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00"
|
|
@.str.5389 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00"
|
|
@.str.5390 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00"
|
|
@.str.5391 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00"
|
|
@.str.5392 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00"
|
|
@.str.5393 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00"
|
|
@.str.5394 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00"
|
|
@.str.5395 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00"
|
|
@.str.5396 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00"
|
|
@.str.5397 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00"
|
|
@.str.5398 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00"
|
|
@.str.5399 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00"
|
|
@.str.5400 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00"
|
|
@.str.5401 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00"
|
|
@.str.5402 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00"
|
|
@.str.5403 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00"
|
|
@.str.5404 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00"
|
|
@.str.5405 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00"
|
|
@.str.5406 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00"
|
|
@.str.5407 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00"
|
|
@.str.5408 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00"
|
|
@.str.5409 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00"
|
|
@.str.5410 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00"
|
|
@.str.5411 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00"
|
|
@.str.5412 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00"
|
|
@.str.5413 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00"
|
|
@.str.5414 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00"
|
|
@.str.5415 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00"
|
|
@.str.5416 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00"
|
|
@.str.5417 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00"
|
|
@.str.5418 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00"
|
|
@.str.5419 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5420 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5421 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00"
|
|
@.str.5422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5423 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.5424 = private unnamed_addr constant [18 x i8] c"target triple = \22\00"
|
|
@.str.5425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5426 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.5427 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00"
|
|
@.str.5428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5429 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00"
|
|
@.str.5430 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5431 = private unnamed_addr constant [3 x i8] c"\0A\0A\00"
|
|
@.str.5432 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5434 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00"
|
|
@.str.5435 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00"
|
|
@.str.5436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5437 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5438 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5440 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00"
|
|
@.str.5441 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5442 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5443 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00"
|
|
@.str.5444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5445 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.5446 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5448 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.5449 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00"
|
|
@.str.5450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5451 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.5452 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00"
|
|
@.str.5453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5454 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00"
|
|
@.str.5455 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00"
|
|
@.str.5456 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00"
|
|
@.str.5457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5458 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00"
|
|
@.str.5459 = private unnamed_addr constant [3 x i8] c"\22)\00"
|
|
@.str.5460 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00"
|
|
@.str.5461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5462 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00"
|
|
@.str.5463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5464 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00"
|
|
@.str.5465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5466 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00"
|
|
@.str.5467 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5468 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5469 = private unnamed_addr constant [5 x i8] c"main\00"
|
|
@.str.5470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5471 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00"
|
|
@.str.5472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5473 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.5474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5477 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.5478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5480 = private unnamed_addr constant [83 x i8] c"a library (--shared) has no main: the program that loads it calls its 'export fn's\00"
|
|
@.str.5481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5482 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00"
|
|
@.str.5483 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5484 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5485 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5487 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.5488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5489 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.5490 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5492 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00"
|
|
@.str.5493 = private unnamed_addr constant [11 x i8] c" dllexport\00"
|
|
@.str.5494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5495 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5496 = private unnamed_addr constant [7 x i8] c"define\00"
|
|
@.str.5497 = private unnamed_addr constant [108 x i8] c" void @finch_module_on_fatal(ptr %handler) {\0Aentry:\0A call void @finch_on_fatal(ptr %handler)\0A ret void\0A}\0A\00"
|
|
@.str.5498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5499 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00"
|
|
@.str.5500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5501 = private unnamed_addr constant [6 x i8] c"call \00"
|
|
@.str.5502 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5503 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.5504 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5505 = private unnamed_addr constant [134 x i8] c" %args = alloca { ptr, i64, i64 }\0A call void @finch_args(ptr %args, i32 %argc, ptr %argv)\0A %a = load { ptr, i64, i64 }, ptr %args\0A\00"
|
|
@.str.5506 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00"
|
|
@.str.5507 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5508 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00"
|
|
@.str.5509 = private unnamed_addr constant [6 x i8] c"%r = \00"
|
|
@.str.5510 = private unnamed_addr constant [3 x i8] c" \00"
|
|
@.str.5511 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5512 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5513 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00"
|
|
@.str.5514 = private unnamed_addr constant [63 x i8] c" %r, 0\0A br i1 %ok, label %main.ok, label %main.bad\0Amain.bad:\0A\00"
|
|
@.str.5515 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00"
|
|
@.str.5516 = private unnamed_addr constant [79 x i8] c" %r, 2\0A %mp = alloca { ptr, i64, i64 }\0A store { ptr, i64, i64 } %m, ptr %mp\0A\00"
|
|
@.str.5517 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00"
|
|
@.str.5518 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5519 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00"
|
|
@.str.5520 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00"
|
|
@.str.5521 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5522 = private unnamed_addr constant [6 x i8] c"%r = \00"
|
|
@.str.5523 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00"
|
|
@.str.5524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00"
|
|
@.str.5525 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5526 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00"
|
|
@.str.5527 = private unnamed_addr constant [3 x i8] c" \00"
|
|
@.str.5528 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5529 = private unnamed_addr constant [3 x i8] c"}\0A\00"
|
|
declare ptr @clang_getCString(i64, i64)
|
|
declare void @clang_disposeString(i64, i64)
|
|
@.str.5530 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.5531 = private unnamed_addr constant [23 x i8] c"/tmp/finch_cc_dirs.txt\00"
|
|
@.str.5532 = private unnamed_addr constant [27 x i8] c" -E -v -x c /dev/null 2> '\00"
|
|
@.str.5533 = private unnamed_addr constant [14 x i8] c"' > /dev/null\00"
|
|
@.str.5534 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5535 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5536 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5537 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5538 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5539 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00"
|
|
@.str.5540 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5541 = private unnamed_addr constant [20 x i8] c"End of search list.\00"
|
|
@.str.5542 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5543 = private unnamed_addr constant [23 x i8] c" (framework directory)\00"
|
|
@.str.5544 = private unnamed_addr constant [12 x i8] c"-iframework\00"
|
|
@.str.5545 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5546 = private unnamed_addr constant [9 x i8] c"-isystem\00"
|
|
@.str.5547 = private unnamed_addr constant [8 x i8] c"rm -f '\00"
|
|
@.str.5548 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
declare void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16, ptr byval(%S.C.CXType) align 8)
|
|
declare { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5549 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5550 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00"
|
|
@.str.5551 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5552 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00"
|
|
@.str.5553 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
declare { i64, i64 } @clang_getCursorSpelling(ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5554 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5555 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5556 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5557 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00"
|
|
@.str.5558 = private unnamed_addr constant [13 x i8] c"anon_struct_\00"
|
|
@.str.5559 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5560 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00"
|
|
@.str.5561 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5562 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00"
|
|
declare void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8)
|
|
@.str.5563 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5564 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5565 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5566 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00"
|
|
declare i64 @clang_Type_getSizeOf(ptr byval(%S.C.CXType) align 8)
|
|
@.str.5567 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5568 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5569 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00"
|
|
declare i64 @clang_Type_getAlignOf(ptr byval(%S.C.CXType) align 8)
|
|
declare i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5570 = private unnamed_addr constant [13 x i8] c"is a C union\00"
|
|
declare i32 @clang_Type_visitFields(ptr byval(%S.C.CXType) align 8, ptr, ptr)
|
|
@.str.5571 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5572 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00"
|
|
@.str.5573 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5574 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5575 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5576 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
declare void @clang_getCursorType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXCursor) align 8)
|
|
declare i64 @clang_Cursor_getOffsetOfField(ptr byval(%S.C.CXCursor) align 8)
|
|
declare i32 @clang_Cursor_isBitField(ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5577 = private unnamed_addr constant [15 x i8] c"has bit fields\00"
|
|
@.str.5578 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5579 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00"
|
|
@.str.5580 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5581 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00"
|
|
@.str.5582 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5583 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00"
|
|
@.str.5584 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5585 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00"
|
|
@.str.5586 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5587 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00"
|
|
@.str.5588 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5589 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00"
|
|
@.str.5590 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5591 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00"
|
|
@.str.5592 = private unnamed_addr constant [3 x i8] c"i8\00"
|
|
@.str.5593 = private unnamed_addr constant [3 x i8] c"u8\00"
|
|
@.str.5594 = private unnamed_addr constant [4 x i8] c"i16\00"
|
|
@.str.5595 = private unnamed_addr constant [4 x i8] c"u16\00"
|
|
@.str.5596 = private unnamed_addr constant [4 x i8] c"i32\00"
|
|
@.str.5597 = private unnamed_addr constant [4 x i8] c"u32\00"
|
|
@.str.5598 = private unnamed_addr constant [4 x i8] c"int\00"
|
|
@.str.5599 = private unnamed_addr constant [4 x i8] c"u64\00"
|
|
@.str.5600 = private unnamed_addr constant [8 x i8] c"uses a \00"
|
|
@.str.5601 = private unnamed_addr constant [12 x i8] c"-bit number\00"
|
|
@.str.5602 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.5603 = private unnamed_addr constant [5 x i8] c"bool\00"
|
|
@.str.5604 = private unnamed_addr constant [5 x i8] c"char\00"
|
|
@.str.5605 = private unnamed_addr constant [4 x i8] c"f32\00"
|
|
@.str.5606 = private unnamed_addr constant [6 x i8] c"float\00"
|
|
declare void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8)
|
|
declare i32 @clang_isConstQualifiedType(ptr byval(%S.C.CXType) align 8)
|
|
@.str.5607 = private unnamed_addr constant [4 x i8] c"str\00"
|
|
@.str.5608 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5609 = private unnamed_addr constant [5 x i8] c"void\00"
|
|
@.str.5610 = private unnamed_addr constant [6 x i8] c"fixed\00"
|
|
@.str.5611 = private unnamed_addr constant [4 x i8] c"ptr\00"
|
|
@.str.5612 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00"
|
|
@.str.5613 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00"
|
|
@.str.5614 = private unnamed_addr constant [6 x i8] c"named\00"
|
|
@.str.5615 = private unnamed_addr constant [2 x i8] c"C\00"
|
|
declare void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8)
|
|
declare i64 @clang_getArraySize(ptr byval(%S.C.CXType) align 8)
|
|
@.str.5616 = private unnamed_addr constant [17 x i8] c"uses long double\00"
|
|
@.str.5617 = private unnamed_addr constant [18 x i8] c"uses the C type '\00"
|
|
declare { i64, i64 } @clang_getTypeSpelling(ptr byval(%S.C.CXType) align 8)
|
|
@.str.5618 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5619 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5620 = private unnamed_addr constant [3 x i8] c"0x\00"
|
|
@.str.5621 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5622 = private unnamed_addr constant [3 x i8] c"0X\00"
|
|
@.str.5623 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5624 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5625 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5626 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5627 = private unnamed_addr constant [5 x i8] c"uUlL\00"
|
|
@.str.5628 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5629 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5630 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5631 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00"
|
|
declare void @clang_getCursorExtent(ptr sret(%S.C.CXSourceRange) align 16, ptr byval(%S.C.CXCursor) align 8)
|
|
declare void @clang_tokenize(ptr, ptr byval(%S.C.CXSourceRange) align 8, ptr, ptr)
|
|
declare i32 @clang_getTokenKind(ptr byval(%S.C.CXToken) align 8)
|
|
@.str.5632 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5633 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00"
|
|
declare { i64, i64 } @clang_getTokenSpelling(ptr, ptr byval(%S.C.CXToken) align 8)
|
|
@.str.5634 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5635 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00"
|
|
declare void @clang_disposeTokens(ptr, ptr, i32)
|
|
@.str.5636 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5637 = private unnamed_addr constant [2 x i8] c"(\00"
|
|
@.str.5638 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5639 = private unnamed_addr constant [2 x i8] c")\00"
|
|
@.str.5640 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5641 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5642 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00"
|
|
@.str.5643 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5644 = private unnamed_addr constant [2 x i8] c"-\00"
|
|
@.str.5645 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5646 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5647 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5648 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5649 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5650 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5651 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.5652 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5653 = private unnamed_addr constant [2 x i8] c"e\00"
|
|
@.str.5654 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5655 = private unnamed_addr constant [2 x i8] c"E\00"
|
|
@.str.5656 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5657 = private unnamed_addr constant [3 x i8] c"0x\00"
|
|
@.str.5658 = private unnamed_addr constant [5 x i8] c"fFlL\00"
|
|
@.str.5659 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5660 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5661 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
declare void @clang_getTypedefDeclUnderlyingType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5662 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5663 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00"
|
|
@.str.5664 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5665 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5666 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5667 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00"
|
|
@.str.5668 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5669 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5670 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5671 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5672 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00"
|
|
@.str.5673 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5674 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5675 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5676 = private unnamed_addr constant [31 x i8] c"used .header on a null pointer\00"
|
|
declare i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5677 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00"
|
|
@.str.5678 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5679 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5680 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00"
|
|
@.str.5681 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5682 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
declare void @clang_getResultType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8)
|
|
declare i32 @clang_getNumArgTypes(ptr byval(%S.C.CXType) align 8)
|
|
declare void @clang_getArgType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8, i32)
|
|
declare i32 @clang_isFunctionTypeVariadic(ptr byval(%S.C.CXType) align 8)
|
|
@.str.5683 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5684 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5685 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5686 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5687 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5688 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
declare i32 @clang_isCursorDefinition(ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5689 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5690 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5691 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5692 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00"
|
|
@.str.5693 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5694 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00"
|
|
declare i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8, ptr, ptr)
|
|
@.str.5695 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5696 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
declare i64 @clang_getEnumConstantDeclValue(ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5697 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5698 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
declare i32 @clang_Cursor_isMacroBuiltin(ptr byval(%S.C.CXCursor) align 8)
|
|
declare i32 @clang_Cursor_isMacroFunctionLike(ptr byval(%S.C.CXCursor) align 8)
|
|
@.str.5699 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5700 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5701 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5702 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00"
|
|
@.str.5703 = private unnamed_addr constant [3 x i8] c"-x\00"
|
|
@.str.5704 = private unnamed_addr constant [2 x i8] c"c\00"
|
|
@.str.5705 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00"
|
|
@.str.5706 = private unnamed_addr constant [10 x i8] c"--target=\00"
|
|
@.str.5707 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00"
|
|
@.str.5708 = private unnamed_addr constant [3 x i8] c"-I\00"
|
|
@.str.5709 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5710 = private unnamed_addr constant [1 x i8] c"\00"
|
|
declare ptr @clang_createIndex(i32, i32)
|
|
@.str.5711 = private unnamed_addr constant [11 x i8] c"#include \22\00"
|
|
@.str.5712 = private unnamed_addr constant [3 x i8] c"\22\0A\00"
|
|
@.str.5713 = private unnamed_addr constant [15 x i8] c"finch_import.c\00"
|
|
@.str.5714 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5715 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5716 = private unnamed_addr constant [15 x i8] c"finch_import.c\00"
|
|
@.str.5717 = private unnamed_addr constant [1 x i8] c"\00"
|
|
declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr)
|
|
@.str.5718 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00"
|
|
@.str.5719 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
declare i32 @clang_getNumDiagnostics(ptr)
|
|
declare ptr @clang_getDiagnostic(ptr, i32)
|
|
declare i32 @clang_getDiagnosticSeverity(ptr)
|
|
declare { i64, i64 } @clang_getDiagnosticSpelling(ptr)
|
|
declare void @clang_disposeDiagnostic(ptr)
|
|
@.str.5720 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5721 = private unnamed_addr constant [15 x i8] c"file not found\00"
|
|
@.str.5722 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5723 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5724 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00"
|
|
@.str.5725 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5726 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00"
|
|
@.str.5727 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5728 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00"
|
|
@.str.5729 = private unnamed_addr constant [11 x i8] c"', which '\00"
|
|
@.str.5730 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00"
|
|
@.str.5731 = private unnamed_addr constant [20 x i8] c": error: C header '\00"
|
|
@.str.5732 = private unnamed_addr constant [17 x i8] c"' has an error: \00"
|
|
declare void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16, ptr)
|
|
declare void @clang_disposeTranslationUnit(ptr)
|
|
declare void @clang_disposeIndex(ptr)
|
|
@.str.5733 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5734 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5735 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5736 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5737 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5738 = private unnamed_addr constant [22 x i8] c"/tmp/finch_triple.txt\00"
|
|
@.str.5739 = private unnamed_addr constant [23 x i8] c"clang -dumpmachine > '\00"
|
|
@.str.5740 = private unnamed_addr constant [15 x i8] c"' 2> /dev/null\00"
|
|
@.str.5741 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5742 = private unnamed_addr constant [8 x i8] c"rm -f '\00"
|
|
@.str.5743 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5744 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5745 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00"
|
|
@.str.5746 = private unnamed_addr constant [8 x i8] c"windows\00"
|
|
@.str.5747 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00"
|
|
@.str.5748 = private unnamed_addr constant [6 x i8] c"linux\00"
|
|
@.str.5749 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00"
|
|
@.str.5750 = private unnamed_addr constant [6 x i8] c"arm64\00"
|
|
@.str.5751 = private unnamed_addr constant [8 x i8] c"aarch64\00"
|
|
@.str.5752 = private unnamed_addr constant [12 x i8] c"linux-arm64\00"
|
|
@.str.5753 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00"
|
|
@.str.5754 = private unnamed_addr constant [6 x i8] c"macos\00"
|
|
@.str.5755 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5756 = private unnamed_addr constant [8 x i8] c"aarch64\00"
|
|
@.str.5757 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5758 = private unnamed_addr constant [6 x i8] c"arm64\00"
|
|
@.str.5759 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00"
|
|
@.str.5760 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00"
|
|
@.str.5761 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5762 = private unnamed_addr constant [8 x i8] c"windows\00"
|
|
@.str.5763 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5764 = private unnamed_addr constant [6 x i8] c"mingw\00"
|
|
@.str.5765 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5766 = private unnamed_addr constant [5 x i8] c"msvc\00"
|
|
@.str.5767 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5768 = private unnamed_addr constant [6 x i8] c"win32\00"
|
|
@.str.5769 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5770 = private unnamed_addr constant [5 x i8] c"msvc\00"
|
|
@.str.5771 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5772 = private unnamed_addr constant [6 x i8] c"apple\00"
|
|
@.str.5773 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5774 = private unnamed_addr constant [7 x i8] c"darwin\00"
|
|
@.str.5775 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5776 = private unnamed_addr constant [6 x i8] c"macos\00"
|
|
@.str.5777 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5778 = private unnamed_addr constant [8 x i8] c"aarch64\00"
|
|
@.str.5779 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5780 = private unnamed_addr constant [6 x i8] c"arm64\00"
|
|
@.str.5781 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5782 = private unnamed_addr constant [8 x i8] c"aarch64\00"
|
|
@.str.5783 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5784 = private unnamed_addr constant [6 x i8] c"arm64\00"
|
|
@.str.5785 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5786 = private unnamed_addr constant [6 x i8] c"apple\00"
|
|
@.str.5787 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00"
|
|
@.str.5788 = private unnamed_addr constant [7 x i8] c"darwin\00"
|
|
@.str.5789 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5790 = private unnamed_addr constant [5 x i8] c".exe\00"
|
|
@.str.5791 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00"
|
|
@.str.5792 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5793 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00"
|
|
@.str.5794 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00"
|
|
@.str.5795 = private unnamed_addr constant [16 x i8] c"clang --target=\00"
|
|
@.str.5796 = private unnamed_addr constant [3 x i8] c"cc\00"
|
|
@.str.5797 = private unnamed_addr constant [6 x i8] c"wine \00"
|
|
@.str.5798 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00"
|
|
@.str.5799 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00"
|
|
@.str.5800 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5801 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5802 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5803 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5804 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5805 = private unnamed_addr constant [5 x i8] c"'\5C''\00"
|
|
@.str.5806 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5807 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00"
|
|
@.str.5808 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5809 = private unnamed_addr constant [7 x i8] c"/finch\00"
|
|
@.str.5810 = private unnamed_addr constant [5 x i8] c"HOME\00"
|
|
@.str.5811 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5812 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00"
|
|
@.str.5813 = private unnamed_addr constant [17 x i8] c"/tmp/finch-cache\00"
|
|
@.str.5814 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5815 = private unnamed_addr constant [11 x i8] c".framework\00"
|
|
@.str.5816 = private unnamed_addr constant [12 x i8] c"-framework \00"
|
|
@.str.5817 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5818 = private unnamed_addr constant [25 x i8] c"/tmp/finch_pkg_flags.txt\00"
|
|
@.str.5819 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00"
|
|
@.str.5820 = private unnamed_addr constant [5 x i8] c" > '\00"
|
|
@.str.5821 = private unnamed_addr constant [15 x i8] c"' 2> /dev/null\00"
|
|
@.str.5822 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5823 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5824 = private unnamed_addr constant [8 x i8] c"rm -f '\00"
|
|
@.str.5825 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5826 = private unnamed_addr constant [3 x i8] c"-l\00"
|
|
@.str.5827 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5828 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.5829 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5830 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5831 = private unnamed_addr constant [2 x i8] c"/\00"
|
|
@.str.5832 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5833 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5834 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5835 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5836 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5837 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5838 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5839 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5840 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5841 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5842 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5843 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5844 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5845 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5846 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5847 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5848 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00"
|
|
@.str.5849 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00"
|
|
@.str.5850 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5851 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5852 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00"
|
|
@.str.5853 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00"
|
|
@.str.5854 = private unnamed_addr constant [3 x i8] c" \0A\00"
|
|
@.str.5855 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5856 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00"
|
|
@.str.5857 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00"
|
|
@.str.5858 = private unnamed_addr constant [4 x i8] c" \0A\0D\00"
|
|
@.str.5859 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5860 = private unnamed_addr constant [15 x i8] c"cannot find -l\00"
|
|
@.str.5861 = private unnamed_addr constant [15 x i8] c"cannot find -l\00"
|
|
@.str.5862 = private unnamed_addr constant [5 x i8] c": \0A\0D\00"
|
|
@.str.5863 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5864 = private unnamed_addr constant [25 x i8] c"library not found for -l\00"
|
|
@.str.5865 = private unnamed_addr constant [25 x i8] c"library not found for -l\00"
|
|
@.str.5866 = private unnamed_addr constant [5 x i8] c": \0A\0D\00"
|
|
@.str.5867 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5868 = private unnamed_addr constant [14 x i8] c"ld: library '\00"
|
|
@.str.5869 = private unnamed_addr constant [14 x i8] c"ld: library '\00"
|
|
@.str.5870 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5871 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5872 = private unnamed_addr constant [12 x i8] c"framework '\00"
|
|
@.str.5873 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5874 = private unnamed_addr constant [10 x i8] c"not found\00"
|
|
@.str.5875 = private unnamed_addr constant [12 x i8] c"framework '\00"
|
|
@.str.5876 = private unnamed_addr constant [2 x i8] c"'\00"
|
|
@.str.5877 = private unnamed_addr constant [11 x i8] c".framework\00"
|
|
@.str.5878 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5879 = private unnamed_addr constant [2 x i8] c"\22\00"
|
|
@.str.5880 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5881 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00"
|
|
@.str.5882 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5883 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5884 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00"
|
|
@.str.5885 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5886 = private unnamed_addr constant [2 x i8] c"_\00"
|
|
@.str.5887 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5888 = private unnamed_addr constant [22 x i8] c"error: linking failed\00"
|
|
@.str.5889 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5890 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5891 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5892 = private unnamed_addr constant [21 x i8] c"error: the library '\00"
|
|
@.str.5893 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00"
|
|
@.str.5894 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5895 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5896 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5897 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5898 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5899 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5900 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5901 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5902 = private unnamed_addr constant [3 x i8] c", \00"
|
|
@.str.5903 = private unnamed_addr constant [6 x i8] c" and \00"
|
|
@.str.5904 = private unnamed_addr constant [6 x i8] c" more\00"
|
|
@.str.5905 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5906 = private unnamed_addr constant [26 x i8] c"error: no code found for \00"
|
|
@.str.5907 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5908 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5909 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5910 = private unnamed_addr constant [5 x i8] c"come\00"
|
|
@.str.5911 = private unnamed_addr constant [6 x i8] c"comes\00"
|
|
@.str.5912 = private unnamed_addr constant [8 x i8] c"error: \00"
|
|
@.str.5913 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5914 = private unnamed_addr constant [8 x i8] c" from \22\00"
|
|
@.str.5915 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5916 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00"
|
|
@.str.5917 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5918 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5919 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5920 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00"
|
|
@.str.5921 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5922 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5923 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5924 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00"
|
|
@.str.5925 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5926 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5927 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5928 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5929 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5930 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5931 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5932 = private unnamed_addr constant [13 x i8] c" link \22\00"
|
|
@.str.5933 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.5934 = private unnamed_addr constant [2 x i8] c"\22\00"
|
|
@.str.5935 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5936 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5937 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5938 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5939 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5940 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5941 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5942 = private unnamed_addr constant [5 x i8] c"/rt-\00"
|
|
@.str.5943 = private unnamed_addr constant [4 x i8] c"2.5\00"
|
|
@.str.5944 = private unnamed_addr constant [3 x i8] c".o\00"
|
|
@.str.5945 = private unnamed_addr constant [10 x i8] c"mkdir -p \00"
|
|
@.str.5946 = private unnamed_addr constant [6 x i8] c".part\00"
|
|
declare i32 @getpid()
|
|
@.str.5947 = private unnamed_addr constant [7 x i8] c" -fPIC\00"
|
|
@.str.5948 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5949 = private unnamed_addr constant [5 x i8] c".log\00"
|
|
@.str.5950 = private unnamed_addr constant [5 x i8] c" -O2\00"
|
|
@.str.5951 = private unnamed_addr constant [5 x i8] c" -c \00"
|
|
@.str.5952 = private unnamed_addr constant [5 x i8] c" -o \00"
|
|
@.str.5953 = private unnamed_addr constant [4 x i8] c" > \00"
|
|
@.str.5954 = private unnamed_addr constant [6 x i8] c" 2>&1\00"
|
|
@.str.5955 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5956 = private unnamed_addr constant [7 x i8] c"rm -f \00"
|
|
@.str.5957 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5958 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00"
|
|
@.str.5959 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00"
|
|
@.str.5960 = private unnamed_addr constant [7 x i8] c"rm -f \00"
|
|
@.str.5961 = private unnamed_addr constant [8 x i8] c" && mv \00"
|
|
@.str.5962 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5963 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00"
|
|
@.str.5964 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5965 = private unnamed_addr constant [6 x i8] c"clang\00"
|
|
@.str.5966 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00"
|
|
@.str.5967 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5968 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00"
|
|
@.str.5969 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5970 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5971 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5972 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5973 = private unnamed_addr constant [4 x i8] c".ll\00"
|
|
@.str.5974 = private unnamed_addr constant [3 x i8] c".o\00"
|
|
@.str.5975 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5976 = private unnamed_addr constant [11 x i8] c" --target=\00"
|
|
@.str.5977 = private unnamed_addr constant [5 x i8] c".log\00"
|
|
@.str.5978 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5979 = private unnamed_addr constant [8 x i8] c" -w -c \00"
|
|
@.str.5980 = private unnamed_addr constant [5 x i8] c" -o \00"
|
|
@.str.5981 = private unnamed_addr constant [4 x i8] c" > \00"
|
|
@.str.5982 = private unnamed_addr constant [6 x i8] c" 2>&1\00"
|
|
@.str.5983 = private unnamed_addr constant [7 x i8] c"rm -f \00"
|
|
@.str.5984 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5985 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5986 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5987 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5988 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00"
|
|
@.str.5989 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.5990 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.5991 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.5992 = private unnamed_addr constant [7 x i8] c"rm -f \00"
|
|
@.str.5993 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5994 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5995 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.5996 = private unnamed_addr constant [5 x i8] c" -o \00"
|
|
@.str.5997 = private unnamed_addr constant [5 x i8] c" -lm\00"
|
|
@.str.5998 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00"
|
|
@.str.5999 = private unnamed_addr constant [9 x i8] c" -shared\00"
|
|
@.str.6000 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.6001 = private unnamed_addr constant [3 x i8] c".c\00"
|
|
@.str.6002 = private unnamed_addr constant [2 x i8] c".\00"
|
|
@.str.6003 = private unnamed_addr constant [3 x i8] c".o\00"
|
|
@.str.6004 = private unnamed_addr constant [7 x i8] c" -fPIC\00"
|
|
@.str.6005 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.6006 = private unnamed_addr constant [5 x i8] c" -O2\00"
|
|
@.str.6007 = private unnamed_addr constant [5 x i8] c" -c \00"
|
|
@.str.6008 = private unnamed_addr constant [5 x i8] c" -o \00"
|
|
@.str.6009 = private unnamed_addr constant [4 x i8] c" > \00"
|
|
@.str.6010 = private unnamed_addr constant [6 x i8] c" 2>&1\00"
|
|
@.str.6011 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.6012 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00"
|
|
@.str.6013 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.6014 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.6015 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.6016 = private unnamed_addr constant [7 x i8] c"rm -f \00"
|
|
@.str.6017 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.6018 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.6019 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.6020 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.6021 = private unnamed_addr constant [3 x i8] c".o\00"
|
|
@.str.6022 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00"
|
|
@.str.6023 = private unnamed_addr constant [3 x i8] c".a\00"
|
|
@.str.6024 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.6025 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.6026 = private unnamed_addr constant [4 x i8] c" > \00"
|
|
@.str.6027 = private unnamed_addr constant [6 x i8] c" 2>&1\00"
|
|
@.str.6028 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.6029 = private unnamed_addr constant [7 x i8] c"rm -f \00"
|
|
@.str.6030 = private unnamed_addr constant [2 x i8] c" \00"
|
|
@.str.6031 = private unnamed_addr constant [7 x i8] c"rm -f \00"
|
|
@.str.6032 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00"
|
|
@.str.6033 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00"
|
|
@.str.6034 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.6035 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.6036 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
@.str.6037 = private unnamed_addr constant [1 x i8] c"\00"
|
|
@.str.6038 = private unnamed_addr constant [5 x i8] c"%.*s\00"
|
|
@.str.6039 = private unnamed_addr constant [2 x i8] c"\0A\00"
|
|
|
|
declare void @finch_panic(ptr, i64, ptr) noreturn cold
|
|
declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold
|
|
declare ptr @finch_alloc(i64)
|
|
declare void @finch_str_copy(ptr, ptr)
|
|
declare void @finch_str_own(ptr)
|
|
declare void @finch_str_concat(ptr, ptr, ptr)
|
|
declare i32 @finch_str_eq(ptr, ptr)
|
|
declare i64 @finch_str_cmp(ptr, ptr)
|
|
declare void @finch_buf_add(ptr, ptr, i64)
|
|
declare void @finch_buf_int(ptr, i64)
|
|
declare void @finch_buf_uint(ptr, i64)
|
|
declare void @finch_buf_float(ptr, double)
|
|
declare void @finch_buf_bool(ptr, i32)
|
|
declare void @finch_buf_ptr(ptr, ptr)
|
|
declare void @finch_buf_char(ptr, i8, i32)
|
|
declare void @finch_buf_str(ptr, ptr, i32)
|
|
declare void @finch_buf_print(ptr)
|
|
declare void @finch_str_from_int(ptr, i64)
|
|
declare void @finch_str_from_uint(ptr, i64)
|
|
declare void @finch_str_from_float(ptr, double)
|
|
declare void @finch_str_from_char(ptr, i8 signext)
|
|
declare void @finch_str_from_bool(ptr, i32)
|
|
declare i64 @finch_str_to_int(ptr, ptr, i64)
|
|
declare double @finch_str_to_float(ptr, ptr, i64)
|
|
declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)
|
|
declare i64 @finch_str_find(ptr, ptr)
|
|
declare i32 @finch_str_starts(ptr, ptr)
|
|
declare i32 @finch_str_ends(ptr, ptr)
|
|
declare void @finch_str_trim(ptr, ptr)
|
|
declare void @finch_str_upper(ptr, ptr)
|
|
declare void @finch_str_lower(ptr, ptr)
|
|
declare void @finch_str_replace(ptr, ptr, ptr, ptr)
|
|
declare void @finch_str_split(ptr, ptr, ptr)
|
|
declare void @finch_str_join(ptr, ptr, ptr)
|
|
declare void @finch_str_repeat(ptr, ptr, i64)
|
|
declare void @finch_bytes_from_str(ptr, ptr)
|
|
declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)
|
|
declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)
|
|
declare void @finch_map_remove_at(ptr, i64, i64)
|
|
declare void @finch_map_clear(ptr)
|
|
declare void @finch_map_clone_raw(ptr, ptr, i64)
|
|
declare void @finch_map_missing(ptr, i64, ptr) noreturn cold
|
|
declare void @finch_map_changed(ptr, i64) noreturn cold
|
|
declare void @finch_arr_reserve(ptr, i64, i64)
|
|
declare void @finch_arr_clone_raw(ptr, ptr, i64)
|
|
declare void @finch_arr_make(ptr, i64, i64)
|
|
declare void @finch_arr_resize(ptr, i64, i64)
|
|
declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)
|
|
declare void @finch_arr_remove_gap(ptr, i64, i64)
|
|
declare void @qsort(ptr, i64, i64, ptr)
|
|
declare void @finch_args(ptr, i32, ptr)
|
|
declare void @finch_input(ptr, ptr)
|
|
declare i32 @finch_file_exists(ptr)
|
|
declare i32 @finch_str_try_int(ptr, ptr, ptr)
|
|
declare i32 @finch_str_try_float(ptr, ptr, ptr)
|
|
declare i32 @finch_try_read_file(ptr, ptr, ptr)
|
|
declare i32 @finch_try_write_file(ptr, ptr, ptr)
|
|
declare i32 @finch_try_delete_file(ptr, ptr)
|
|
declare void @finch_report_error(ptr)
|
|
declare void @finch_read_file(ptr, ptr, ptr, i64)
|
|
declare i32 @finch_write_file(ptr, ptr)
|
|
declare i64 @finch_shell(ptr)
|
|
declare i32 @finch_delete_file(ptr)
|
|
declare i32 @printf(ptr, ...)
|
|
declare i32 @fflush(ptr)
|
|
declare void @finch_str_from_c(ptr, ptr)
|
|
declare void @finch_on_fatal(ptr)
|
|
declare ptr @finch_std_stream(i32)
|
|
declare void @finch_str_from_bytes(ptr, ptr)
|
|
declare void @exit(i32) noreturn
|
|
declare void @free(ptr)
|
|
|
|
define internal { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca i64, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t3 = load i64, ptr %t2
|
|
%t4 = sub i64 %t3, 1
|
|
store i64 %t4, ptr %a5
|
|
br label %while.cond1
|
|
while.cond1:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp sge i64 %t6, 0
|
|
br label %logic.from4
|
|
logic.from4:
|
|
br i1 %t7, label %logic.rhs5, label %logic.end6
|
|
logic.rhs5:
|
|
%t8 = load i64, ptr %a5
|
|
%t9 = load { ptr, i64, i64 }, ptr %a1
|
|
%t10 = extractvalue { ptr, i64, i64 } %t9, 1
|
|
%t11 = icmp uge i64 %t8, %t10
|
|
br i1 %t11, label %range7, label %inrange8
|
|
range7:
|
|
call void @finch_panic_index(ptr @.str.1, i64 19, 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 25)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a23
|
|
ret { ptr, i64, i64 } %t25
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca i64, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
%t5 = load { ptr, i64, i64 }, ptr %a1
|
|
%t6 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t5)
|
|
%t7 = extractvalue { ptr, i64, i64 } %t6, 1
|
|
%t8 = add i64 %t7, 1
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t10 = load i64, ptr %t9
|
|
call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t8, i64 %t10, ptr @.str.4, i64 29)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t11, ptr %a12
|
|
%t13 = load { ptr, i64, i64 }, ptr %a1
|
|
%t14 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t13)
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a16
|
|
%t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16)
|
|
%t18 = icmp ne i32 %t17, 0
|
|
br label %logic.from13
|
|
logic.from13:
|
|
br i1 %t18, label %logic.rhs14, label %logic.end15
|
|
logic.rhs14:
|
|
%t19 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t19, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a22
|
|
%t23 = call i32 @finch_str_starts(ptr %a20, ptr %a22)
|
|
%t24 = icmp ne i32 %t23, 0
|
|
%t25 = xor i1 %t24, true
|
|
br label %logic.rend16
|
|
logic.rend16:
|
|
br label %logic.end15
|
|
logic.end15:
|
|
%t26 = phi i1 [ false, %logic.from13 ], [ %t25, %logic.rend16 ]
|
|
br i1 %t26, label %then17, label %endif19
|
|
then17:
|
|
%t27 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
call void @finch_str_copy(ptr %a29, ptr %a28)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a29
|
|
store { ptr, i64, i64 } %t30, ptr %a12
|
|
br label %endif19
|
|
endif19:
|
|
%t31 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a34
|
|
%t35 = call i64 @finch_str_find(ptr %a32, ptr %a34)
|
|
store i64 %t35, ptr %a36
|
|
%t37 = load i64, ptr %a36
|
|
%t38 = icmp sgt i64 %t37, 0
|
|
br i1 %t38, label %then20, label %endif22
|
|
then20:
|
|
%t39 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t39, ptr %a40
|
|
%t42 = load i64, ptr %a36
|
|
call void @finch_str_sub(ptr %a41, ptr %a40, i64 0, i64 %t42, ptr @.str.10, i64 35)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a41
|
|
ret { ptr, i64, i64 } %t43
|
|
endif22:
|
|
%t44 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t44, ptr %a45
|
|
call void @finch_str_copy(ptr %a46, ptr %a45)
|
|
%t47 = load { ptr, i64, i64 }, ptr %a46
|
|
ret { ptr, i64, i64 } %t47
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.main.findModule(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca i64, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a237 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load { ptr, i64, i64 }, ptr %a2
|
|
%t5 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t4)
|
|
store { ptr, i64, i64 } %t5, ptr %a7
|
|
store { ptr, i64, i64 } { ptr @.str.11, i64 1, i64 0 }, ptr %a8
|
|
call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8)
|
|
%t9 = load { ptr, i64, i64 }, ptr %a6
|
|
%t10 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t9, ptr %a12
|
|
store { ptr, i64, i64 } %t10, ptr %a13
|
|
call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t14, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.12, i64 4, i64 0 }, ptr %a17
|
|
call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a15
|
|
store { ptr, i64, i64 } %t18, ptr %a19
|
|
%t20 = load { ptr, i64, i64 }, ptr %a2
|
|
%t21 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t20)
|
|
store { ptr, i64, i64 } %t21, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.13, i64 1, i64 0 }, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
%t26 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t25, ptr %a28
|
|
store { ptr, i64, i64 } %t26, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t30, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.14, i64 1, i64 0 }, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = icmp eq ptr %t35, null
|
|
br i1 %t36, label %panic23, label %ok24
|
|
panic23:
|
|
call void @finch_panic(ptr @.str.15, i64 54, ptr @.str.16)
|
|
unreachable
|
|
ok24:
|
|
%t37 = getelementptr inbounds %S.main.Loader, ptr %t35, i32 0, i32 3
|
|
%t38 = load { ptr, i64, i64 }, ptr %t37
|
|
store { ptr, i64, i64 } %t34, ptr %a40
|
|
store { ptr, i64, i64 } %t38, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
store { ptr, i64, i64 } %t42, ptr %a44
|
|
store { ptr, i64, i64 } { ptr @.str.17, i64 4, i64 0 }, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
store { ptr, i64, i64 } %t46, ptr %a47
|
|
%t48 = call i32 @finch_file_exists(ptr %a47)
|
|
%t49 = icmp ne i32 %t48, 0
|
|
br i1 %t49, label %then25, label %endif27
|
|
then25:
|
|
%t50 = load { ptr, i64, i64 }, ptr %a2
|
|
%t51 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t50)
|
|
store { ptr, i64, i64 } %t51, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.18, i64 1, i64 0 }, ptr %a54
|
|
call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a52
|
|
%t56 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t55, ptr %a58
|
|
store { ptr, i64, i64 } %t56, ptr %a59
|
|
call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59)
|
|
%t60 = load { ptr, i64, i64 }, ptr %a57
|
|
store { ptr, i64, i64 } %t60, ptr %a62
|
|
store { ptr, i64, i64 } { ptr @.str.19, i64 1, i64 0 }, ptr %a63
|
|
call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a61
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = icmp eq ptr %t65, null
|
|
br i1 %t66, label %panic28, label %ok29
|
|
panic28:
|
|
call void @finch_panic(ptr @.str.20, i64 55, ptr @.str.21)
|
|
unreachable
|
|
ok29:
|
|
%t67 = getelementptr inbounds %S.main.Loader, ptr %t65, i32 0, i32 3
|
|
%t68 = load { ptr, i64, i64 }, ptr %t67
|
|
store { ptr, i64, i64 } %t64, ptr %a70
|
|
store { ptr, i64, i64 } %t68, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
store { ptr, i64, i64 } %t72, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.22, i64 4, i64 0 }, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
ret { ptr, i64, i64 } %t76
|
|
endif27:
|
|
%t77 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
%t79 = call i32 @finch_file_exists(ptr %a78)
|
|
%t80 = icmp ne i32 %t79, 0
|
|
br i1 %t80, label %then30, label %endif32
|
|
then30:
|
|
%t81 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t81, ptr %a82
|
|
call void @finch_str_copy(ptr %a83, ptr %a82)
|
|
%t84 = load { ptr, i64, i64 }, ptr %a83
|
|
ret { ptr, i64, i64 } %t84
|
|
endif32:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = icmp eq ptr %t85, null
|
|
br i1 %t86, label %panic33, label %ok34
|
|
panic33:
|
|
call void @finch_panic(ptr @.str.23, i64 60, ptr @.str.24)
|
|
unreachable
|
|
ok34:
|
|
%t87 = getelementptr inbounds %S.main.Loader, ptr %t85, i32 0, i32 5
|
|
store i64 0, ptr %a88
|
|
br label %each.cond35
|
|
each.cond35:
|
|
%t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1
|
|
%t90 = load i64, ptr %t89
|
|
%t91 = load i64, ptr %a88
|
|
%t92 = icmp slt i64 %t91, %t90
|
|
br i1 %t92, label %each.body36, label %each.end38
|
|
each.body36:
|
|
%t93 = load ptr, ptr %t87
|
|
%t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91
|
|
%t95 = load { ptr, i64, i64 }, ptr %t94
|
|
store { ptr, i64, i64 } %t95, ptr %a96
|
|
%t97 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t97, ptr %a99
|
|
store { ptr, i64, i64 } { ptr @.str.25, i64 1, i64 0 }, ptr %a100
|
|
call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a98
|
|
%t102 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t101, ptr %a104
|
|
store { ptr, i64, i64 } %t102, ptr %a105
|
|
call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105)
|
|
%t106 = load { ptr, i64, i64 }, ptr %a103
|
|
store { ptr, i64, i64 } %t106, ptr %a108
|
|
store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a109
|
|
call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109)
|
|
%t110 = load { ptr, i64, i64 }, ptr %a107
|
|
%t111 = load ptr, ptr %a1
|
|
%t112 = icmp eq ptr %t111, null
|
|
br i1 %t112, label %panic39, label %ok40
|
|
panic39:
|
|
call void @finch_panic(ptr @.str.27, i64 61, ptr @.str.28)
|
|
unreachable
|
|
ok40:
|
|
%t113 = getelementptr inbounds %S.main.Loader, ptr %t111, i32 0, i32 3
|
|
%t114 = load { ptr, i64, i64 }, ptr %t113
|
|
store { ptr, i64, i64 } %t110, ptr %a116
|
|
store { ptr, i64, i64 } %t114, ptr %a117
|
|
call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117)
|
|
%t118 = load { ptr, i64, i64 }, ptr %a115
|
|
store { ptr, i64, i64 } %t118, ptr %a120
|
|
store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a121
|
|
call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121)
|
|
%t122 = load { ptr, i64, i64 }, ptr %a119
|
|
store { ptr, i64, i64 } %t122, ptr %a123
|
|
%t124 = call i32 @finch_file_exists(ptr %a123)
|
|
%t125 = icmp ne i32 %t124, 0
|
|
br i1 %t125, label %then41, label %endif43
|
|
then41:
|
|
%t126 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t126, ptr %a128
|
|
store { ptr, i64, i64 } { ptr @.str.30, i64 1, i64 0 }, ptr %a129
|
|
call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129)
|
|
%t130 = load { ptr, i64, i64 }, ptr %a127
|
|
%t131 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t130, ptr %a133
|
|
store { ptr, i64, i64 } %t131, ptr %a134
|
|
call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134)
|
|
%t135 = load { ptr, i64, i64 }, ptr %a132
|
|
store { ptr, i64, i64 } %t135, ptr %a137
|
|
store { ptr, i64, i64 } { ptr @.str.31, i64 1, i64 0 }, ptr %a138
|
|
call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138)
|
|
%t139 = load { ptr, i64, i64 }, ptr %a136
|
|
%t140 = load ptr, ptr %a1
|
|
%t141 = icmp eq ptr %t140, null
|
|
br i1 %t141, label %panic44, label %ok45
|
|
panic44:
|
|
call void @finch_panic(ptr @.str.32, i64 62, ptr @.str.33)
|
|
unreachable
|
|
ok45:
|
|
%t142 = getelementptr inbounds %S.main.Loader, ptr %t140, i32 0, i32 3
|
|
%t143 = load { ptr, i64, i64 }, ptr %t142
|
|
store { ptr, i64, i64 } %t139, ptr %a145
|
|
store { ptr, i64, i64 } %t143, ptr %a146
|
|
call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a144
|
|
store { ptr, i64, i64 } %t147, ptr %a149
|
|
store { ptr, i64, i64 } { ptr @.str.34, i64 4, i64 0 }, ptr %a150
|
|
call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150)
|
|
%t151 = load { ptr, i64, i64 }, ptr %a148
|
|
ret { ptr, i64, i64 } %t151
|
|
endif43:
|
|
%t152 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t152, ptr %a154
|
|
store { ptr, i64, i64 } { ptr @.str.35, i64 1, i64 0 }, ptr %a155
|
|
call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155)
|
|
%t156 = load { ptr, i64, i64 }, ptr %a153
|
|
%t157 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t156, ptr %a159
|
|
store { ptr, i64, i64 } %t157, ptr %a160
|
|
call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160)
|
|
%t161 = load { ptr, i64, i64 }, ptr %a158
|
|
store { ptr, i64, i64 } %t161, ptr %a163
|
|
store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a164
|
|
call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164)
|
|
%t165 = load { ptr, i64, i64 }, ptr %a162
|
|
store { ptr, i64, i64 } %t165, ptr %a166
|
|
%t167 = call i32 @finch_file_exists(ptr %a166)
|
|
%t168 = icmp ne i32 %t167, 0
|
|
br i1 %t168, label %then46, label %endif48
|
|
then46:
|
|
%t169 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t169, ptr %a171
|
|
store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a172
|
|
call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172)
|
|
%t173 = load { ptr, i64, i64 }, ptr %a170
|
|
%t174 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t173, ptr %a176
|
|
store { ptr, i64, i64 } %t174, ptr %a177
|
|
call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177)
|
|
%t178 = load { ptr, i64, i64 }, ptr %a175
|
|
store { ptr, i64, i64 } %t178, ptr %a180
|
|
store { ptr, i64, i64 } { ptr @.str.38, i64 4, i64 0 }, ptr %a181
|
|
call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181)
|
|
%t182 = load { ptr, i64, i64 }, ptr %a179
|
|
ret { ptr, i64, i64 } %t182
|
|
endif48:
|
|
br label %each.step37
|
|
each.step37:
|
|
%t183 = load i64, ptr %a88
|
|
%t184 = add i64 %t183, 1
|
|
store i64 %t184, ptr %a88
|
|
br label %each.cond35
|
|
each.end38:
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = icmp eq ptr %t185, null
|
|
br i1 %t186, label %panic49, label %ok50
|
|
panic49:
|
|
call void @finch_panic(ptr @.str.39, i64 68, ptr @.str.40)
|
|
unreachable
|
|
ok50:
|
|
%t187 = getelementptr inbounds %S.main.Loader, ptr %t185, i32 0, i32 4
|
|
%t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1
|
|
%t189 = load i64, ptr %t188
|
|
%t190 = icmp sgt i64 %t189, 0
|
|
br i1 %t190, label %then51, label %endif53
|
|
then51:
|
|
%t191 = load ptr, ptr %a1
|
|
%t192 = icmp eq ptr %t191, null
|
|
br i1 %t192, label %panic54, label %ok55
|
|
panic54:
|
|
call void @finch_panic(ptr @.str.41, i64 69, ptr @.str.42)
|
|
unreachable
|
|
ok55:
|
|
%t193 = getelementptr inbounds %S.main.Loader, ptr %t191, i32 0, i32 4
|
|
%t194 = load { ptr, i64, i64 }, ptr %t193
|
|
store { ptr, i64, i64 } %t194, ptr %a196
|
|
store { ptr, i64, i64 } { ptr @.str.43, i64 1, i64 0 }, ptr %a197
|
|
call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197)
|
|
%t198 = load { ptr, i64, i64 }, ptr %a195
|
|
%t199 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t198, ptr %a201
|
|
store { ptr, i64, i64 } %t199, ptr %a202
|
|
call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202)
|
|
%t203 = load { ptr, i64, i64 }, ptr %a200
|
|
store { ptr, i64, i64 } %t203, ptr %a205
|
|
store { ptr, i64, i64 } { ptr @.str.44, i64 1, i64 0 }, ptr %a206
|
|
call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206)
|
|
%t207 = load { ptr, i64, i64 }, ptr %a204
|
|
%t208 = load ptr, ptr %a1
|
|
%t209 = icmp eq ptr %t208, null
|
|
br i1 %t209, label %panic56, label %ok57
|
|
panic56:
|
|
call void @finch_panic(ptr @.str.45, i64 69, ptr @.str.46)
|
|
unreachable
|
|
ok57:
|
|
%t210 = getelementptr inbounds %S.main.Loader, ptr %t208, i32 0, i32 3
|
|
%t211 = load { ptr, i64, i64 }, ptr %t210
|
|
store { ptr, i64, i64 } %t207, ptr %a213
|
|
store { ptr, i64, i64 } %t211, ptr %a214
|
|
call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214)
|
|
%t215 = load { ptr, i64, i64 }, ptr %a212
|
|
store { ptr, i64, i64 } %t215, ptr %a217
|
|
store { ptr, i64, i64 } { ptr @.str.47, i64 4, i64 0 }, ptr %a218
|
|
call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218)
|
|
%t219 = load { ptr, i64, i64 }, ptr %a216
|
|
store { ptr, i64, i64 } %t219, ptr %a220
|
|
%t221 = call i32 @finch_file_exists(ptr %a220)
|
|
%t222 = icmp ne i32 %t221, 0
|
|
br i1 %t222, label %then58, label %endif60
|
|
then58:
|
|
%t223 = load ptr, ptr %a1
|
|
%t224 = icmp eq ptr %t223, null
|
|
br i1 %t224, label %panic61, label %ok62
|
|
panic61:
|
|
call void @finch_panic(ptr @.str.48, i64 70, ptr @.str.49)
|
|
unreachable
|
|
ok62:
|
|
%t225 = getelementptr inbounds %S.main.Loader, ptr %t223, i32 0, i32 4
|
|
%t226 = load { ptr, i64, i64 }, ptr %t225
|
|
store { ptr, i64, i64 } %t226, ptr %a228
|
|
store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a229
|
|
call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229)
|
|
%t230 = load { ptr, i64, i64 }, ptr %a227
|
|
%t231 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t230, ptr %a233
|
|
store { ptr, i64, i64 } %t231, ptr %a234
|
|
call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234)
|
|
%t235 = load { ptr, i64, i64 }, ptr %a232
|
|
store { ptr, i64, i64 } %t235, ptr %a237
|
|
store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a238
|
|
call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238)
|
|
%t239 = load { ptr, i64, i64 }, ptr %a236
|
|
%t240 = load ptr, ptr %a1
|
|
%t241 = icmp eq ptr %t240, null
|
|
br i1 %t241, label %panic63, label %ok64
|
|
panic63:
|
|
call void @finch_panic(ptr @.str.52, i64 70, ptr @.str.53)
|
|
unreachable
|
|
ok64:
|
|
%t242 = getelementptr inbounds %S.main.Loader, ptr %t240, i32 0, i32 3
|
|
%t243 = load { ptr, i64, i64 }, ptr %t242
|
|
store { ptr, i64, i64 } %t239, ptr %a245
|
|
store { ptr, i64, i64 } %t243, ptr %a246
|
|
call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246)
|
|
%t247 = load { ptr, i64, i64 }, ptr %a244
|
|
store { ptr, i64, i64 } %t247, ptr %a249
|
|
store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a250
|
|
call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250)
|
|
%t251 = load { ptr, i64, i64 }, ptr %a248
|
|
ret { ptr, i64, i64 } %t251
|
|
endif60:
|
|
%t252 = load ptr, ptr %a1
|
|
%t253 = icmp eq ptr %t252, null
|
|
br i1 %t253, label %panic65, label %ok66
|
|
panic65:
|
|
call void @finch_panic(ptr @.str.55, i64 72, ptr @.str.56)
|
|
unreachable
|
|
ok66:
|
|
%t254 = getelementptr inbounds %S.main.Loader, ptr %t252, i32 0, i32 4
|
|
%t255 = load { ptr, i64, i64 }, ptr %t254
|
|
store { ptr, i64, i64 } %t255, ptr %a257
|
|
store { ptr, i64, i64 } { ptr @.str.57, i64 1, i64 0 }, ptr %a258
|
|
call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258)
|
|
%t259 = load { ptr, i64, i64 }, ptr %a256
|
|
%t260 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t259, ptr %a262
|
|
store { ptr, i64, i64 } %t260, ptr %a263
|
|
call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263)
|
|
%t264 = load { ptr, i64, i64 }, ptr %a261
|
|
store { ptr, i64, i64 } %t264, ptr %a266
|
|
store { ptr, i64, i64 } { ptr @.str.58, i64 4, i64 0 }, ptr %a267
|
|
call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267)
|
|
%t268 = load { ptr, i64, i64 }, ptr %a265
|
|
store { ptr, i64, i64 } %t268, ptr %a269
|
|
%t270 = call i32 @finch_file_exists(ptr %a269)
|
|
%t271 = icmp ne i32 %t270, 0
|
|
br i1 %t271, label %then67, label %endif69
|
|
then67:
|
|
%t272 = load ptr, ptr %a1
|
|
%t273 = icmp eq ptr %t272, null
|
|
br i1 %t273, label %panic70, label %ok71
|
|
panic70:
|
|
call void @finch_panic(ptr @.str.59, i64 73, ptr @.str.60)
|
|
unreachable
|
|
ok71:
|
|
%t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 4
|
|
%t275 = load { ptr, i64, i64 }, ptr %t274
|
|
store { ptr, i64, i64 } %t275, ptr %a277
|
|
store { ptr, i64, i64 } { ptr @.str.61, i64 1, i64 0 }, ptr %a278
|
|
call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278)
|
|
%t279 = load { ptr, i64, i64 }, ptr %a276
|
|
%t280 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t279, ptr %a282
|
|
store { ptr, i64, i64 } %t280, ptr %a283
|
|
call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283)
|
|
%t284 = load { ptr, i64, i64 }, ptr %a281
|
|
store { ptr, i64, i64 } %t284, ptr %a286
|
|
store { ptr, i64, i64 } { ptr @.str.62, i64 4, i64 0 }, ptr %a287
|
|
call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287)
|
|
%t288 = load { ptr, i64, i64 }, ptr %a285
|
|
ret { ptr, i64, i64 } %t288
|
|
endif69:
|
|
br label %endif53
|
|
endif53:
|
|
%t289 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t289, ptr %a290
|
|
call void @finch_str_copy(ptr %a291, ptr %a290)
|
|
%t292 = load { ptr, i64, i64 }, ptr %a291
|
|
ret { ptr, i64, i64 } %t292
|
|
}
|
|
|
|
define internal void @finch.copy.arr_str(ptr %dst, ptr %src) {
|
|
entry:
|
|
%a5 = alloca i64, align 16
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t1 = load ptr, ptr %dst
|
|
%t2 = load ptr, ptr %src
|
|
%t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1
|
|
%t4 = load i64, ptr %t3
|
|
store i64 0, ptr %a5
|
|
br label %n.cond82
|
|
n.cond82:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body83, label %n.end84
|
|
n.body83:
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 %t6
|
|
call void @finch_str_copy(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond82
|
|
n.end84:
|
|
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.cond90
|
|
n.cond90:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body91, label %n.end92
|
|
n.body91:
|
|
%t8 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds %S.ast.Type, ptr %t2, i64 %t6
|
|
call void @finch.copy.S_ast_Type(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond90
|
|
n.end92:
|
|
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.cond87
|
|
n.cond87:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body88, label %n.end89
|
|
n.body88:
|
|
%t8 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds %S.ast.Node, ptr %t2, i64 %t6
|
|
call void @finch.copy.S_ast_Node(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond87
|
|
n.end89:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_ast_Program(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.ast.Program, ptr %src
|
|
store %S.ast.Program %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 2
|
|
call void @finch.copy.arr_str(ptr %t6, ptr %t7)
|
|
%t8 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 3
|
|
%t9 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 3
|
|
call void @finch.copy.arr_str(ptr %t8, ptr %t9)
|
|
%t10 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 4
|
|
%t11 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 4
|
|
call void @finch.copy.arr_str(ptr %t10, ptr %t11)
|
|
%t12 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 5
|
|
%t13 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 5
|
|
call void @finch.copy.arr_str(ptr %t12, ptr %t13)
|
|
%t14 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 6
|
|
%t15 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 6
|
|
call void @finch.copy.arr_S_ast_Node(ptr %t14, ptr %t15)
|
|
%t16 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 7
|
|
%t17 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 7
|
|
call void @finch.copy.arr_S_ast_Node(ptr %t16, ptr %t17)
|
|
%t18 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 8
|
|
%t19 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 8
|
|
call void @finch.copy.arr_S_ast_Node(ptr %t18, ptr %t19)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca i64, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca %S.ast.Program, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca %S.ast.Program, align 16
|
|
%a107 = alloca %S.ast.Program, align 16
|
|
%a113 = alloca i64, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca i64, align 16
|
|
%a130 = alloca i64, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
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 i1 %t8, label %then72, label %endif74
|
|
then72:
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t10 = load i64, ptr %t9
|
|
%t11 = icmp sgt i64 %t10, 0
|
|
br i1 %t11, label %then75, label %else76
|
|
then75:
|
|
%t12 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.63, i64 30, i64 0 }, ptr %a14
|
|
store { ptr, i64, i64 } %t12, ptr %a15
|
|
call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t16, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.64, i64 14, i64 0 }, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
%t21 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t20, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.65, i64 1, i64 0 }, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
%t30 = extractvalue { ptr, i64, i64 } %t29, 1
|
|
%t31 = trunc i64 %t30 to i32
|
|
%t32 = extractvalue { ptr, i64, i64 } %t29, 0
|
|
%t33 = icmp eq ptr %t32, null
|
|
%t34 = select i1 %t33, ptr @.str.66, ptr %t32
|
|
%t35 = call i32 (ptr, ...) @printf(ptr @.str.67, i32 %t31, ptr %t34)
|
|
%t36 = call i32 (ptr, ...) @printf(ptr @.str.68)
|
|
br label %endif77
|
|
else76:
|
|
%t37 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.69, i64 19, i64 0 }, ptr %a39
|
|
store { ptr, i64, i64 } %t37, ptr %a40
|
|
call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a38
|
|
store { ptr, i64, i64 } %t41, ptr %a43
|
|
store { ptr, i64, i64 } { ptr @.str.70, i64 1, i64 0 }, ptr %a44
|
|
call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44)
|
|
%t45 = load { ptr, i64, i64 }, ptr %a42
|
|
%t46 = extractvalue { ptr, i64, i64 } %t45, 1
|
|
%t47 = trunc i64 %t46 to i32
|
|
%t48 = extractvalue { ptr, i64, i64 } %t45, 0
|
|
%t49 = icmp eq ptr %t48, null
|
|
%t50 = select i1 %t49, ptr @.str.71, ptr %t48
|
|
%t51 = call i32 (ptr, ...) @printf(ptr @.str.72, i32 %t47, ptr %t50)
|
|
%t52 = call i32 (ptr, ...) @printf(ptr @.str.73)
|
|
br label %endif77
|
|
endif77:
|
|
%t53 = trunc i64 1 to i32
|
|
%t54 = call i32 @fflush(ptr null)
|
|
call void @exit(i32 %t53)
|
|
br label %endif74
|
|
endif74:
|
|
%t55 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
call void @finch_read_file(ptr %a57, ptr %a56, ptr @.str.74, i64 88)
|
|
%t58 = load { ptr, i64, i64 }, ptr %a57
|
|
store { ptr, i64, i64 } %t58, ptr %a59
|
|
%t60 = load ptr, ptr %a1
|
|
%t61 = icmp eq ptr %t60, null
|
|
br i1 %t61, label %panic78, label %ok79
|
|
panic78:
|
|
call void @finch_panic(ptr @.str.75, i64 89, ptr @.str.76)
|
|
unreachable
|
|
ok79:
|
|
%t62 = getelementptr inbounds %S.main.Loader, ptr %t60, i32 0, i32 1
|
|
%t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1
|
|
%t64 = load i64, ptr %t63
|
|
store i64 %t64, ptr %a65
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = icmp eq ptr %t66, null
|
|
br i1 %t67, label %panic80, label %ok81
|
|
panic80:
|
|
call void @finch_panic(ptr @.str.77, i64 90, ptr @.str.78)
|
|
unreachable
|
|
ok81:
|
|
%t68 = getelementptr inbounds %S.main.Loader, ptr %t66, i32 0, i32 1
|
|
%t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1
|
|
%t70 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t70, ptr %a71
|
|
call void @finch_str_copy(ptr %a72, ptr %a71)
|
|
%t73 = load { ptr, i64, i64 }, ptr %a72
|
|
%t74 = load i64, ptr %t69
|
|
%t75 = add i64 %t74, 1
|
|
call void @finch_arr_reserve(ptr %t68, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t76 = load ptr, ptr %t68
|
|
%t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74
|
|
store { ptr, i64, i64 } %t73, ptr %t77
|
|
store i64 %t75, ptr %t69
|
|
%t78 = load { ptr, i64, i64 }, ptr %a59
|
|
%t79 = load { ptr, i64, i64 }, ptr %a2
|
|
%t80 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79)
|
|
%t81 = load i64, ptr %a65
|
|
%t82 = load { ptr, i64, i64 }, ptr %a2
|
|
%t83 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t80, i64 %t81, { ptr, i64, i64 } %t82)
|
|
store %S.ast.Program %t83, ptr %a84
|
|
%t85 = load { ptr, i64, i64 }, ptr %a3
|
|
%t86 = getelementptr inbounds %S.ast.Program, ptr %a84, i32 0, i32 0
|
|
store { ptr, i64, i64 } %t85, ptr %a87
|
|
call void @finch_str_copy(ptr %a88, ptr %a87)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a88
|
|
store { ptr, i64, i64 } %t89, ptr %t86
|
|
%t90 = load { ptr, i64, i64 }, ptr %a2
|
|
%t91 = getelementptr inbounds %S.ast.Program, ptr %a84, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t90, ptr %a92
|
|
call void @finch_str_copy(ptr %a93, ptr %a92)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a93
|
|
store { ptr, i64, i64 } %t94, ptr %t91
|
|
%t95 = getelementptr inbounds %S.ast.Program, ptr %a84, i32 0, i32 2
|
|
%t96 = load { ptr, i64, i64 }, ptr %t95
|
|
store { ptr, i64, i64 } %t96, ptr %a97
|
|
call void @finch.copy.arr_str(ptr %a98, ptr %a97)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a98
|
|
store { ptr, i64, i64 } %t99, ptr %a100
|
|
%t101 = load ptr, ptr %a1
|
|
%t102 = icmp eq ptr %t101, null
|
|
br i1 %t102, label %panic85, label %ok86
|
|
panic85:
|
|
call void @finch_panic(ptr @.str.79, i64 95, ptr @.str.80)
|
|
unreachable
|
|
ok86:
|
|
%t103 = getelementptr inbounds %S.main.Loader, ptr %t101, i32 0, i32 0
|
|
%t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1
|
|
%t105 = load %S.ast.Program, ptr %a84
|
|
store %S.ast.Program %t105, ptr %a106
|
|
call void @finch.copy.S_ast_Program(ptr %a107, ptr %a106)
|
|
%t108 = load %S.ast.Program, ptr %a107
|
|
%t109 = load i64, ptr %t104
|
|
%t110 = add i64 %t109, 1
|
|
call void @finch_arr_reserve(ptr %t103, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64))
|
|
%t111 = load ptr, ptr %t103
|
|
%t112 = getelementptr inbounds %S.ast.Program, ptr %t111, i64 %t109
|
|
store %S.ast.Program %t108, ptr %t112
|
|
store i64 %t110, ptr %t104
|
|
store i64 0, ptr %a113
|
|
br label %each.cond93
|
|
each.cond93:
|
|
%t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a100, i32 0, i32 1
|
|
%t115 = load i64, ptr %t114
|
|
%t116 = load i64, ptr %a113
|
|
%t117 = icmp slt i64 %t116, %t115
|
|
br i1 %t117, label %each.body94, label %each.end96
|
|
each.body94:
|
|
%t118 = load ptr, ptr %a100
|
|
%t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116
|
|
%t120 = load { ptr, i64, i64 }, ptr %t119
|
|
store { ptr, i64, i64 } %t120, ptr %a121
|
|
%t122 = load ptr, ptr %a1
|
|
%t123 = icmp eq ptr %t122, null
|
|
br i1 %t123, label %panic97, label %ok98
|
|
panic97:
|
|
call void @finch_panic(ptr @.str.81, i64 97, ptr @.str.82)
|
|
unreachable
|
|
ok98:
|
|
%t124 = getelementptr inbounds %S.main.Loader, ptr %t122, i32 0, i32 2
|
|
%t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i32 0, i32 1
|
|
%t126 = load { ptr, i64, i64 }, ptr %a121
|
|
store i64 -1, ptr %a127
|
|
%t128 = load i64, ptr %t125
|
|
%t129 = load ptr, ptr %t124
|
|
store i64 0, ptr %a130
|
|
br label %find.cond99
|
|
find.cond99:
|
|
%t131 = load i64, ptr %a130
|
|
%t132 = icmp slt i64 %t131, %t128
|
|
br i1 %t132, label %find.body100, label %find.end103
|
|
find.body100:
|
|
%t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t131
|
|
%t134 = load { ptr, i64, i64 }, ptr %t133
|
|
store { ptr, i64, i64 } %t134, ptr %a135
|
|
store { ptr, i64, i64 } %t126, ptr %a136
|
|
%t137 = call i32 @finch_str_eq(ptr %a135, ptr %a136)
|
|
%t138 = icmp ne i32 %t137, 0
|
|
br i1 %t138, label %find.hit101, label %find.next102
|
|
find.hit101:
|
|
store i64 %t131, ptr %a127
|
|
br label %find.end103
|
|
find.next102:
|
|
%t139 = add i64 %t131, 1
|
|
store i64 %t139, ptr %a130
|
|
br label %find.cond99
|
|
find.end103:
|
|
%t140 = load i64, ptr %a127
|
|
%t141 = icmp sge i64 %t140, 0
|
|
%t142 = xor i1 %t141, true
|
|
br i1 %t142, label %then104, label %endif106
|
|
then104:
|
|
%t143 = load ptr, ptr %a1
|
|
%t144 = icmp eq ptr %t143, null
|
|
br i1 %t144, label %panic107, label %ok108
|
|
panic107:
|
|
call void @finch_panic(ptr @.str.83, i64 98, ptr @.str.84)
|
|
unreachable
|
|
ok108:
|
|
%t145 = getelementptr inbounds %S.main.Loader, ptr %t143, i32 0, i32 2
|
|
%t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1
|
|
%t147 = load { ptr, i64, i64 }, ptr %a121
|
|
store { ptr, i64, i64 } %t147, ptr %a148
|
|
call void @finch_str_copy(ptr %a149, ptr %a148)
|
|
%t150 = load { ptr, i64, i64 }, ptr %a149
|
|
%t151 = load i64, ptr %t146
|
|
%t152 = add i64 %t151, 1
|
|
call void @finch_arr_reserve(ptr %t145, i64 %t152, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t153 = load ptr, ptr %t145
|
|
%t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i64 %t151
|
|
store { ptr, i64, i64 } %t150, ptr %t154
|
|
store i64 %t152, ptr %t146
|
|
%t155 = load ptr, ptr %a1
|
|
%t156 = load ptr, ptr %a1
|
|
%t157 = load { ptr, i64, i64 }, ptr %a2
|
|
%t158 = load { ptr, i64, i64 }, ptr %a121
|
|
%t159 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t156, { ptr, i64, i64 } %t157, { ptr, i64, i64 } %t158)
|
|
%t160 = load { ptr, i64, i64 }, ptr %a121
|
|
call void @finch.main.load(ptr %t155, { ptr, i64, i64 } %t159, { ptr, i64, i64 } %t160)
|
|
br label %endif106
|
|
endif106:
|
|
br label %each.step95
|
|
each.step95:
|
|
%t161 = load i64, ptr %a113
|
|
%t162 = add i64 %t161, 1
|
|
store i64 %t162, ptr %a113
|
|
br label %each.cond93
|
|
each.end96:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.main.usage() {
|
|
entry:
|
|
|
|
%t1 = extractvalue { ptr, i64, i64 } { ptr @.str.85, i64 41, i64 0 }, 1
|
|
%t2 = trunc i64 %t1 to i32
|
|
%t3 = extractvalue { ptr, i64, i64 } { ptr @.str.85, i64 41, i64 0 }, 0
|
|
%t4 = icmp eq ptr %t3, null
|
|
%t5 = select i1 %t4, ptr @.str.86, ptr %t3
|
|
%t6 = call i32 (ptr, ...) @printf(ptr @.str.87, i32 %t2, ptr %t5)
|
|
%t7 = call i32 (ptr, ...) @printf(ptr @.str.88)
|
|
%t8 = extractvalue { ptr, i64, i64 } { ptr @.str.89, i64 6, i64 0 }, 1
|
|
%t9 = trunc i64 %t8 to i32
|
|
%t10 = extractvalue { ptr, i64, i64 } { ptr @.str.89, i64 6, i64 0 }, 0
|
|
%t11 = icmp eq ptr %t10, null
|
|
%t12 = select i1 %t11, ptr @.str.90, ptr %t10
|
|
%t13 = call i32 (ptr, ...) @printf(ptr @.str.91, i32 %t9, ptr %t12)
|
|
%t14 = call i32 (ptr, ...) @printf(ptr @.str.92)
|
|
%t15 = extractvalue { ptr, i64, i64 } { ptr @.str.93, i64 60, i64 0 }, 1
|
|
%t16 = trunc i64 %t15 to i32
|
|
%t17 = extractvalue { ptr, i64, i64 } { ptr @.str.93, i64 60, i64 0 }, 0
|
|
%t18 = icmp eq ptr %t17, null
|
|
%t19 = select i1 %t18, ptr @.str.94, ptr %t17
|
|
%t20 = call i32 (ptr, ...) @printf(ptr @.str.95, i32 %t16, ptr %t19)
|
|
%t21 = call i32 (ptr, ...) @printf(ptr @.str.96)
|
|
%t22 = extractvalue { ptr, i64, i64 } { ptr @.str.97, i64 52, i64 0 }, 1
|
|
%t23 = trunc i64 %t22 to i32
|
|
%t24 = extractvalue { ptr, i64, i64 } { ptr @.str.97, i64 52, i64 0 }, 0
|
|
%t25 = icmp eq ptr %t24, null
|
|
%t26 = select i1 %t25, ptr @.str.98, ptr %t24
|
|
%t27 = call i32 (ptr, ...) @printf(ptr @.str.99, i32 %t23, ptr %t26)
|
|
%t28 = call i32 (ptr, ...) @printf(ptr @.str.100)
|
|
%t29 = extractvalue { ptr, i64, i64 } { ptr @.str.101, i64 54, i64 0 }, 1
|
|
%t30 = trunc i64 %t29 to i32
|
|
%t31 = extractvalue { ptr, i64, i64 } { ptr @.str.101, i64 54, i64 0 }, 0
|
|
%t32 = icmp eq ptr %t31, null
|
|
%t33 = select i1 %t32, ptr @.str.102, ptr %t31
|
|
%t34 = call i32 (ptr, ...) @printf(ptr @.str.103, i32 %t30, ptr %t33)
|
|
%t35 = call i32 (ptr, ...) @printf(ptr @.str.104)
|
|
%t36 = extractvalue { ptr, i64, i64 } { ptr @.str.105, i64 53, i64 0 }, 1
|
|
%t37 = trunc i64 %t36 to i32
|
|
%t38 = extractvalue { ptr, i64, i64 } { ptr @.str.105, i64 53, i64 0 }, 0
|
|
%t39 = icmp eq ptr %t38, null
|
|
%t40 = select i1 %t39, ptr @.str.106, ptr %t38
|
|
%t41 = call i32 (ptr, ...) @printf(ptr @.str.107, i32 %t37, ptr %t40)
|
|
%t42 = call i32 (ptr, ...) @printf(ptr @.str.108)
|
|
%t43 = extractvalue { ptr, i64, i64 } { ptr @.str.109, i64 8, i64 0 }, 1
|
|
%t44 = trunc i64 %t43 to i32
|
|
%t45 = extractvalue { ptr, i64, i64 } { ptr @.str.109, i64 8, i64 0 }, 0
|
|
%t46 = icmp eq ptr %t45, null
|
|
%t47 = select i1 %t46, ptr @.str.110, ptr %t45
|
|
%t48 = call i32 (ptr, ...) @printf(ptr @.str.111, i32 %t44, ptr %t47)
|
|
%t49 = call i32 (ptr, ...) @printf(ptr @.str.112)
|
|
%t50 = extractvalue { ptr, i64, i64 } { ptr @.str.113, i64 53, i64 0 }, 1
|
|
%t51 = trunc i64 %t50 to i32
|
|
%t52 = extractvalue { ptr, i64, i64 } { ptr @.str.113, i64 53, i64 0 }, 0
|
|
%t53 = icmp eq ptr %t52, null
|
|
%t54 = select i1 %t53, ptr @.str.114, ptr %t52
|
|
%t55 = call i32 (ptr, ...) @printf(ptr @.str.115, i32 %t51, ptr %t54)
|
|
%t56 = call i32 (ptr, ...) @printf(ptr @.str.116)
|
|
%t57 = extractvalue { ptr, i64, i64 } { ptr @.str.117, i64 76, i64 0 }, 1
|
|
%t58 = trunc i64 %t57 to i32
|
|
%t59 = extractvalue { ptr, i64, i64 } { ptr @.str.117, i64 76, i64 0 }, 0
|
|
%t60 = icmp eq ptr %t59, null
|
|
%t61 = select i1 %t60, ptr @.str.118, ptr %t59
|
|
%t62 = call i32 (ptr, ...) @printf(ptr @.str.119, i32 %t58, ptr %t61)
|
|
%t63 = call i32 (ptr, ...) @printf(ptr @.str.120)
|
|
%t64 = extractvalue { ptr, i64, i64 } { ptr @.str.121, i64 57, i64 0 }, 1
|
|
%t65 = trunc i64 %t64 to i32
|
|
%t66 = extractvalue { ptr, i64, i64 } { ptr @.str.121, i64 57, i64 0 }, 0
|
|
%t67 = icmp eq ptr %t66, null
|
|
%t68 = select i1 %t67, ptr @.str.122, ptr %t66
|
|
%t69 = call i32 (ptr, ...) @printf(ptr @.str.123, i32 %t65, ptr %t68)
|
|
%t70 = call i32 (ptr, ...) @printf(ptr @.str.124)
|
|
%t71 = extractvalue { ptr, i64, i64 } { ptr @.str.125, i64 66, i64 0 }, 1
|
|
%t72 = trunc i64 %t71 to i32
|
|
%t73 = extractvalue { ptr, i64, i64 } { ptr @.str.125, i64 66, i64 0 }, 0
|
|
%t74 = icmp eq ptr %t73, null
|
|
%t75 = select i1 %t74, ptr @.str.126, ptr %t73
|
|
%t76 = call i32 (ptr, ...) @printf(ptr @.str.127, i32 %t72, ptr %t75)
|
|
%t77 = call i32 (ptr, ...) @printf(ptr @.str.128)
|
|
%t78 = extractvalue { ptr, i64, i64 } { ptr @.str.129, i64 101, i64 0 }, 1
|
|
%t79 = trunc i64 %t78 to i32
|
|
%t80 = extractvalue { ptr, i64, i64 } { ptr @.str.129, i64 101, i64 0 }, 0
|
|
%t81 = icmp eq ptr %t80, null
|
|
%t82 = select i1 %t81, ptr @.str.130, ptr %t80
|
|
%t83 = call i32 (ptr, ...) @printf(ptr @.str.131, i32 %t79, ptr %t82)
|
|
%t84 = call i32 (ptr, ...) @printf(ptr @.str.132)
|
|
%t85 = extractvalue { ptr, i64, i64 } { ptr @.str.133, i64 78, i64 0 }, 1
|
|
%t86 = trunc i64 %t85 to i32
|
|
%t87 = extractvalue { ptr, i64, i64 } { ptr @.str.133, i64 78, i64 0 }, 0
|
|
%t88 = icmp eq ptr %t87, null
|
|
%t89 = select i1 %t88, ptr @.str.134, ptr %t87
|
|
%t90 = call i32 (ptr, ...) @printf(ptr @.str.135, i32 %t86, ptr %t89)
|
|
%t91 = call i32 (ptr, ...) @printf(ptr @.str.136)
|
|
%t92 = trunc i64 1 to i32
|
|
%t93 = call i32 @fflush(ptr null)
|
|
call void @exit(i32 %t92)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.platform.Target, ptr %src
|
|
store %S.platform.Target %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.platform.Target, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.platform.Target, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.platform.Target, ptr %dst, i32 0, i32 6
|
|
%t5 = getelementptr inbounds %S.platform.Target, ptr %src, i32 0, i32 6
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.platform.Target, ptr %dst, i32 0, i32 7
|
|
%t7 = getelementptr inbounds %S.platform.Target, ptr %src, i32 0, i32 7
|
|
call void @finch_str_copy(ptr %t6, ptr %t7)
|
|
%t8 = getelementptr inbounds %S.platform.Target, ptr %dst, i32 0, i32 8
|
|
%t9 = getelementptr inbounds %S.platform.Target, ptr %src, i32 0, i32 8
|
|
call void @finch_str_copy(ptr %t8, ptr %t9)
|
|
ret void
|
|
}
|
|
|
|
define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca i1, align 16
|
|
%a78 = alloca i1, align 16
|
|
%a79 = alloca i1, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca i64, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca %S.platform.Target, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca { ptr, i64, i64 }, align 16
|
|
%a301 = alloca { ptr, i64, i64 }, align 16
|
|
%a305 = alloca { ptr, i64, i64 }, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca { ptr, i64, i64 }, align 16
|
|
%a316 = alloca { ptr, i64, i64 }, align 16
|
|
%a317 = alloca { ptr, i64, i64 }, align 16
|
|
%a318 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a328 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a336 = alloca { ptr, i64, i64 }, align 16
|
|
%a337 = alloca { ptr, i64, i64 }, align 16
|
|
%a338 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca { ptr, i64, i64 }, align 16
|
|
%a346 = alloca { ptr, i64, i64 }, align 16
|
|
%a347 = alloca { ptr, i64, i64 }, align 16
|
|
%a349 = alloca %S.main.Loader, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a377 = alloca { ptr, i64, i64 }, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a388 = alloca i64, align 16
|
|
%a396 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a403 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a423 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a428 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca i64, align 16
|
|
%a437 = alloca { ptr, i64, i64 }, align 16
|
|
%a444 = alloca { ptr, i64, i64 }, align 16
|
|
%a445 = alloca { ptr, i64, i64 }, align 16
|
|
%a454 = alloca { ptr, i64, i64 }, align 16
|
|
%a455 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a458 = alloca { ptr, i64, i64 }, align 16
|
|
%a460 = alloca { ptr, i64, i64 }, align 16
|
|
%a462 = alloca { ptr, i64, i64 }, align 16
|
|
%a463 = alloca { ptr, i64, i64 }, align 16
|
|
%a465 = alloca { ptr, i64, i64 }, align 16
|
|
%a467 = alloca i64, align 16
|
|
%a475 = alloca %S.ast.Program, align 16
|
|
%a479 = alloca { ptr, i64, i64 }, align 16
|
|
%a482 = alloca i64, align 16
|
|
%a485 = alloca i64, align 16
|
|
%a490 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca { ptr, i64, i64 }, align 16
|
|
%a500 = alloca { ptr, i64, i64 }, align 16
|
|
%a501 = alloca { ptr, i64, i64 }, align 16
|
|
%a510 = alloca i64, align 16
|
|
%a522 = alloca i64, align 16
|
|
%a525 = alloca i64, align 16
|
|
%a530 = alloca { ptr, i64, i64 }, align 16
|
|
%a531 = alloca { ptr, i64, i64 }, align 16
|
|
%a547 = alloca { ptr, i64, i64 }, align 16
|
|
%a548 = alloca { ptr, i64, i64 }, align 16
|
|
%a563 = alloca { ptr, i64, i64 }, align 16
|
|
%a564 = alloca { ptr, i64, i64 }, align 16
|
|
%a575 = alloca { ptr, i64, i64 }, align 16
|
|
%a576 = alloca { ptr, i64, i64 }, align 16
|
|
%a586 = alloca i64, align 16
|
|
%a594 = alloca { ptr, i64, i64 }, align 16
|
|
%a596 = alloca { ptr, i64, i64 }, align 16
|
|
%a597 = alloca { ptr, i64, i64 }, align 16
|
|
%a598 = alloca { ptr, i64, i64 }, align 16
|
|
%a602 = alloca { ptr, i64, i64 }, align 16
|
|
%a603 = alloca { ptr, i64, i64 }, align 16
|
|
%a604 = alloca { ptr, i64, i64 }, align 16
|
|
%a609 = alloca { ptr, i64, i64 }, align 16
|
|
%a610 = alloca { ptr, i64, i64 }, align 16
|
|
%a611 = alloca { ptr, i64, i64 }, align 16
|
|
%a617 = alloca { ptr, i64, i64 }, align 16
|
|
%a618 = alloca { ptr, i64, i64 }, align 16
|
|
%a619 = alloca { ptr, i64, i64 }, align 16
|
|
%a622 = alloca { ptr, i64, i64 }, align 16
|
|
%a623 = alloca { ptr, i64, i64 }, align 16
|
|
%a624 = alloca { ptr, i64, i64 }, align 16
|
|
%a632 = alloca { ptr, i64, i64 }, align 16
|
|
%a633 = alloca { ptr, i64, i64 }, align 16
|
|
%a643 = alloca { ptr, i64, i64 }, align 16
|
|
%a648 = alloca { ptr, i64, i64 }, align 16
|
|
%a649 = alloca { ptr, i64, i64 }, align 16
|
|
%a663 = alloca { ptr, i64, i64 }, align 16
|
|
%a672 = alloca %S.cimport.CImports, align 16
|
|
%a686 = alloca { ptr, i64, i64 }, align 16
|
|
%a688 = alloca { ptr, i64, i64 }, align 16
|
|
%a689 = alloca { ptr, i64, i64 }, align 16
|
|
%a693 = alloca %S.platform.Target, align 16
|
|
%a694 = alloca %S.platform.Target, align 16
|
|
%a698 = alloca { ptr, i64, i64 }, align 16
|
|
%a700 = alloca { ptr, i64, i64 }, align 16
|
|
%a701 = 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
|
|
%a721 = alloca { ptr, i64, i64 }, align 16
|
|
%a732 = alloca { ptr, i64, i64 }, align 16
|
|
%a733 = alloca { ptr, i64, i64 }, align 16
|
|
%a734 = alloca { ptr, i64, i64 }, align 16
|
|
%a737 = alloca { ptr, i64, i64 }, align 16
|
|
%a748 = alloca { ptr, i64, i64 }, align 16
|
|
%a749 = alloca { ptr, i64, i64 }, align 16
|
|
%a750 = alloca { ptr, i64, i64 }, align 16
|
|
%a753 = alloca { ptr, i64, i64 }, align 16
|
|
%a757 = alloca { ptr, i64, i64 }, align 16
|
|
%a762 = alloca { ptr, i64, i64 }, align 16
|
|
%a773 = alloca { ptr, i64, i64 }, align 16
|
|
%a777 = alloca { ptr, i64, i64 }, align 16
|
|
%a778 = alloca { ptr, i64, i64 }, align 16
|
|
%a779 = alloca { ptr, i64, i64 }, align 16
|
|
%a782 = alloca { ptr, i64, i64 }, align 16
|
|
%a783 = alloca { ptr, i64, i64 }, align 16
|
|
%a787 = alloca { ptr, i64, i64 }, align 16
|
|
%a788 = alloca { ptr, i64, i64 }, align 16
|
|
%a792 = alloca { ptr, i64, i64 }, align 16
|
|
%a793 = alloca { ptr, i64, i64 }, align 16
|
|
%a797 = alloca { ptr, i64, i64 }, align 16
|
|
%a798 = alloca { ptr, i64, i64 }, align 16
|
|
%a802 = alloca { ptr, i64, i64 }, align 16
|
|
%a803 = alloca { ptr, i64, i64 }, align 16
|
|
%a809 = alloca { ptr, i64, i64 }, align 16
|
|
%a810 = alloca { ptr, i64, i64 }, align 16
|
|
%a818 = alloca { ptr, i64, i64 }, align 16
|
|
%a819 = alloca { ptr, i64, i64 }, align 16
|
|
%a822 = alloca { ptr, i64, i64 }, align 16
|
|
%a823 = alloca i64, align 16
|
|
%a831 = alloca { ptr, i64, i64 }, align 16
|
|
%a845 = alloca { ptr, i64, i64 }, align 16
|
|
%a846 = alloca { ptr, i64, i64 }, align 16
|
|
%a847 = alloca { ptr, i64, i64 }, align 16
|
|
%a849 = alloca { ptr, i64, i64 }, align 16
|
|
%a850 = alloca { ptr, i64, i64 }, align 16
|
|
%a851 = alloca { ptr, i64, i64 }, align 16
|
|
%a854 = alloca { ptr, i64, i64 }, align 16
|
|
%a855 = alloca { ptr, i64, i64 }, align 16
|
|
%a857 = alloca { ptr, i64, i64 }, align 16
|
|
%a858 = alloca { ptr, i64, i64 }, align 16
|
|
%a859 = alloca { ptr, i64, i64 }, align 16
|
|
%a861 = alloca { ptr, i64, i64 }, align 16
|
|
%a862 = alloca { ptr, i64, i64 }, align 16
|
|
%a864 = alloca i64, align 16
|
|
%a867 = alloca { ptr, i64, i64 }, align 16
|
|
%a868 = alloca { ptr, i64, i64 }, align 16
|
|
%a869 = alloca { ptr, i64, i64 }, align 16
|
|
%a871 = alloca { ptr, i64, i64 }, align 16
|
|
%a872 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t3 = load i64, ptr %t2
|
|
%t4 = icmp eq i64 %t3, 2
|
|
br label %logic.from109
|
|
logic.from109:
|
|
br i1 %t4, label %logic.rhs110, label %logic.end111
|
|
logic.rhs110:
|
|
%t5 = load { ptr, i64, i64 }, ptr %a1
|
|
%t6 = extractvalue { ptr, i64, i64 } %t5, 1
|
|
%t7 = icmp uge i64 1, %t6
|
|
br i1 %t7, label %range112, label %inrange113
|
|
range112:
|
|
call void @finch_panic_index(ptr @.str.137, i64 122, i64 1, i64 %t6)
|
|
unreachable
|
|
inrange113:
|
|
%t8 = extractvalue { ptr, i64, i64 } %t5, 0
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 1
|
|
%t10 = load { ptr, i64, i64 }, ptr %t9
|
|
store { ptr, i64, i64 } %t10, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.138, i64 7, i64 0 }, ptr %a12
|
|
%t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12)
|
|
%t14 = icmp ne i32 %t13, 0
|
|
br label %logic.from114
|
|
logic.from114:
|
|
br i1 %t14, label %logic.end116, label %logic.rhs115
|
|
logic.rhs115:
|
|
%t15 = load { ptr, i64, i64 }, ptr %a1
|
|
%t16 = extractvalue { ptr, i64, i64 } %t15, 1
|
|
%t17 = icmp uge i64 1, %t16
|
|
br i1 %t17, label %range117, label %inrange118
|
|
range117:
|
|
call void @finch_panic_index(ptr @.str.139, i64 122, i64 1, i64 %t16)
|
|
unreachable
|
|
inrange118:
|
|
%t18 = extractvalue { ptr, i64, i64 } %t15, 0
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1
|
|
%t20 = load { ptr, i64, i64 }, ptr %t19
|
|
store { ptr, i64, i64 } %t20, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.140, i64 9, i64 0 }, ptr %a22
|
|
%t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22)
|
|
%t24 = icmp ne i32 %t23, 0
|
|
br label %logic.rend119
|
|
logic.rend119:
|
|
br label %logic.end116
|
|
logic.end116:
|
|
%t25 = phi i1 [ true, %logic.from114 ], [ %t24, %logic.rend119 ]
|
|
br label %logic.rend120
|
|
logic.rend120:
|
|
br label %logic.end111
|
|
logic.end111:
|
|
%t26 = phi i1 [ false, %logic.from109 ], [ %t25, %logic.rend120 ]
|
|
br i1 %t26, label %then121, label %endif123
|
|
then121:
|
|
%t27 = extractvalue { ptr, i64, i64 } { ptr @.str.141, i64 46, i64 0 }, 1
|
|
%t28 = trunc i64 %t27 to i32
|
|
%t29 = extractvalue { ptr, i64, i64 } { ptr @.str.141, i64 46, i64 0 }, 0
|
|
%t30 = icmp eq ptr %t29, null
|
|
%t31 = select i1 %t30, ptr @.str.142, ptr %t29
|
|
%t32 = call i32 (ptr, ...) @printf(ptr @.str.143, i32 %t28, ptr %t31)
|
|
%t33 = call i32 (ptr, ...) @printf(ptr @.str.144)
|
|
ret i64 0
|
|
endif123:
|
|
%t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t35 = load i64, ptr %t34
|
|
%t36 = icmp slt i64 %t35, 3
|
|
br i1 %t36, label %then124, label %endif126
|
|
then124:
|
|
call void @finch.main.usage()
|
|
br label %endif126
|
|
endif126:
|
|
%t37 = load { ptr, i64, i64 }, ptr %a1
|
|
%t38 = extractvalue { ptr, i64, i64 } %t37, 1
|
|
%t39 = icmp uge i64 1, %t38
|
|
br i1 %t39, label %range127, label %inrange128
|
|
range127:
|
|
call void @finch_panic_index(ptr @.str.145, i64 129, i64 1, i64 %t38)
|
|
unreachable
|
|
inrange128:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 1
|
|
%t42 = load { ptr, i64, i64 }, ptr %t41
|
|
store { ptr, i64, i64 } %t42, ptr %a43
|
|
call void @finch_str_copy(ptr %a44, ptr %a43)
|
|
%t45 = load { ptr, i64, i64 }, ptr %a44
|
|
store { ptr, i64, i64 } %t45, ptr %a46
|
|
%t47 = load { ptr, i64, i64 }, ptr %a1
|
|
%t48 = extractvalue { ptr, i64, i64 } %t47, 1
|
|
%t49 = icmp uge i64 2, %t48
|
|
br i1 %t49, label %range129, label %inrange130
|
|
range129:
|
|
call void @finch_panic_index(ptr @.str.146, i64 130, i64 2, i64 %t48)
|
|
unreachable
|
|
inrange130:
|
|
%t50 = extractvalue { ptr, i64, i64 } %t47, 0
|
|
%t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 2
|
|
%t52 = load { ptr, i64, i64 }, ptr %t51
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
call void @finch_str_copy(ptr %a54, ptr %a53)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
%t57 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t57, ptr %a58
|
|
store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, ptr %a59
|
|
%t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59)
|
|
%t61 = icmp eq i32 %t60, 0
|
|
br label %logic.from131
|
|
logic.from131:
|
|
br i1 %t61, label %logic.rhs132, label %logic.end133
|
|
logic.rhs132:
|
|
%t62 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t62, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.148, i64 3, i64 0 }, ptr %a64
|
|
%t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64)
|
|
%t66 = icmp eq i32 %t65, 0
|
|
br label %logic.rend134
|
|
logic.rend134:
|
|
br label %logic.end133
|
|
logic.end133:
|
|
%t67 = phi i1 [ false, %logic.from131 ], [ %t66, %logic.rend134 ]
|
|
br label %logic.from135
|
|
logic.from135:
|
|
br i1 %t67, label %logic.rhs136, label %logic.end137
|
|
logic.rhs136:
|
|
%t68 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t68, ptr %a69
|
|
store { ptr, i64, i64 } { ptr @.str.149, i64 2, i64 0 }, ptr %a70
|
|
%t71 = call i32 @finch_str_eq(ptr %a69, ptr %a70)
|
|
%t72 = icmp eq i32 %t71, 0
|
|
br label %logic.rend138
|
|
logic.rend138:
|
|
br label %logic.end137
|
|
logic.end137:
|
|
%t73 = phi i1 [ false, %logic.from135 ], [ %t72, %logic.rend138 ]
|
|
br i1 %t73, label %then139, label %endif141
|
|
then139:
|
|
call void @finch.main.usage()
|
|
br label %endif141
|
|
endif141:
|
|
%t74 = load { ptr, i64, i64 }, ptr %a56
|
|
%t75 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t74)
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
store i1 false, ptr %a77
|
|
store i1 false, ptr %a78
|
|
store i1 false, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.150, i64 0, i64 0 }, ptr %a80
|
|
store { ptr, i64, i64 } { ptr @.str.151, i64 3, i64 0 }, ptr %a81
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a82
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a83
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a84
|
|
store i64 3, ptr %a85
|
|
br label %while.cond142
|
|
while.cond142:
|
|
%t86 = load i64, ptr %a85
|
|
%t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t88 = load i64, ptr %t87
|
|
%t89 = icmp slt i64 %t86, %t88
|
|
br i1 %t89, label %while.body143, label %while.end144
|
|
while.body143:
|
|
%t90 = load i64, ptr %a85
|
|
%t91 = load { ptr, i64, i64 }, ptr %a1
|
|
%t92 = extractvalue { ptr, i64, i64 } %t91, 1
|
|
%t93 = icmp uge i64 %t90, %t92
|
|
br i1 %t93, label %range145, label %inrange146
|
|
range145:
|
|
call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t90, i64 %t92)
|
|
unreachable
|
|
inrange146:
|
|
%t94 = extractvalue { ptr, i64, i64 } %t91, 0
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 %t90
|
|
%t96 = load { ptr, i64, i64 }, ptr %t95
|
|
store { ptr, i64, i64 } %t96, ptr %a97
|
|
call void @finch_str_copy(ptr %a98, ptr %a97)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a98
|
|
store { ptr, i64, i64 } %t99, ptr %a100
|
|
%t101 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t101, ptr %a102
|
|
store { ptr, i64, i64 } { ptr @.str.153, i64 3, i64 0 }, ptr %a103
|
|
%t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103)
|
|
%t105 = icmp ne i32 %t104, 0
|
|
br label %logic.from147
|
|
logic.from147:
|
|
br i1 %t105, label %logic.rhs148, label %logic.end149
|
|
logic.rhs148:
|
|
%t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %a84, i32 0, i32 1
|
|
%t107 = load i64, ptr %t106
|
|
%t108 = icmp sgt i64 %t107, 0
|
|
br label %logic.rend150
|
|
logic.rend150:
|
|
br label %logic.end149
|
|
logic.end149:
|
|
%t109 = phi i1 [ false, %logic.from147 ], [ %t108, %logic.rend150 ]
|
|
br i1 %t109, label %then151, label %else152
|
|
then151:
|
|
%t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a84, i32 0, i32 1
|
|
%t111 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t111, ptr %a112
|
|
call void @finch_str_copy(ptr %a113, ptr %a112)
|
|
%t114 = load { ptr, i64, i64 }, ptr %a113
|
|
%t115 = load i64, ptr %t110
|
|
%t116 = add i64 %t115, 1
|
|
call void @finch_arr_reserve(ptr %a84, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t117 = load ptr, ptr %a84
|
|
%t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115
|
|
store { ptr, i64, i64 } %t114, ptr %t118
|
|
store i64 %t116, ptr %t110
|
|
br label %endif153
|
|
else152:
|
|
%t119 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t119, ptr %a120
|
|
store { ptr, i64, i64 } { ptr @.str.154, i64 2, i64 0 }, ptr %a121
|
|
%t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121)
|
|
%t123 = icmp ne i32 %t122, 0
|
|
br label %logic.from154
|
|
logic.from154:
|
|
br i1 %t123, label %logic.rhs155, label %logic.end156
|
|
logic.rhs155:
|
|
%t124 = load i64, ptr %a85
|
|
%t125 = add i64 %t124, 1
|
|
%t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t127 = load i64, ptr %t126
|
|
%t128 = icmp slt i64 %t125, %t127
|
|
br label %logic.rend157
|
|
logic.rend157:
|
|
br label %logic.end156
|
|
logic.end156:
|
|
%t129 = phi i1 [ false, %logic.from154 ], [ %t128, %logic.rend157 ]
|
|
br label %logic.from158
|
|
logic.from158:
|
|
br i1 %t129, label %logic.rhs159, label %logic.end160
|
|
logic.rhs159:
|
|
%t130 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t130, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.155, i64 5, i64 0 }, ptr %a132
|
|
%t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132)
|
|
%t134 = icmp ne i32 %t133, 0
|
|
br label %logic.rend161
|
|
logic.rend161:
|
|
br label %logic.end160
|
|
logic.end160:
|
|
%t135 = phi i1 [ false, %logic.from158 ], [ %t134, %logic.rend161 ]
|
|
br i1 %t135, label %then162, label %else163
|
|
then162:
|
|
%t136 = load i64, ptr %a85
|
|
%t137 = add i64 %t136, 1
|
|
%t138 = load { ptr, i64, i64 }, ptr %a1
|
|
%t139 = extractvalue { ptr, i64, i64 } %t138, 1
|
|
%t140 = icmp uge i64 %t137, %t139
|
|
br i1 %t140, label %range165, label %inrange166
|
|
range165:
|
|
call void @finch_panic_index(ptr @.str.156, i64 149, i64 %t137, i64 %t139)
|
|
unreachable
|
|
inrange166:
|
|
%t141 = extractvalue { ptr, i64, i64 } %t138, 0
|
|
%t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t137
|
|
%t143 = load { ptr, i64, i64 }, ptr %t142
|
|
store { ptr, i64, i64 } %t143, ptr %a144
|
|
call void @finch_str_copy(ptr %a145, ptr %a144)
|
|
%t146 = load { ptr, i64, i64 }, ptr %a145
|
|
store { ptr, i64, i64 } %t146, ptr %a76
|
|
store i1 true, ptr %a77
|
|
%t147 = load i64, ptr %a85
|
|
%t148 = add i64 %t147, 1
|
|
store i64 %t148, ptr %a85
|
|
br label %endif164
|
|
else163:
|
|
%t149 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t149, ptr %a150
|
|
store { ptr, i64, i64 } { ptr @.str.157, i64 8, i64 0 }, ptr %a151
|
|
%t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151)
|
|
%t153 = icmp ne i32 %t152, 0
|
|
br label %logic.from167
|
|
logic.from167:
|
|
br i1 %t153, label %logic.rhs168, label %logic.end169
|
|
logic.rhs168:
|
|
%t154 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t154, ptr %a155
|
|
store { ptr, i64, i64 } { ptr @.str.158, i64 5, i64 0 }, ptr %a156
|
|
%t157 = call i32 @finch_str_eq(ptr %a155, ptr %a156)
|
|
%t158 = icmp ne i32 %t157, 0
|
|
br label %logic.rend170
|
|
logic.rend170:
|
|
br label %logic.end169
|
|
logic.end169:
|
|
%t159 = phi i1 [ false, %logic.from167 ], [ %t158, %logic.rend170 ]
|
|
br i1 %t159, label %then171, label %else172
|
|
then171:
|
|
store i1 true, ptr %a78
|
|
br label %endif173
|
|
else172:
|
|
%t160 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t160, ptr %a161
|
|
store { ptr, i64, i64 } { ptr @.str.159, i64 3, i64 0 }, ptr %a162
|
|
%t163 = call i32 @finch_str_eq(ptr %a161, ptr %a162)
|
|
%t164 = icmp ne i32 %t163, 0
|
|
br i1 %t164, label %then174, label %else175
|
|
then174:
|
|
store { ptr, i64, i64 } { ptr @.str.160, i64 3, i64 0 }, ptr %a81
|
|
br label %endif176
|
|
else175:
|
|
%t165 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t165, ptr %a166
|
|
store { ptr, i64, i64 } { ptr @.str.161, i64 2, i64 0 }, ptr %a167
|
|
%t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167)
|
|
%t169 = icmp ne i32 %t168, 0
|
|
br label %logic.from177
|
|
logic.from177:
|
|
br i1 %t169, label %logic.rhs178, label %logic.end179
|
|
logic.rhs178:
|
|
%t170 = load i64, ptr %a85
|
|
%t171 = add i64 %t170, 1
|
|
%t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t173 = load i64, ptr %t172
|
|
%t174 = icmp slt i64 %t171, %t173
|
|
br label %logic.rend180
|
|
logic.rend180:
|
|
br label %logic.end179
|
|
logic.end179:
|
|
%t175 = phi i1 [ false, %logic.from177 ], [ %t174, %logic.rend180 ]
|
|
br i1 %t175, label %then181, label %else182
|
|
then181:
|
|
%t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %a82, i32 0, i32 1
|
|
%t177 = load i64, ptr %a85
|
|
%t178 = add i64 %t177, 1
|
|
%t179 = load { ptr, i64, i64 }, ptr %a1
|
|
%t180 = extractvalue { ptr, i64, i64 } %t179, 1
|
|
%t181 = icmp uge i64 %t178, %t180
|
|
br i1 %t181, label %range184, label %inrange185
|
|
range184:
|
|
call void @finch_panic_index(ptr @.str.162, i64 157, i64 %t178, i64 %t180)
|
|
unreachable
|
|
inrange185:
|
|
%t182 = extractvalue { ptr, i64, i64 } %t179, 0
|
|
%t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178
|
|
%t184 = load { ptr, i64, i64 }, ptr %t183
|
|
store { ptr, i64, i64 } %t184, ptr %a185
|
|
call void @finch_str_copy(ptr %a186, ptr %a185)
|
|
%t187 = load { ptr, i64, i64 }, ptr %a186
|
|
%t188 = load i64, ptr %t176
|
|
%t189 = add i64 %t188, 1
|
|
call void @finch_arr_reserve(ptr %a82, i64 %t189, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t190 = load ptr, ptr %a82
|
|
%t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t188
|
|
store { ptr, i64, i64 } %t187, ptr %t191
|
|
store i64 %t189, ptr %t176
|
|
%t192 = load i64, ptr %a85
|
|
%t193 = add i64 %t192, 1
|
|
store i64 %t193, ptr %a85
|
|
br label %endif183
|
|
else182:
|
|
%t194 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t194, ptr %a195
|
|
store { ptr, i64, i64 } { ptr @.str.164, i64 2, i64 0 }, ptr %a197
|
|
%t198 = call i32 @finch_str_starts(ptr %a195, ptr %a197)
|
|
%t199 = icmp ne i32 %t198, 0
|
|
br label %logic.from186
|
|
logic.from186:
|
|
br i1 %t199, label %logic.rhs187, label %logic.end188
|
|
logic.rhs187:
|
|
%t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %a100, i32 0, i32 1
|
|
%t201 = load i64, ptr %t200
|
|
%t202 = icmp sgt i64 %t201, 2
|
|
br label %logic.rend189
|
|
logic.rend189:
|
|
br label %logic.end188
|
|
logic.end188:
|
|
%t203 = phi i1 [ false, %logic.from186 ], [ %t202, %logic.rend189 ]
|
|
br i1 %t203, label %then190, label %else191
|
|
then190:
|
|
%t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %a82, i32 0, i32 1
|
|
%t205 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t205, ptr %a206
|
|
%t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %a100, i32 0, i32 1
|
|
%t209 = load i64, ptr %t208
|
|
call void @finch_str_sub(ptr %a207, ptr %a206, i64 2, i64 %t209, ptr @.str.165, i64 160)
|
|
%t210 = load { ptr, i64, i64 }, ptr %a207
|
|
%t211 = load i64, ptr %t204
|
|
%t212 = add i64 %t211, 1
|
|
call void @finch_arr_reserve(ptr %a82, i64 %t212, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t213 = load ptr, ptr %a82
|
|
%t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t213, i64 %t211
|
|
store { ptr, i64, i64 } %t210, ptr %t214
|
|
store i64 %t212, ptr %t204
|
|
br label %endif192
|
|
else191:
|
|
%t215 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t215, ptr %a216
|
|
store { ptr, i64, i64 } { ptr @.str.166, i64 2, i64 0 }, ptr %a217
|
|
%t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217)
|
|
%t219 = icmp ne i32 %t218, 0
|
|
br label %logic.from193
|
|
logic.from193:
|
|
br i1 %t219, label %logic.rhs194, label %logic.end195
|
|
logic.rhs194:
|
|
%t220 = load i64, ptr %a85
|
|
%t221 = add i64 %t220, 1
|
|
%t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t223 = load i64, ptr %t222
|
|
%t224 = icmp slt i64 %t221, %t223
|
|
br label %logic.rend196
|
|
logic.rend196:
|
|
br label %logic.end195
|
|
logic.end195:
|
|
%t225 = phi i1 [ false, %logic.from193 ], [ %t224, %logic.rend196 ]
|
|
br i1 %t225, label %then197, label %else198
|
|
then197:
|
|
%t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %a83, i32 0, i32 1
|
|
%t227 = load i64, ptr %a85
|
|
%t228 = add i64 %t227, 1
|
|
%t229 = load { ptr, i64, i64 }, ptr %a1
|
|
%t230 = extractvalue { ptr, i64, i64 } %t229, 1
|
|
%t231 = icmp uge i64 %t228, %t230
|
|
br i1 %t231, label %range200, label %inrange201
|
|
range200:
|
|
call void @finch_panic_index(ptr @.str.167, i64 162, i64 %t228, i64 %t230)
|
|
unreachable
|
|
inrange201:
|
|
%t232 = extractvalue { ptr, i64, i64 } %t229, 0
|
|
%t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t228
|
|
%t234 = load { ptr, i64, i64 }, ptr %t233
|
|
store { ptr, i64, i64 } %t234, ptr %a235
|
|
call void @finch_str_copy(ptr %a236, ptr %a235)
|
|
%t237 = load { ptr, i64, i64 }, ptr %a236
|
|
%t238 = load i64, ptr %t226
|
|
%t239 = add i64 %t238, 1
|
|
call void @finch_arr_reserve(ptr %a83, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t240 = load ptr, ptr %a83
|
|
%t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238
|
|
store { ptr, i64, i64 } %t237, ptr %t241
|
|
store i64 %t239, ptr %t226
|
|
%t242 = load i64, ptr %a85
|
|
%t243 = add i64 %t242, 1
|
|
store i64 %t243, ptr %a85
|
|
br label %endif199
|
|
else198:
|
|
%t244 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t244, ptr %a245
|
|
store { ptr, i64, i64 } { ptr @.str.168, i64 2, i64 0 }, ptr %a246
|
|
%t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246)
|
|
%t248 = icmp ne i32 %t247, 0
|
|
br i1 %t248, label %then202, label %else203
|
|
then202:
|
|
store i1 true, ptr %a79
|
|
br label %endif204
|
|
else203:
|
|
%t249 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t249, ptr %a250
|
|
store { ptr, i64, i64 } { ptr @.str.169, i64 8, i64 0 }, ptr %a251
|
|
%t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251)
|
|
%t253 = icmp ne i32 %t252, 0
|
|
br label %logic.from205
|
|
logic.from205:
|
|
br i1 %t253, label %logic.rhs206, label %logic.end207
|
|
logic.rhs206:
|
|
%t254 = load i64, ptr %a85
|
|
%t255 = add i64 %t254, 1
|
|
%t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t257 = load i64, ptr %t256
|
|
%t258 = icmp slt i64 %t255, %t257
|
|
br label %logic.rend208
|
|
logic.rend208:
|
|
br label %logic.end207
|
|
logic.end207:
|
|
%t259 = phi i1 [ false, %logic.from205 ], [ %t258, %logic.rend208 ]
|
|
br i1 %t259, label %then209, label %else210
|
|
then209:
|
|
%t260 = load i64, ptr %a85
|
|
%t261 = add i64 %t260, 1
|
|
%t262 = load { ptr, i64, i64 }, ptr %a1
|
|
%t263 = extractvalue { ptr, i64, i64 } %t262, 1
|
|
%t264 = icmp uge i64 %t261, %t263
|
|
br i1 %t264, label %range212, label %inrange213
|
|
range212:
|
|
call void @finch_panic_index(ptr @.str.170, i64 167, i64 %t261, i64 %t263)
|
|
unreachable
|
|
inrange213:
|
|
%t265 = extractvalue { ptr, i64, i64 } %t262, 0
|
|
%t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 %t261
|
|
%t267 = load { ptr, i64, i64 }, ptr %t266
|
|
store { ptr, i64, i64 } %t267, ptr %a268
|
|
call void @finch_str_copy(ptr %a269, ptr %a268)
|
|
%t270 = load { ptr, i64, i64 }, ptr %a269
|
|
store { ptr, i64, i64 } %t270, ptr %a80
|
|
%t271 = load i64, ptr %a85
|
|
%t272 = add i64 %t271, 1
|
|
store i64 %t272, ptr %a85
|
|
br label %endif211
|
|
else210:
|
|
%t273 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t273, ptr %a274
|
|
store { ptr, i64, i64 } { ptr @.str.171, i64 3, i64 0 }, ptr %a275
|
|
%t276 = call i32 @finch_str_eq(ptr %a274, ptr %a275)
|
|
%t277 = icmp ne i32 %t276, 0
|
|
br i1 %t277, label %then214, label %else215
|
|
then214:
|
|
%t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a84, i32 0, i32 1
|
|
%t279 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t279, ptr %a280
|
|
call void @finch_str_copy(ptr %a281, ptr %a280)
|
|
%t282 = load { ptr, i64, i64 }, ptr %a281
|
|
%t283 = load i64, ptr %t278
|
|
%t284 = add i64 %t283, 1
|
|
call void @finch_arr_reserve(ptr %a84, i64 %t284, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t285 = load ptr, ptr %a84
|
|
%t286 = getelementptr inbounds { ptr, i64, i64 }, ptr %t285, i64 %t283
|
|
store { ptr, i64, i64 } %t282, ptr %t286
|
|
store i64 %t284, ptr %t278
|
|
br label %endif216
|
|
else215:
|
|
call void @finch.main.usage()
|
|
br label %endif216
|
|
endif216:
|
|
br label %endif211
|
|
endif211:
|
|
br label %endif204
|
|
endif204:
|
|
br label %endif199
|
|
endif199:
|
|
br label %endif192
|
|
endif192:
|
|
br label %endif183
|
|
endif183:
|
|
br label %endif176
|
|
endif176:
|
|
br label %endif173
|
|
endif173:
|
|
br label %endif164
|
|
endif164:
|
|
br label %endif153
|
|
endif153:
|
|
%t287 = load i64, ptr %a85
|
|
%t288 = add i64 %t287, 1
|
|
store i64 %t288, ptr %a85
|
|
br label %while.cond142
|
|
while.end144:
|
|
%t289 = load { ptr, i64, i64 }, ptr %a80
|
|
%t290 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t289)
|
|
store %S.platform.Target %t290, ptr %a291
|
|
%t292 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t292, ptr %a293
|
|
store { ptr, i64, i64 } { ptr @.str.172, i64 3, i64 0 }, ptr %a294
|
|
%t295 = call i32 @finch_str_eq(ptr %a293, ptr %a294)
|
|
%t296 = icmp ne i32 %t295, 0
|
|
br i1 %t296, label %then217, label %else218
|
|
then217:
|
|
%t297 = load { ptr, i64, i64 }, ptr %a56
|
|
%t298 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t297)
|
|
store { ptr, i64, i64 } { ptr @.str.173, i64 15, i64 0 }, ptr %a300
|
|
store { ptr, i64, i64 } %t298, ptr %a301
|
|
call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301)
|
|
%t302 = load { ptr, i64, i64 }, ptr %a299
|
|
%t303 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 6
|
|
%t304 = load { ptr, i64, i64 }, ptr %t303
|
|
store { ptr, i64, i64 } %t302, ptr %a306
|
|
store { ptr, i64, i64 } %t304, ptr %a307
|
|
call void @finch_str_concat(ptr %a305, ptr %a306, ptr %a307)
|
|
%t308 = load { ptr, i64, i64 }, ptr %a305
|
|
store { ptr, i64, i64 } %t308, ptr %a76
|
|
br label %endif219
|
|
else218:
|
|
%t309 = load i1, ptr %a78
|
|
br label %logic.from220
|
|
logic.from220:
|
|
br i1 %t309, label %logic.rhs221, label %logic.end222
|
|
logic.rhs221:
|
|
%t310 = load i1, ptr %a77
|
|
%t311 = xor i1 %t310, true
|
|
br label %logic.rend223
|
|
logic.rend223:
|
|
br label %logic.end222
|
|
logic.end222:
|
|
%t312 = phi i1 [ false, %logic.from220 ], [ %t311, %logic.rend223 ]
|
|
br i1 %t312, label %then224, label %else225
|
|
then224:
|
|
%t313 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 1
|
|
%t314 = load i1, ptr %t313
|
|
br i1 %t314, label %then227, label %else228
|
|
then227:
|
|
%t315 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } %t315, ptr %a317
|
|
store { ptr, i64, i64 } { ptr @.str.174, i64 4, i64 0 }, ptr %a318
|
|
call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318)
|
|
%t319 = load { ptr, i64, i64 }, ptr %a316
|
|
store { ptr, i64, i64 } %t319, ptr %a76
|
|
br label %endif229
|
|
else228:
|
|
%t320 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 3
|
|
%t321 = load i1, ptr %t320
|
|
br i1 %t321, label %then230, label %else231
|
|
then230:
|
|
%t322 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.175, i64 3, i64 0 }, ptr %a324
|
|
store { ptr, i64, i64 } %t322, ptr %a325
|
|
call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325)
|
|
%t326 = load { ptr, i64, i64 }, ptr %a323
|
|
store { ptr, i64, i64 } %t326, ptr %a328
|
|
store { ptr, i64, i64 } { ptr @.str.176, i64 6, i64 0 }, ptr %a329
|
|
call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329)
|
|
%t330 = load { ptr, i64, i64 }, ptr %a327
|
|
store { ptr, i64, i64 } %t330, ptr %a76
|
|
br label %endif232
|
|
else231:
|
|
%t331 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.177, i64 3, i64 0 }, ptr %a333
|
|
store { ptr, i64, i64 } %t331, ptr %a334
|
|
call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334)
|
|
%t335 = load { ptr, i64, i64 }, ptr %a332
|
|
store { ptr, i64, i64 } %t335, ptr %a337
|
|
store { ptr, i64, i64 } { ptr @.str.178, i64 3, i64 0 }, ptr %a338
|
|
call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338)
|
|
%t339 = load { ptr, i64, i64 }, ptr %a336
|
|
store { ptr, i64, i64 } %t339, ptr %a76
|
|
br label %endif232
|
|
endif232:
|
|
br label %endif229
|
|
endif229:
|
|
br label %endif226
|
|
else225:
|
|
%t340 = load i1, ptr %a77
|
|
%t341 = xor i1 %t340, true
|
|
br i1 %t341, label %then233, label %endif235
|
|
then233:
|
|
%t342 = load { ptr, i64, i64 }, ptr %a76
|
|
%t343 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 6
|
|
%t344 = load { ptr, i64, i64 }, ptr %t343
|
|
store { ptr, i64, i64 } %t342, ptr %a346
|
|
store { ptr, i64, i64 } %t344, ptr %a347
|
|
call void @finch_str_concat(ptr %a345, ptr %a346, ptr %a347)
|
|
%t348 = load { ptr, i64, i64 }, ptr %a345
|
|
store { ptr, i64, i64 } %t348, ptr %a76
|
|
br label %endif235
|
|
endif235:
|
|
br label %endif226
|
|
endif226:
|
|
br label %endif219
|
|
endif219:
|
|
store %S.main.Loader zeroinitializer, ptr %a349
|
|
%t350 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 3
|
|
store { ptr, i64, i64 } { ptr @.str.179, i64 5, i64 0 }, ptr %t350
|
|
%t351 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 1
|
|
%t352 = load i1, ptr %t351
|
|
br i1 %t352, label %then236, label %else237
|
|
then236:
|
|
%t353 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 3
|
|
store { ptr, i64, i64 } { ptr @.str.180, i64 7, i64 0 }, ptr %t353
|
|
br label %endif238
|
|
else237:
|
|
%t354 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 3
|
|
%t355 = load i1, ptr %t354
|
|
br i1 %t355, label %then239, label %endif241
|
|
then239:
|
|
%t356 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 3
|
|
store { ptr, i64, i64 } { ptr @.str.181, i64 5, i64 0 }, ptr %t356
|
|
br label %endif241
|
|
endif241:
|
|
br label %endif238
|
|
endif238:
|
|
%t357 = load { ptr, i64, i64 }, ptr %a1
|
|
%t358 = extractvalue { ptr, i64, i64 } %t357, 1
|
|
%t359 = icmp uge i64 0, %t358
|
|
br i1 %t359, label %range242, label %inrange243
|
|
range242:
|
|
call void @finch_panic_index(ptr @.str.182, i64 198, i64 0, i64 %t358)
|
|
unreachable
|
|
inrange243:
|
|
%t360 = extractvalue { ptr, i64, i64 } %t357, 0
|
|
%t361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t360, i64 0
|
|
%t362 = load { ptr, i64, i64 }, ptr %t361
|
|
%t363 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t362)
|
|
store { ptr, i64, i64 } %t363, ptr %a365
|
|
store { ptr, i64, i64 } { ptr @.str.183, i64 7, i64 0 }, ptr %a366
|
|
call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366)
|
|
%t367 = load { ptr, i64, i64 }, ptr %a364
|
|
%t368 = load { ptr, i64, i64 }, ptr %a1
|
|
%t369 = extractvalue { ptr, i64, i64 } %t368, 1
|
|
%t370 = icmp uge i64 0, %t369
|
|
br i1 %t370, label %range244, label %inrange245
|
|
range244:
|
|
call void @finch_panic_index(ptr @.str.184, i64 198, i64 0, i64 %t369)
|
|
unreachable
|
|
inrange245:
|
|
%t371 = extractvalue { ptr, i64, i64 } %t368, 0
|
|
%t372 = getelementptr inbounds { ptr, i64, i64 }, ptr %t371, i64 0
|
|
%t373 = load { ptr, i64, i64 }, ptr %t372
|
|
%t374 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t373)
|
|
store { ptr, i64, i64 } %t374, ptr %a376
|
|
store { ptr, i64, i64 } { ptr @.str.185, i64 4, i64 0 }, ptr %a377
|
|
call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377)
|
|
%t378 = load { ptr, i64, i64 }, ptr %a375
|
|
%t379 = mul i64 3, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t380 = call ptr @finch_alloc(i64 %t379)
|
|
%t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 0
|
|
store { ptr, i64, i64 } %t367, ptr %t381
|
|
%t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 1
|
|
store { ptr, i64, i64 } %t378, ptr %t382
|
|
%t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.186, i64 3, i64 0 }, ptr %t383
|
|
%t384 = insertvalue { ptr, i64, i64 } undef, ptr %t380, 0
|
|
%t385 = insertvalue { ptr, i64, i64 } %t384, i64 3, 1
|
|
%t386 = insertvalue { ptr, i64, i64 } %t385, i64 3, 2
|
|
store { ptr, i64, i64 } %t386, ptr %a387
|
|
store i64 0, ptr %a388
|
|
br label %each.cond246
|
|
each.cond246:
|
|
%t389 = getelementptr inbounds { ptr, i64, i64 }, ptr %a387, i32 0, i32 1
|
|
%t390 = load i64, ptr %t389
|
|
%t391 = load i64, ptr %a388
|
|
%t392 = icmp slt i64 %t391, %t390
|
|
br i1 %t392, label %each.body247, label %each.end249
|
|
each.body247:
|
|
%t393 = load ptr, ptr %a387
|
|
%t394 = getelementptr inbounds { ptr, i64, i64 }, ptr %t393, i64 %t391
|
|
%t395 = load { ptr, i64, i64 }, ptr %t394
|
|
store { ptr, i64, i64 } %t395, ptr %a396
|
|
%t397 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 4
|
|
%t398 = getelementptr inbounds { ptr, i64, i64 }, ptr %t397, i32 0, i32 1
|
|
%t399 = load i64, ptr %t398
|
|
%t400 = icmp eq i64 %t399, 0
|
|
br label %logic.from250
|
|
logic.from250:
|
|
br i1 %t400, label %logic.rhs251, label %logic.end252
|
|
logic.rhs251:
|
|
%t401 = load { ptr, i64, i64 }, ptr %a396
|
|
store { ptr, i64, i64 } %t401, ptr %a403
|
|
store { ptr, i64, i64 } { ptr @.str.187, i64 9, i64 0 }, ptr %a404
|
|
call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404)
|
|
%t405 = load { ptr, i64, i64 }, ptr %a402
|
|
store { ptr, i64, i64 } %t405, ptr %a406
|
|
%t407 = call i32 @finch_file_exists(ptr %a406)
|
|
%t408 = icmp ne i32 %t407, 0
|
|
br label %logic.rend253
|
|
logic.rend253:
|
|
br label %logic.end252
|
|
logic.end252:
|
|
%t409 = phi i1 [ false, %logic.from250 ], [ %t408, %logic.rend253 ]
|
|
br i1 %t409, label %then254, label %endif256
|
|
then254:
|
|
%t410 = load { ptr, i64, i64 }, ptr %a396
|
|
%t411 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t410, ptr %a412
|
|
call void @finch_str_copy(ptr %a413, ptr %a412)
|
|
%t414 = load { ptr, i64, i64 }, ptr %a413
|
|
store { ptr, i64, i64 } %t414, ptr %t411
|
|
br label %endif256
|
|
endif256:
|
|
br label %each.step248
|
|
each.step248:
|
|
%t415 = load i64, ptr %a388
|
|
%t416 = add i64 %t415, 1
|
|
store i64 %t416, ptr %a388
|
|
br label %each.cond246
|
|
each.end249:
|
|
%t417 = extractvalue { ptr, i64, i64 } { ptr @.str.188, i64 10, i64 0 }, 0
|
|
%t418 = icmp eq ptr %t417, null
|
|
%t419 = select i1 %t418, ptr @.str.189, ptr %t417
|
|
%t420 = call ptr @getenv(ptr %t419)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a421
|
|
call void @finch_str_from_c(ptr %a421, ptr %t420)
|
|
%t422 = load { ptr, i64, i64 }, ptr %a421
|
|
store { ptr, i64, i64 } %t422, ptr %a423
|
|
store { ptr, i64, i64 } { ptr @.str.191, i64 1, i64 0 }, ptr %a425
|
|
call void @finch_str_split(ptr %a426, ptr %a423, ptr %a425)
|
|
%t427 = load { ptr, i64, i64 }, ptr %a426
|
|
store { ptr, i64, i64 } %t427, ptr %a428
|
|
store i64 0, ptr %a429
|
|
br label %each.cond257
|
|
each.cond257:
|
|
%t430 = getelementptr inbounds { ptr, i64, i64 }, ptr %a428, i32 0, i32 1
|
|
%t431 = load i64, ptr %t430
|
|
%t432 = load i64, ptr %a429
|
|
%t433 = icmp slt i64 %t432, %t431
|
|
br i1 %t433, label %each.body258, label %each.end260
|
|
each.body258:
|
|
%t434 = load ptr, ptr %a428
|
|
%t435 = getelementptr inbounds { ptr, i64, i64 }, ptr %t434, i64 %t432
|
|
%t436 = load { ptr, i64, i64 }, ptr %t435
|
|
store { ptr, i64, i64 } %t436, ptr %a437
|
|
%t438 = getelementptr inbounds { ptr, i64, i64 }, ptr %a437, i32 0, i32 1
|
|
%t439 = load i64, ptr %t438
|
|
%t440 = icmp sgt i64 %t439, 0
|
|
br i1 %t440, label %then261, label %endif263
|
|
then261:
|
|
%t441 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 5
|
|
%t442 = getelementptr inbounds { ptr, i64, i64 }, ptr %t441, i32 0, i32 1
|
|
%t443 = load { ptr, i64, i64 }, ptr %a437
|
|
store { ptr, i64, i64 } %t443, ptr %a444
|
|
call void @finch_str_copy(ptr %a445, ptr %a444)
|
|
%t446 = load { ptr, i64, i64 }, ptr %a445
|
|
%t447 = load i64, ptr %t442
|
|
%t448 = add i64 %t447, 1
|
|
call void @finch_arr_reserve(ptr %t441, i64 %t448, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t449 = load ptr, ptr %t441
|
|
%t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i64 %t447
|
|
store { ptr, i64, i64 } %t446, ptr %t450
|
|
store i64 %t448, ptr %t442
|
|
br label %endif263
|
|
endif263:
|
|
br label %each.step259
|
|
each.step259:
|
|
%t451 = load i64, ptr %a429
|
|
%t452 = add i64 %t451, 1
|
|
store i64 %t452, ptr %a429
|
|
br label %each.cond257
|
|
each.end260:
|
|
%t453 = load { ptr, i64, i64 }, ptr %a56
|
|
call void @finch.main.load(ptr %a349, { ptr, i64, i64 } %t453, { ptr, i64, i64 } { ptr @.str.192, i64 0, i64 0 })
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a454
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a455
|
|
%t456 = load { ptr, i64, i64 }, ptr %a83
|
|
store { ptr, i64, i64 } %t456, ptr %a457
|
|
call void @finch.copy.arr_str(ptr %a458, ptr %a457)
|
|
%t459 = load { ptr, i64, i64 }, ptr %a458
|
|
store { ptr, i64, i64 } %t459, ptr %a460
|
|
%t461 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } %t461, ptr %a462
|
|
call void @finch.copy.arr_str(ptr %a463, ptr %a462)
|
|
%t464 = load { ptr, i64, i64 }, ptr %a463
|
|
store { ptr, i64, i64 } %t464, ptr %a465
|
|
%t466 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 0
|
|
store i64 0, ptr %a467
|
|
br label %each.cond264
|
|
each.cond264:
|
|
%t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t466, i32 0, i32 1
|
|
%t469 = load i64, ptr %t468
|
|
%t470 = load i64, ptr %a467
|
|
%t471 = icmp slt i64 %t470, %t469
|
|
br i1 %t471, label %each.body265, label %each.end267
|
|
each.body265:
|
|
%t472 = load ptr, ptr %t466
|
|
%t473 = getelementptr inbounds %S.ast.Program, ptr %t472, i64 %t470
|
|
%t474 = load %S.ast.Program, ptr %t473
|
|
store %S.ast.Program %t474, ptr %a475
|
|
%t476 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 1
|
|
%t477 = load { ptr, i64, i64 }, ptr %t476
|
|
%t478 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t477)
|
|
store { ptr, i64, i64 } %t478, ptr %a479
|
|
%t480 = getelementptr inbounds { ptr, i64, i64 }, ptr %a460, i32 0, i32 1
|
|
%t481 = load { ptr, i64, i64 }, ptr %a479
|
|
store i64 -1, ptr %a482
|
|
%t483 = load i64, ptr %t480
|
|
%t484 = load ptr, ptr %a460
|
|
store i64 0, ptr %a485
|
|
br label %find.cond268
|
|
find.cond268:
|
|
%t486 = load i64, ptr %a485
|
|
%t487 = icmp slt i64 %t486, %t483
|
|
br i1 %t487, label %find.body269, label %find.end272
|
|
find.body269:
|
|
%t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i64 %t486
|
|
%t489 = load { ptr, i64, i64 }, ptr %t488
|
|
store { ptr, i64, i64 } %t489, ptr %a490
|
|
store { ptr, i64, i64 } %t481, ptr %a491
|
|
%t492 = call i32 @finch_str_eq(ptr %a490, ptr %a491)
|
|
%t493 = icmp ne i32 %t492, 0
|
|
br i1 %t493, label %find.hit270, label %find.next271
|
|
find.hit270:
|
|
store i64 %t486, ptr %a482
|
|
br label %find.end272
|
|
find.next271:
|
|
%t494 = add i64 %t486, 1
|
|
store i64 %t494, ptr %a485
|
|
br label %find.cond268
|
|
find.end272:
|
|
%t495 = load i64, ptr %a482
|
|
%t496 = icmp sge i64 %t495, 0
|
|
%t497 = xor i1 %t496, true
|
|
br i1 %t497, label %then273, label %endif275
|
|
then273:
|
|
%t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %a460, i32 0, i32 1
|
|
%t499 = load { ptr, i64, i64 }, ptr %a479
|
|
store { ptr, i64, i64 } %t499, ptr %a500
|
|
call void @finch_str_copy(ptr %a501, ptr %a500)
|
|
%t502 = load { ptr, i64, i64 }, ptr %a501
|
|
%t503 = load i64, ptr %t498
|
|
%t504 = add i64 %t503, 1
|
|
call void @finch_arr_reserve(ptr %a460, i64 %t504, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t505 = load ptr, ptr %a460
|
|
%t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %t505, i64 %t503
|
|
store { ptr, i64, i64 } %t502, ptr %t506
|
|
store i64 %t504, ptr %t498
|
|
br label %endif275
|
|
endif275:
|
|
%t507 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 3
|
|
%t508 = getelementptr inbounds { ptr, i64, i64 }, ptr %t507, i32 0, i32 1
|
|
%t509 = load i64, ptr %t508
|
|
store i64 0, ptr %a510
|
|
br label %for.cond276
|
|
for.cond276:
|
|
%t511 = load i64, ptr %a510
|
|
%t512 = icmp slt i64 %t511, %t509
|
|
br i1 %t512, label %for.body277, label %for.end279
|
|
for.body277:
|
|
%t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %a455, i32 0, i32 1
|
|
%t514 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 3
|
|
%t515 = load i64, ptr %a510
|
|
%t516 = load { ptr, i64, i64 }, ptr %t514
|
|
%t517 = extractvalue { ptr, i64, i64 } %t516, 1
|
|
%t518 = icmp uge i64 %t515, %t517
|
|
br i1 %t518, label %range280, label %inrange281
|
|
range280:
|
|
call void @finch_panic_index(ptr @.str.193, i64 221, i64 %t515, i64 %t517)
|
|
unreachable
|
|
inrange281:
|
|
%t519 = extractvalue { ptr, i64, i64 } %t516, 0
|
|
%t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t515
|
|
%t521 = load { ptr, i64, i64 }, ptr %t520
|
|
store i64 -1, ptr %a522
|
|
%t523 = load i64, ptr %t513
|
|
%t524 = load ptr, ptr %a455
|
|
store i64 0, ptr %a525
|
|
br label %find.cond282
|
|
find.cond282:
|
|
%t526 = load i64, ptr %a525
|
|
%t527 = icmp slt i64 %t526, %t523
|
|
br i1 %t527, label %find.body283, label %find.end286
|
|
find.body283:
|
|
%t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i64 %t526
|
|
%t529 = load { ptr, i64, i64 }, ptr %t528
|
|
store { ptr, i64, i64 } %t529, ptr %a530
|
|
store { ptr, i64, i64 } %t521, ptr %a531
|
|
%t532 = call i32 @finch_str_eq(ptr %a530, ptr %a531)
|
|
%t533 = icmp ne i32 %t532, 0
|
|
br i1 %t533, label %find.hit284, label %find.next285
|
|
find.hit284:
|
|
store i64 %t526, ptr %a522
|
|
br label %find.end286
|
|
find.next285:
|
|
%t534 = add i64 %t526, 1
|
|
store i64 %t534, ptr %a525
|
|
br label %find.cond282
|
|
find.end286:
|
|
%t535 = load i64, ptr %a522
|
|
%t536 = icmp sge i64 %t535, 0
|
|
%t537 = xor i1 %t536, true
|
|
br i1 %t537, label %then287, label %endif289
|
|
then287:
|
|
%t538 = getelementptr inbounds { ptr, i64, i64 }, ptr %a455, i32 0, i32 1
|
|
%t539 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 3
|
|
%t540 = load i64, ptr %a510
|
|
%t541 = load { ptr, i64, i64 }, ptr %t539
|
|
%t542 = extractvalue { ptr, i64, i64 } %t541, 1
|
|
%t543 = icmp uge i64 %t540, %t542
|
|
br i1 %t543, label %range290, label %inrange291
|
|
range290:
|
|
call void @finch_panic_index(ptr @.str.194, i64 222, i64 %t540, i64 %t542)
|
|
unreachable
|
|
inrange291:
|
|
%t544 = extractvalue { ptr, i64, i64 } %t541, 0
|
|
%t545 = getelementptr inbounds { ptr, i64, i64 }, ptr %t544, i64 %t540
|
|
%t546 = load { ptr, i64, i64 }, ptr %t545
|
|
store { ptr, i64, i64 } %t546, ptr %a547
|
|
call void @finch_str_copy(ptr %a548, ptr %a547)
|
|
%t549 = load { ptr, i64, i64 }, ptr %a548
|
|
%t550 = load i64, ptr %t538
|
|
%t551 = add i64 %t550, 1
|
|
call void @finch_arr_reserve(ptr %a455, i64 %t551, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t552 = load ptr, ptr %a455
|
|
%t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 %t550
|
|
store { ptr, i64, i64 } %t549, ptr %t553
|
|
store i64 %t551, ptr %t538
|
|
%t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %a454, i32 0, i32 1
|
|
%t555 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 3
|
|
%t556 = load i64, ptr %a510
|
|
%t557 = load { ptr, i64, i64 }, ptr %t555
|
|
%t558 = extractvalue { ptr, i64, i64 } %t557, 1
|
|
%t559 = icmp uge i64 %t556, %t558
|
|
br i1 %t559, label %range292, label %inrange293
|
|
range292:
|
|
call void @finch_panic_index(ptr @.str.195, i64 223, i64 %t556, i64 %t558)
|
|
unreachable
|
|
inrange293:
|
|
%t560 = extractvalue { ptr, i64, i64 } %t557, 0
|
|
%t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i64 %t556
|
|
%t562 = load { ptr, i64, i64 }, ptr %t561
|
|
store { ptr, i64, i64 } %t562, ptr %a563
|
|
call void @finch_str_copy(ptr %a564, ptr %a563)
|
|
%t565 = load { ptr, i64, i64 }, ptr %a564
|
|
%t566 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t565, 0
|
|
%t567 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 4
|
|
%t568 = load i64, ptr %a510
|
|
%t569 = load { ptr, i64, i64 }, ptr %t567
|
|
%t570 = extractvalue { ptr, i64, i64 } %t569, 1
|
|
%t571 = icmp uge i64 %t568, %t570
|
|
br i1 %t571, label %range294, label %inrange295
|
|
range294:
|
|
call void @finch_panic_index(ptr @.str.196, i64 223, i64 %t568, i64 %t570)
|
|
unreachable
|
|
inrange295:
|
|
%t572 = extractvalue { ptr, i64, i64 } %t569, 0
|
|
%t573 = getelementptr inbounds { ptr, i64, i64 }, ptr %t572, i64 %t568
|
|
%t574 = load { ptr, i64, i64 }, ptr %t573
|
|
store { ptr, i64, i64 } %t574, ptr %a575
|
|
call void @finch_str_copy(ptr %a576, ptr %a575)
|
|
%t577 = load { ptr, i64, i64 }, ptr %a576
|
|
%t578 = insertvalue %S.cimport.Header %t566, { ptr, i64, i64 } %t577, 1
|
|
%t579 = load i64, ptr %t554
|
|
%t580 = add i64 %t579, 1
|
|
call void @finch_arr_reserve(ptr %a454, i64 %t580, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64))
|
|
%t581 = load ptr, ptr %a454
|
|
%t582 = getelementptr inbounds %S.cimport.Header, ptr %t581, i64 %t579
|
|
store %S.cimport.Header %t578, ptr %t582
|
|
store i64 %t580, ptr %t554
|
|
br label %endif289
|
|
endif289:
|
|
br label %for.step278
|
|
for.step278:
|
|
%t583 = load i64, ptr %a510
|
|
%t584 = add i64 %t583, 1
|
|
store i64 %t584, ptr %a510
|
|
br label %for.cond276
|
|
for.end279:
|
|
%t585 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 5
|
|
store i64 0, ptr %a586
|
|
br label %each.cond296
|
|
each.cond296:
|
|
%t587 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i32 0, i32 1
|
|
%t588 = load i64, ptr %t587
|
|
%t589 = load i64, ptr %a586
|
|
%t590 = icmp slt i64 %t589, %t588
|
|
br i1 %t590, label %each.body297, label %each.end299
|
|
each.body297:
|
|
%t591 = load ptr, ptr %t585
|
|
%t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t591, i64 %t589
|
|
%t593 = load { ptr, i64, i64 }, ptr %t592
|
|
store { ptr, i64, i64 } %t593, ptr %a594
|
|
%t595 = load { ptr, i64, i64 }, ptr %a594
|
|
store { ptr, i64, i64 } %t595, ptr %a596
|
|
store { ptr, i64, i64 } { ptr @.str.198, i64 2, i64 0 }, ptr %a598
|
|
%t599 = call i32 @finch_str_ends(ptr %a596, ptr %a598)
|
|
%t600 = icmp ne i32 %t599, 0
|
|
br label %logic.from300
|
|
logic.from300:
|
|
br i1 %t600, label %logic.end302, label %logic.rhs301
|
|
logic.rhs301:
|
|
%t601 = load { ptr, i64, i64 }, ptr %a594
|
|
store { ptr, i64, i64 } %t601, ptr %a602
|
|
store { ptr, i64, i64 } { ptr @.str.200, i64 2, i64 0 }, ptr %a604
|
|
%t605 = call i32 @finch_str_ends(ptr %a602, ptr %a604)
|
|
%t606 = icmp ne i32 %t605, 0
|
|
br label %logic.rend303
|
|
logic.rend303:
|
|
br label %logic.end302
|
|
logic.end302:
|
|
%t607 = phi i1 [ true, %logic.from300 ], [ %t606, %logic.rend303 ]
|
|
br label %logic.from304
|
|
logic.from304:
|
|
br i1 %t607, label %logic.end306, label %logic.rhs305
|
|
logic.rhs305:
|
|
%t608 = load { ptr, i64, i64 }, ptr %a594
|
|
store { ptr, i64, i64 } %t608, ptr %a609
|
|
store { ptr, i64, i64 } { ptr @.str.202, i64 2, i64 0 }, ptr %a611
|
|
%t612 = call i32 @finch_str_ends(ptr %a609, ptr %a611)
|
|
%t613 = icmp ne i32 %t612, 0
|
|
br label %logic.rend307
|
|
logic.rend307:
|
|
br label %logic.end306
|
|
logic.end306:
|
|
%t614 = phi i1 [ true, %logic.from304 ], [ %t613, %logic.rend307 ]
|
|
br i1 %t614, label %then308, label %else309
|
|
then308:
|
|
%t615 = getelementptr inbounds { ptr, i64, i64 }, ptr %a465, i32 0, i32 1
|
|
%t616 = load { ptr, i64, i64 }, ptr %a479
|
|
store { ptr, i64, i64 } %t616, ptr %a618
|
|
store { ptr, i64, i64 } { ptr @.str.203, i64 1, i64 0 }, ptr %a619
|
|
call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619)
|
|
%t620 = load { ptr, i64, i64 }, ptr %a617
|
|
%t621 = load { ptr, i64, i64 }, ptr %a594
|
|
store { ptr, i64, i64 } %t620, ptr %a623
|
|
store { ptr, i64, i64 } %t621, ptr %a624
|
|
call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624)
|
|
%t625 = load { ptr, i64, i64 }, ptr %a622
|
|
%t626 = load i64, ptr %t615
|
|
%t627 = add i64 %t626, 1
|
|
call void @finch_arr_reserve(ptr %a465, i64 %t627, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t628 = load ptr, ptr %a465
|
|
%t629 = getelementptr inbounds { ptr, i64, i64 }, ptr %t628, i64 %t626
|
|
store { ptr, i64, i64 } %t625, ptr %t629
|
|
store i64 %t627, ptr %t615
|
|
br label %endif310
|
|
else309:
|
|
%t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a465, i32 0, i32 1
|
|
%t631 = load { ptr, i64, i64 }, ptr %a594
|
|
store { ptr, i64, i64 } %t631, ptr %a632
|
|
call void @finch_str_copy(ptr %a633, ptr %a632)
|
|
%t634 = load { ptr, i64, i64 }, ptr %a633
|
|
%t635 = load i64, ptr %t630
|
|
%t636 = add i64 %t635, 1
|
|
call void @finch_arr_reserve(ptr %a465, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t637 = load ptr, ptr %a465
|
|
%t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635
|
|
store { ptr, i64, i64 } %t634, ptr %t638
|
|
store i64 %t636, ptr %t630
|
|
br label %endif310
|
|
endif310:
|
|
br label %each.step298
|
|
each.step298:
|
|
%t639 = load i64, ptr %a586
|
|
%t640 = add i64 %t639, 1
|
|
store i64 %t640, ptr %a586
|
|
br label %each.cond296
|
|
each.end299:
|
|
br label %each.step266
|
|
each.step266:
|
|
%t641 = load i64, ptr %a467
|
|
%t642 = add i64 %t641, 1
|
|
store i64 %t642, ptr %a467
|
|
br label %each.cond264
|
|
each.end267:
|
|
store { ptr, i64, i64 } { ptr @.str.204, i64 0, i64 0 }, ptr %a643
|
|
%t644 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 5
|
|
%t645 = load i1, ptr %t644
|
|
br i1 %t645, label %then311, label %endif313
|
|
then311:
|
|
%t646 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 0
|
|
%t647 = load { ptr, i64, i64 }, ptr %t646
|
|
store { ptr, i64, i64 } %t647, ptr %a648
|
|
call void @finch_str_copy(ptr %a649, ptr %a648)
|
|
%t650 = load { ptr, i64, i64 }, ptr %a649
|
|
store { ptr, i64, i64 } %t650, ptr %a643
|
|
br label %endif313
|
|
endif313:
|
|
%t651 = load { ptr, i64, i64 }, ptr %a454
|
|
%t652 = load { ptr, i64, i64 }, ptr %a460
|
|
%t653 = load { ptr, i64, i64 }, ptr %a643
|
|
%t654 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 1
|
|
%t655 = load i1, ptr %t654
|
|
%t656 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 7
|
|
%t657 = load { ptr, i64, i64 }, ptr %t656
|
|
%t658 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t651, { ptr, i64, i64 } %t652, { ptr, i64, i64 } %t653, i1 %t655, { ptr, i64, i64 } %t657)
|
|
%t659 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t658, 0
|
|
%t660 = xor i1 %t659, true
|
|
%t661 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t658, 2
|
|
%t662 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t658, 1
|
|
br i1 %t660, label %or.failed314, label %or.ok315
|
|
or.failed314:
|
|
store { ptr, i64, i64 } %t661, ptr %a663
|
|
%t664 = load { ptr, i64, i64 }, ptr %a663
|
|
%t665 = extractvalue { ptr, i64, i64 } %t664, 1
|
|
%t666 = trunc i64 %t665 to i32
|
|
%t667 = extractvalue { ptr, i64, i64 } %t664, 0
|
|
%t668 = icmp eq ptr %t667, null
|
|
%t669 = select i1 %t668, ptr @.str.205, ptr %t667
|
|
%t670 = call i32 (ptr, ...) @printf(ptr @.str.206, i32 %t666, ptr %t669)
|
|
%t671 = call i32 (ptr, ...) @printf(ptr @.str.207)
|
|
ret i64 1
|
|
or.ok315:
|
|
store %S.cimport.CImports %t662, ptr %a672
|
|
%t673 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 0
|
|
%t674 = load { ptr, i64, i64 }, ptr %t673
|
|
%t675 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 1
|
|
%t676 = load { ptr, i64, i64 }, ptr %t675
|
|
%t677 = load %S.cimport.CImports, ptr %a672
|
|
%t678 = load i1, ptr %a78
|
|
%t679 = insertvalue %S.gen.Options zeroinitializer, i1 %t678, 0
|
|
%t680 = load i1, ptr %a79
|
|
%t681 = insertvalue %S.gen.Options %t679, i1 %t680, 1
|
|
%t682 = extractvalue { ptr, i64, i64 } { ptr @.str.208, i64 3, i64 0 }, 0
|
|
%t683 = icmp eq ptr %t682, null
|
|
%t684 = select i1 %t683, ptr @.str.209, ptr %t682
|
|
%t685 = call ptr @getenv(ptr %t684)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a686
|
|
call void @finch_str_from_c(ptr %a686, ptr %t685)
|
|
%t687 = load { ptr, i64, i64 }, ptr %a686
|
|
store { ptr, i64, i64 } %t687, ptr %a688
|
|
call void @finch_str_copy(ptr %a689, ptr %a688)
|
|
%t690 = load { ptr, i64, i64 }, ptr %a689
|
|
%t691 = insertvalue %S.gen.Options %t681, { ptr, i64, i64 } %t690, 2
|
|
%t692 = load %S.platform.Target, ptr %a291
|
|
store %S.platform.Target %t692, ptr %a693
|
|
call void @finch.copy.S_platform_Target(ptr %a694, ptr %a693)
|
|
%t695 = load %S.platform.Target, ptr %a694
|
|
%t696 = insertvalue %S.gen.Options %t691, %S.platform.Target %t695, 3
|
|
%t697 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t674, { ptr, i64, i64 } %t676, %S.cimport.CImports %t677, %S.gen.Options %t696)
|
|
store { ptr, i64, i64 } %t697, ptr %a698
|
|
%t699 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t699, ptr %a700
|
|
store { ptr, i64, i64 } { ptr @.str.210, i64 2, i64 0 }, ptr %a701
|
|
%t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701)
|
|
%t703 = icmp ne i32 %t702, 0
|
|
br i1 %t703, label %then316, label %endif318
|
|
then316:
|
|
%t704 = load { ptr, i64, i64 }, ptr %a698
|
|
%t705 = extractvalue { ptr, i64, i64 } %t704, 1
|
|
%t706 = trunc i64 %t705 to i32
|
|
%t707 = extractvalue { ptr, i64, i64 } %t704, 0
|
|
%t708 = icmp eq ptr %t707, null
|
|
%t709 = select i1 %t708, ptr @.str.211, ptr %t707
|
|
%t710 = call i32 (ptr, ...) @printf(ptr @.str.212, i32 %t706, ptr %t709)
|
|
%t711 = call i32 (ptr, ...) @printf(ptr @.str.213)
|
|
ret i64 0
|
|
endif318:
|
|
%t712 = extractvalue { ptr, i64, i64 } { ptr @.str.214, i64 8, i64 0 }, 0
|
|
%t713 = icmp eq ptr %t712, null
|
|
%t714 = select i1 %t713, ptr @.str.215, ptr %t712
|
|
%t715 = call ptr @getenv(ptr %t714)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a716
|
|
call void @finch_str_from_c(ptr %a716, ptr %t715)
|
|
%t717 = load { ptr, i64, i64 }, ptr %a716
|
|
store { ptr, i64, i64 } %t717, ptr %a718
|
|
call void @finch_str_copy(ptr %a719, ptr %a718)
|
|
%t720 = load { ptr, i64, i64 }, ptr %a719
|
|
store { ptr, i64, i64 } %t720, ptr %a721
|
|
%t722 = getelementptr inbounds { ptr, i64, i64 }, ptr %a721, i32 0, i32 1
|
|
%t723 = load i64, ptr %t722
|
|
%t724 = icmp eq i64 %t723, 0
|
|
br i1 %t724, label %then319, label %endif321
|
|
then319:
|
|
%t725 = load { ptr, i64, i64 }, ptr %a1
|
|
%t726 = extractvalue { ptr, i64, i64 } %t725, 1
|
|
%t727 = icmp uge i64 0, %t726
|
|
br i1 %t727, label %range322, label %inrange323
|
|
range322:
|
|
call void @finch_panic_index(ptr @.str.216, i64 251, i64 0, i64 %t726)
|
|
unreachable
|
|
inrange323:
|
|
%t728 = extractvalue { ptr, i64, i64 } %t725, 0
|
|
%t729 = getelementptr inbounds { ptr, i64, i64 }, ptr %t728, i64 0
|
|
%t730 = load { ptr, i64, i64 }, ptr %t729
|
|
%t731 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t730)
|
|
store { ptr, i64, i64 } %t731, ptr %a733
|
|
store { ptr, i64, i64 } { ptr @.str.217, i64 22, i64 0 }, ptr %a734
|
|
call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734)
|
|
%t735 = load { ptr, i64, i64 }, ptr %a732
|
|
store { ptr, i64, i64 } %t735, ptr %a721
|
|
br label %endif321
|
|
endif321:
|
|
%t736 = load { ptr, i64, i64 }, ptr %a721
|
|
store { ptr, i64, i64 } %t736, ptr %a737
|
|
%t738 = call i32 @finch_file_exists(ptr %a737)
|
|
%t739 = icmp ne i32 %t738, 0
|
|
%t740 = xor i1 %t739, true
|
|
br i1 %t740, label %then324, label %endif326
|
|
then324:
|
|
%t741 = load { ptr, i64, i64 }, ptr %a1
|
|
%t742 = extractvalue { ptr, i64, i64 } %t741, 1
|
|
%t743 = icmp uge i64 0, %t742
|
|
br i1 %t743, label %range327, label %inrange328
|
|
range327:
|
|
call void @finch_panic_index(ptr @.str.218, i64 254, i64 0, i64 %t742)
|
|
unreachable
|
|
inrange328:
|
|
%t744 = extractvalue { ptr, i64, i64 } %t741, 0
|
|
%t745 = getelementptr inbounds { ptr, i64, i64 }, ptr %t744, i64 0
|
|
%t746 = load { ptr, i64, i64 }, ptr %t745
|
|
%t747 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t746)
|
|
store { ptr, i64, i64 } %t747, ptr %a749
|
|
store { ptr, i64, i64 } { ptr @.str.219, i64 19, i64 0 }, ptr %a750
|
|
call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750)
|
|
%t751 = load { ptr, i64, i64 }, ptr %a748
|
|
store { ptr, i64, i64 } %t751, ptr %a721
|
|
br label %endif326
|
|
endif326:
|
|
%t752 = load { ptr, i64, i64 }, ptr %a721
|
|
store { ptr, i64, i64 } %t752, ptr %a753
|
|
%t754 = call i32 @finch_file_exists(ptr %a753)
|
|
%t755 = icmp ne i32 %t754, 0
|
|
%t756 = xor i1 %t755, true
|
|
br label %logic.from329
|
|
logic.from329:
|
|
br i1 %t756, label %logic.rhs330, label %logic.end331
|
|
logic.rhs330:
|
|
store { ptr, i64, i64 } { ptr @.str.220, i64 18, i64 0 }, ptr %a757
|
|
%t758 = call i32 @finch_file_exists(ptr %a757)
|
|
%t759 = icmp ne i32 %t758, 0
|
|
br label %logic.rend332
|
|
logic.rend332:
|
|
br label %logic.end331
|
|
logic.end331:
|
|
%t760 = phi i1 [ false, %logic.from329 ], [ %t759, %logic.rend332 ]
|
|
br i1 %t760, label %then333, label %endif335
|
|
then333:
|
|
store { ptr, i64, i64 } { ptr @.str.221, i64 18, i64 0 }, ptr %a721
|
|
br label %endif335
|
|
endif335:
|
|
%t761 = load { ptr, i64, i64 }, ptr %a721
|
|
store { ptr, i64, i64 } %t761, ptr %a762
|
|
%t763 = call i32 @finch_file_exists(ptr %a762)
|
|
%t764 = icmp ne i32 %t763, 0
|
|
%t765 = xor i1 %t764, true
|
|
br i1 %t765, label %then336, label %endif338
|
|
then336:
|
|
%t766 = extractvalue { ptr, i64, i64 } { ptr @.str.222, i64 56, i64 0 }, 1
|
|
%t767 = trunc i64 %t766 to i32
|
|
%t768 = extractvalue { ptr, i64, i64 } { ptr @.str.222, i64 56, i64 0 }, 0
|
|
%t769 = icmp eq ptr %t768, null
|
|
%t770 = select i1 %t769, ptr @.str.223, ptr %t768
|
|
%t771 = call i32 (ptr, ...) @printf(ptr @.str.224, i32 %t767, ptr %t770)
|
|
%t772 = call i32 (ptr, ...) @printf(ptr @.str.225)
|
|
ret i64 1
|
|
endif338:
|
|
store { ptr, i64, i64 } { ptr @.str.226, i64 0, i64 0 }, ptr %a773
|
|
%t774 = load i1, ptr %a78
|
|
br i1 %t774, label %then339, label %endif341
|
|
then339:
|
|
store { ptr, i64, i64 } { ptr @.str.227, i64 6, i64 0 }, ptr %a773
|
|
br label %endif341
|
|
endif341:
|
|
%t775 = load i1, ptr %a79
|
|
br i1 %t775, label %then342, label %endif344
|
|
then342:
|
|
%t776 = load { ptr, i64, i64 }, ptr %a773
|
|
store { ptr, i64, i64 } %t776, ptr %a778
|
|
store { ptr, i64, i64 } { ptr @.str.228, i64 3, i64 0 }, ptr %a779
|
|
call void @finch_str_concat(ptr %a777, ptr %a778, ptr %a779)
|
|
%t780 = load { ptr, i64, i64 }, ptr %a777
|
|
store { ptr, i64, i64 } %t780, ptr %a773
|
|
br label %endif344
|
|
endif344:
|
|
%t781 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } %t781, ptr %a782
|
|
call void @finch_str_copy(ptr %a783, ptr %a782)
|
|
%t784 = load { ptr, i64, i64 }, ptr %a783
|
|
%t785 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t784, 0
|
|
%t786 = load { ptr, i64, i64 }, ptr %a698
|
|
store { ptr, i64, i64 } %t786, ptr %a787
|
|
call void @finch_str_copy(ptr %a788, ptr %a787)
|
|
%t789 = load { ptr, i64, i64 }, ptr %a788
|
|
%t790 = insertvalue %S.linker.Build %t785, { ptr, i64, i64 } %t789, 1
|
|
%t791 = load { ptr, i64, i64 }, ptr %a721
|
|
store { ptr, i64, i64 } %t791, ptr %a792
|
|
call void @finch_str_copy(ptr %a793, ptr %a792)
|
|
%t794 = load { ptr, i64, i64 }, ptr %a793
|
|
%t795 = insertvalue %S.linker.Build %t790, { ptr, i64, i64 } %t794, 2
|
|
%t796 = load { ptr, i64, i64 }, ptr %a81
|
|
store { ptr, i64, i64 } %t796, ptr %a797
|
|
call void @finch_str_copy(ptr %a798, ptr %a797)
|
|
%t799 = load { ptr, i64, i64 }, ptr %a798
|
|
%t800 = insertvalue %S.linker.Build %t795, { ptr, i64, i64 } %t799, 3
|
|
%t801 = load { ptr, i64, i64 }, ptr %a773
|
|
store { ptr, i64, i64 } %t801, ptr %a802
|
|
call void @finch_str_copy(ptr %a803, ptr %a802)
|
|
%t804 = load { ptr, i64, i64 }, ptr %a803
|
|
%t805 = insertvalue %S.linker.Build %t800, { ptr, i64, i64 } %t804, 4
|
|
%t806 = load i1, ptr %a78
|
|
%t807 = insertvalue %S.linker.Build %t805, i1 %t806, 5
|
|
%t808 = load { ptr, i64, i64 }, ptr %a465
|
|
store { ptr, i64, i64 } %t808, ptr %a809
|
|
call void @finch.copy.arr_str(ptr %a810, ptr %a809)
|
|
%t811 = load { ptr, i64, i64 }, ptr %a810
|
|
%t812 = insertvalue %S.linker.Build %t807, { ptr, i64, i64 } %t811, 6
|
|
%t813 = load %S.platform.Target, ptr %a291
|
|
%t814 = load %S.cimport.CImports, ptr %a672
|
|
%t815 = call i64 @finch.linker.build(%S.linker.Build %t812, %S.platform.Target %t813, %S.cimport.CImports %t814)
|
|
%t816 = icmp ne i64 %t815, 0
|
|
br i1 %t816, label %then345, label %endif347
|
|
then345:
|
|
ret i64 1
|
|
endif347:
|
|
%t817 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t817, ptr %a818
|
|
store { ptr, i64, i64 } { ptr @.str.229, i64 3, i64 0 }, ptr %a819
|
|
%t820 = call i32 @finch_str_eq(ptr %a818, ptr %a819)
|
|
%t821 = icmp ne i32 %t820, 0
|
|
br i1 %t821, label %then348, label %endif350
|
|
then348:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a822
|
|
store i64 0, ptr %a823
|
|
br label %each.cond351
|
|
each.cond351:
|
|
%t824 = getelementptr inbounds { ptr, i64, i64 }, ptr %a84, i32 0, i32 1
|
|
%t825 = load i64, ptr %t824
|
|
%t826 = load i64, ptr %a823
|
|
%t827 = icmp slt i64 %t826, %t825
|
|
br i1 %t827, label %each.body352, label %each.end354
|
|
each.body352:
|
|
%t828 = load ptr, ptr %a84
|
|
%t829 = getelementptr inbounds { ptr, i64, i64 }, ptr %t828, i64 %t826
|
|
%t830 = load { ptr, i64, i64 }, ptr %t829
|
|
store { ptr, i64, i64 } %t830, ptr %a831
|
|
%t832 = getelementptr inbounds { ptr, i64, i64 }, ptr %a822, i32 0, i32 1
|
|
%t833 = load { ptr, i64, i64 }, ptr %a831
|
|
%t834 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t833)
|
|
%t835 = load i64, ptr %t832
|
|
%t836 = add i64 %t835, 1
|
|
call void @finch_arr_reserve(ptr %a822, i64 %t836, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t837 = load ptr, ptr %a822
|
|
%t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t835
|
|
store { ptr, i64, i64 } %t834, ptr %t838
|
|
store i64 %t836, ptr %t832
|
|
br label %each.step353
|
|
each.step353:
|
|
%t839 = load i64, ptr %a823
|
|
%t840 = add i64 %t839, 1
|
|
store i64 %t840, ptr %a823
|
|
br label %each.cond351
|
|
each.end354:
|
|
%t841 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 8
|
|
%t842 = load { ptr, i64, i64 }, ptr %t841
|
|
%t843 = load { ptr, i64, i64 }, ptr %a76
|
|
%t844 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t843)
|
|
store { ptr, i64, i64 } %t842, ptr %a846
|
|
store { ptr, i64, i64 } %t844, ptr %a847
|
|
call void @finch_str_concat(ptr %a845, ptr %a846, ptr %a847)
|
|
%t848 = load { ptr, i64, i64 }, ptr %a845
|
|
store { ptr, i64, i64 } %t848, ptr %a850
|
|
store { ptr, i64, i64 } { ptr @.str.230, i64 1, i64 0 }, ptr %a851
|
|
call void @finch_str_concat(ptr %a849, ptr %a850, ptr %a851)
|
|
%t852 = load { ptr, i64, i64 }, ptr %a849
|
|
%t853 = getelementptr inbounds { ptr, i64, i64 }, ptr %a822, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.231, i64 1, i64 0 }, ptr %a854
|
|
call void @finch_str_join(ptr %a855, ptr %a822, ptr %a854)
|
|
%t856 = load { ptr, i64, i64 }, ptr %a855
|
|
store { ptr, i64, i64 } %t852, ptr %a858
|
|
store { ptr, i64, i64 } %t856, ptr %a859
|
|
call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859)
|
|
%t860 = load { ptr, i64, i64 }, ptr %a857
|
|
store { ptr, i64, i64 } %t860, ptr %a862
|
|
call void @finch_str_copy(ptr %a861, ptr %a862)
|
|
%t863 = call i64 @finch_shell(ptr %a861)
|
|
store i64 %t863, ptr %a864
|
|
%t865 = load { ptr, i64, i64 }, ptr %a76
|
|
%t866 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t865)
|
|
store { ptr, i64, i64 } { ptr @.str.232, i64 6, i64 0 }, ptr %a868
|
|
store { ptr, i64, i64 } %t866, ptr %a869
|
|
call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869)
|
|
%t870 = load { ptr, i64, i64 }, ptr %a867
|
|
store { ptr, i64, i64 } %t870, ptr %a872
|
|
call void @finch_str_copy(ptr %a871, ptr %a872)
|
|
%t873 = call i64 @finch_shell(ptr %a871)
|
|
%t874 = load i64, ptr %a864
|
|
ret i64 %t874
|
|
endif350:
|
|
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.from355
|
|
logic.from355:
|
|
br i1 %t3, label %logic.rhs356, label %logic.end357
|
|
logic.rhs356:
|
|
%t4 = load i8, ptr %a1
|
|
%t5 = icmp ule i8 %t4, 122
|
|
br label %logic.rend358
|
|
logic.rend358:
|
|
br label %logic.end357
|
|
logic.end357:
|
|
%t6 = phi i1 [ false, %logic.from355 ], [ %t5, %logic.rend358 ]
|
|
br label %logic.from359
|
|
logic.from359:
|
|
br i1 %t6, label %logic.end361, label %logic.rhs360
|
|
logic.rhs360:
|
|
%t7 = load i8, ptr %a1
|
|
%t8 = icmp uge i8 %t7, 65
|
|
br label %logic.from362
|
|
logic.from362:
|
|
br i1 %t8, label %logic.rhs363, label %logic.end364
|
|
logic.rhs363:
|
|
%t9 = load i8, ptr %a1
|
|
%t10 = icmp ule i8 %t9, 90
|
|
br label %logic.rend365
|
|
logic.rend365:
|
|
br label %logic.end364
|
|
logic.end364:
|
|
%t11 = phi i1 [ false, %logic.from362 ], [ %t10, %logic.rend365 ]
|
|
br label %logic.rend366
|
|
logic.rend366:
|
|
br label %logic.end361
|
|
logic.end361:
|
|
%t12 = phi i1 [ true, %logic.from359 ], [ %t11, %logic.rend366 ]
|
|
br label %logic.from367
|
|
logic.from367:
|
|
br i1 %t12, label %logic.end369, label %logic.rhs368
|
|
logic.rhs368:
|
|
%t13 = load i8, ptr %a1
|
|
%t14 = icmp eq i8 %t13, 95
|
|
br label %logic.rend370
|
|
logic.rend370:
|
|
br label %logic.end369
|
|
logic.end369:
|
|
%t15 = phi i1 [ true, %logic.from367 ], [ %t14, %logic.rend370 ]
|
|
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.from371
|
|
logic.from371:
|
|
br i1 %t3, label %logic.rhs372, label %logic.end373
|
|
logic.rhs372:
|
|
%t4 = load i8, ptr %a1
|
|
%t5 = icmp ule i8 %t4, 57
|
|
br label %logic.rend374
|
|
logic.rend374:
|
|
br label %logic.end373
|
|
logic.end373:
|
|
%t6 = phi i1 [ false, %logic.from371 ], [ %t5, %logic.rend374 ]
|
|
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.from375
|
|
logic.from375:
|
|
br i1 %t3, label %logic.end377, label %logic.rhs376
|
|
logic.rhs376:
|
|
%t4 = load i8, ptr %a1
|
|
%t5 = icmp uge i8 %t4, 97
|
|
br label %logic.from378
|
|
logic.from378:
|
|
br i1 %t5, label %logic.rhs379, label %logic.end380
|
|
logic.rhs379:
|
|
%t6 = load i8, ptr %a1
|
|
%t7 = icmp ule i8 %t6, 102
|
|
br label %logic.rend381
|
|
logic.rend381:
|
|
br label %logic.end380
|
|
logic.end380:
|
|
%t8 = phi i1 [ false, %logic.from378 ], [ %t7, %logic.rend381 ]
|
|
br label %logic.rend382
|
|
logic.rend382:
|
|
br label %logic.end377
|
|
logic.end377:
|
|
%t9 = phi i1 [ true, %logic.from375 ], [ %t8, %logic.rend382 ]
|
|
br label %logic.from383
|
|
logic.from383:
|
|
br i1 %t9, label %logic.end385, label %logic.rhs384
|
|
logic.rhs384:
|
|
%t10 = load i8, ptr %a1
|
|
%t11 = icmp uge i8 %t10, 65
|
|
br label %logic.from386
|
|
logic.from386:
|
|
br i1 %t11, label %logic.rhs387, label %logic.end388
|
|
logic.rhs387:
|
|
%t12 = load i8, ptr %a1
|
|
%t13 = icmp ule i8 %t12, 70
|
|
br label %logic.rend389
|
|
logic.rend389:
|
|
br label %logic.end388
|
|
logic.end388:
|
|
%t14 = phi i1 [ false, %logic.from386 ], [ %t13, %logic.rend389 ]
|
|
br label %logic.rend390
|
|
logic.rend390:
|
|
br label %logic.end385
|
|
logic.end385:
|
|
%t15 = phi i1 [ true, %logic.from383 ], [ %t14, %logic.rend390 ]
|
|
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.233, i64 2, i64 0 }, ptr %t4
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.234, i64 6, i64 0 }, ptr %t5
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.235, i64 2, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.236, i64 4, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.237, i64 5, i64 0 }, ptr %t8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.238, i64 3, i64 0 }, ptr %t9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.239, i64 2, i64 0 }, ptr %t10
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.240, i64 5, i64 0 }, ptr %t11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.241, i64 8, i64 0 }, ptr %t12
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.242, i64 4, i64 0 }, ptr %t13
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10
|
|
store { ptr, i64, i64 } { ptr @.str.243, i64 5, i64 0 }, ptr %t14
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11
|
|
store { ptr, i64, i64 } { ptr @.str.244, i64 4, i64 0 }, ptr %t15
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12
|
|
store { ptr, i64, i64 } { ptr @.str.245, i64 6, i64 0 }, ptr %t16
|
|
%t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13
|
|
store { ptr, i64, i64 } { ptr @.str.246, i64 4, i64 0 }, ptr %t17
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14
|
|
store { ptr, i64, i64 } { ptr @.str.247, i64 6, i64 0 }, ptr %t18
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15
|
|
store { ptr, i64, i64 } { ptr @.str.248, i64 5, i64 0 }, ptr %t19
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16
|
|
store { ptr, i64, i64 } { ptr @.str.249, i64 2, i64 0 }, ptr %t20
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17
|
|
store { ptr, i64, i64 } { ptr @.str.250, i64 3, i64 0 }, ptr %t21
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18
|
|
store { ptr, i64, i64 } { ptr @.str.251, i64 4, i64 0 }, ptr %t22
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19
|
|
store { ptr, i64, i64 } { ptr @.str.252, i64 5, i64 0 }, ptr %t23
|
|
%t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20
|
|
store { ptr, i64, i64 } { ptr @.str.253, 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.cond391
|
|
find.cond391:
|
|
%t35 = load i64, ptr %a34
|
|
%t36 = icmp slt i64 %t35, %t32
|
|
br i1 %t36, label %find.body392, label %find.end395
|
|
find.body392:
|
|
%t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t35
|
|
%t38 = load { ptr, i64, i64 }, ptr %t37
|
|
store { ptr, i64, i64 } %t38, ptr %a39
|
|
store { ptr, i64, i64 } %t30, ptr %a40
|
|
%t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40)
|
|
%t42 = icmp ne i32 %t41, 0
|
|
br i1 %t42, label %find.hit393, label %find.next394
|
|
find.hit393:
|
|
store i64 %t35, ptr %a31
|
|
br label %find.end395
|
|
find.next394:
|
|
%t43 = add i64 %t35, 1
|
|
store i64 %t43, ptr %a34
|
|
br label %find.cond391
|
|
find.end395:
|
|
%t44 = load i64, ptr %a31
|
|
%t45 = icmp sge i64 %t44, 0
|
|
ret i1 %t45
|
|
}
|
|
|
|
define internal void @finch.lexer.fail(ptr %p0, i64 %p1, i64 %p2, { ptr, i64, i64 } %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a3 = alloca i64, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
store i64 %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = icmp eq ptr %t5, null
|
|
br i1 %t6, label %panic396, label %ok397
|
|
panic396:
|
|
call void @finch_panic(ptr @.str.254, i64 41, ptr @.str.255)
|
|
unreachable
|
|
ok397:
|
|
%t7 = getelementptr inbounds %S.lexer.Lexer, ptr %t5, i32 0, i32 1
|
|
%t8 = load { ptr, i64, i64 }, ptr %t7
|
|
store { ptr, i64, i64 } %t8, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.256, i64 1, i64 0 }, ptr %a11
|
|
call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a9
|
|
%t13 = load i64, ptr %a2
|
|
call void @finch_str_from_int(ptr %a14, i64 %t13)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t12, ptr %a17
|
|
store { ptr, i64, i64 } %t15, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t19, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.257, i64 1, i64 0 }, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
%t24 = load i64, ptr %a3
|
|
call void @finch_str_from_int(ptr %a25, i64 %t24)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t23, ptr %a28
|
|
store { ptr, i64, i64 } %t26, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t30, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.258, i64 9, i64 0 }, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
%t35 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t34, ptr %a37
|
|
store { ptr, i64, i64 } %t35, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
%t40 = extractvalue { ptr, i64, i64 } %t39, 1
|
|
%t41 = trunc i64 %t40 to i32
|
|
%t42 = extractvalue { ptr, i64, i64 } %t39, 0
|
|
%t43 = icmp eq ptr %t42, null
|
|
%t44 = select i1 %t43, ptr @.str.259, ptr %t42
|
|
%t45 = call i32 (ptr, ...) @printf(ptr @.str.260, i32 %t41, ptr %t44)
|
|
%t46 = call i32 (ptr, ...) @printf(ptr @.str.261)
|
|
%t47 = trunc i64 1 to i32
|
|
%t48 = call i32 @fflush(ptr null)
|
|
call void @exit(i32 %t47)
|
|
ret void
|
|
}
|
|
|
|
define internal i8 @finch.lexer.peek(ptr %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic398, label %ok399
|
|
panic398:
|
|
call void @finch_panic(ptr @.str.262, i64 46, ptr @.str.263)
|
|
unreachable
|
|
ok399:
|
|
%t5 = getelementptr inbounds %S.lexer.Lexer, ptr %t3, i32 0, i32 2
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = load i64, ptr %a2
|
|
%t8 = add i64 %t6, %t7
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = icmp eq ptr %t9, null
|
|
br i1 %t10, label %panic400, label %ok401
|
|
panic400:
|
|
call void @finch_panic(ptr @.str.264, i64 46, ptr @.str.265)
|
|
unreachable
|
|
ok401:
|
|
%t11 = getelementptr inbounds %S.lexer.Lexer, ptr %t9, i32 0, i32 0
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1
|
|
%t13 = load i64, ptr %t12
|
|
%t14 = icmp slt i64 %t8, %t13
|
|
br i1 %t14, label %then402, label %endif404
|
|
then402:
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = icmp eq ptr %t15, null
|
|
br i1 %t16, label %panic405, label %ok406
|
|
panic405:
|
|
call void @finch_panic(ptr @.str.266, i64 47, ptr @.str.267)
|
|
unreachable
|
|
ok406:
|
|
%t17 = getelementptr inbounds %S.lexer.Lexer, ptr %t15, i32 0, i32 0
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = icmp eq ptr %t18, null
|
|
br i1 %t19, label %panic407, label %ok408
|
|
panic407:
|
|
call void @finch_panic(ptr @.str.268, i64 47, ptr @.str.269)
|
|
unreachable
|
|
ok408:
|
|
%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 %range409, label %inrange410
|
|
range409:
|
|
call void @finch_panic_index(ptr @.str.270, i64 47, i64 %t23, i64 %t25)
|
|
unreachable
|
|
inrange410:
|
|
%t27 = extractvalue { ptr, i64, i64 } %t24, 0
|
|
%t28 = getelementptr inbounds i8, ptr %t27, i64 %t23
|
|
%t29 = load i8, ptr %t28
|
|
ret i8 %t29
|
|
endif404:
|
|
%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 %panic411, label %ok412
|
|
panic411:
|
|
call void @finch_panic(ptr @.str.271, i64 53, ptr @.str.272)
|
|
unreachable
|
|
ok412:
|
|
%t4 = getelementptr inbounds %S.lexer.Lexer, ptr %t2, i32 0, i32 0
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = icmp eq ptr %t5, null
|
|
br i1 %t6, label %panic413, label %ok414
|
|
panic413:
|
|
call void @finch_panic(ptr @.str.273, i64 53, ptr @.str.274)
|
|
unreachable
|
|
ok414:
|
|
%t7 = getelementptr inbounds %S.lexer.Lexer, ptr %t5, i32 0, i32 2
|
|
%t8 = load i64, ptr %t7
|
|
%t9 = load { ptr, i64, i64 }, ptr %t4
|
|
%t10 = extractvalue { ptr, i64, i64 } %t9, 1
|
|
%t11 = icmp uge i64 %t8, %t10
|
|
br i1 %t11, label %range415, label %inrange416
|
|
range415:
|
|
call void @finch_panic_index(ptr @.str.275, i64 53, i64 %t8, i64 %t10)
|
|
unreachable
|
|
inrange416:
|
|
%t12 = extractvalue { ptr, i64, i64 } %t9, 0
|
|
%t13 = getelementptr inbounds i8, ptr %t12, i64 %t8
|
|
%t14 = load i8, ptr %t13
|
|
store i8 %t14, ptr %a15
|
|
%t16 = load i8, ptr %a15
|
|
%t17 = icmp eq i8 %t16, 10
|
|
br i1 %t17, label %then417, label %else418
|
|
then417:
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = icmp eq ptr %t18, null
|
|
br i1 %t19, label %panic420, label %ok421
|
|
panic420:
|
|
call void @finch_panic(ptr @.str.276, i64 55, ptr @.str.277)
|
|
unreachable
|
|
ok421:
|
|
%t20 = getelementptr inbounds %S.lexer.Lexer, ptr %t18, i32 0, i32 3
|
|
%t21 = load i64, ptr %t20
|
|
%t22 = add i64 %t21, 1
|
|
store i64 %t22, ptr %t20
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = icmp eq ptr %t23, null
|
|
br i1 %t24, label %panic422, label %ok423
|
|
panic422:
|
|
call void @finch_panic(ptr @.str.278, i64 56, ptr @.str.279)
|
|
unreachable
|
|
ok423:
|
|
%t25 = getelementptr inbounds %S.lexer.Lexer, ptr %t23, i32 0, i32 4
|
|
store i64 1, ptr %t25
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = icmp eq ptr %t26, null
|
|
br i1 %t27, label %panic424, label %ok425
|
|
panic424:
|
|
call void @finch_panic(ptr @.str.280, i64 57, ptr @.str.281)
|
|
unreachable
|
|
ok425:
|
|
%t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5
|
|
store i1 true, ptr %t28
|
|
br label %endif419
|
|
else418:
|
|
%t29 = load i8, ptr %a15
|
|
%t30 = zext i8 %t29 to i64
|
|
%t31 = and i64 %t30, 192
|
|
%t32 = icmp ne i64 %t31, 128
|
|
br i1 %t32, label %then426, label %endif428
|
|
then426:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = icmp eq ptr %t33, null
|
|
br i1 %t34, label %panic429, label %ok430
|
|
panic429:
|
|
call void @finch_panic(ptr @.str.282, i64 59, ptr @.str.283)
|
|
unreachable
|
|
ok430:
|
|
%t35 = getelementptr inbounds %S.lexer.Lexer, ptr %t33, i32 0, i32 4
|
|
%t36 = load i64, ptr %t35
|
|
%t37 = add i64 %t36, 1
|
|
store i64 %t37, ptr %t35
|
|
br label %endif428
|
|
endif428:
|
|
br label %endif419
|
|
endif419:
|
|
%t38 = load ptr, ptr %a1
|
|
%t39 = icmp eq ptr %t38, null
|
|
br i1 %t39, label %panic431, label %ok432
|
|
panic431:
|
|
call void @finch_panic(ptr @.str.284, i64 61, ptr @.str.285)
|
|
unreachable
|
|
ok432:
|
|
%t40 = getelementptr inbounds %S.lexer.Lexer, ptr %t38, i32 0, i32 2
|
|
%t41 = load i64, ptr %t40
|
|
%t42 = add i64 %t41, 1
|
|
store i64 %t42, ptr %t40
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.lexer.operator(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca i64, align 16
|
|
%a57 = alloca i64, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = mul i64 16, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t3 = call ptr @finch_alloc(i64 %t2)
|
|
%t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.286, i64 2, i64 0 }, ptr %t4
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.287, i64 2, i64 0 }, ptr %t5
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.288, i64 2, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.289, i64 2, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.290, i64 2, i64 0 }, ptr %t8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.291, i64 2, i64 0 }, ptr %t9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.292, i64 2, i64 0 }, ptr %t10
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.293, i64 2, i64 0 }, ptr %t11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.294, i64 2, i64 0 }, ptr %t12
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.295, i64 2, i64 0 }, ptr %t13
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10
|
|
store { ptr, i64, i64 } { ptr @.str.296, i64 2, i64 0 }, ptr %t14
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11
|
|
store { ptr, i64, i64 } { ptr @.str.297, i64 2, i64 0 }, ptr %t15
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12
|
|
store { ptr, i64, i64 } { ptr @.str.298, i64 2, i64 0 }, ptr %t16
|
|
%t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13
|
|
store { ptr, i64, i64 } { ptr @.str.299, i64 2, i64 0 }, ptr %t17
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14
|
|
store { ptr, i64, i64 } { ptr @.str.300, i64 2, i64 0 }, ptr %t18
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15
|
|
store { ptr, i64, i64 } { ptr @.str.301, i64 2, i64 0 }, ptr %t19
|
|
%t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0
|
|
%t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1
|
|
%t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = icmp eq ptr %t24, null
|
|
br i1 %t25, label %panic433, label %ok434
|
|
panic433:
|
|
call void @finch_panic(ptr @.str.302, i64 67, ptr @.str.303)
|
|
unreachable
|
|
ok434:
|
|
%t26 = getelementptr inbounds %S.lexer.Lexer, ptr %t24, i32 0, i32 2
|
|
%t27 = load i64, ptr %t26
|
|
%t28 = add i64 %t27, 1
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = icmp eq ptr %t29, null
|
|
br i1 %t30, label %panic435, label %ok436
|
|
panic435:
|
|
call void @finch_panic(ptr @.str.304, i64 67, ptr @.str.305)
|
|
unreachable
|
|
ok436:
|
|
%t31 = getelementptr inbounds %S.lexer.Lexer, ptr %t29, i32 0, i32 0
|
|
%t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1
|
|
%t33 = load i64, ptr %t32
|
|
%t34 = icmp slt i64 %t28, %t33
|
|
br i1 %t34, label %then437, label %endif439
|
|
then437:
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = icmp eq ptr %t35, null
|
|
br i1 %t36, label %panic440, label %ok441
|
|
panic440:
|
|
call void @finch_panic(ptr @.str.306, i64 68, ptr @.str.307)
|
|
unreachable
|
|
ok441:
|
|
%t37 = getelementptr inbounds %S.lexer.Lexer, ptr %t35, i32 0, i32 0
|
|
%t38 = load { ptr, i64, i64 }, ptr %t37
|
|
store { ptr, i64, i64 } %t38, ptr %a39
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = icmp eq ptr %t41, null
|
|
br i1 %t42, label %panic442, label %ok443
|
|
panic442:
|
|
call void @finch_panic(ptr @.str.309, i64 68, ptr @.str.310)
|
|
unreachable
|
|
ok443:
|
|
%t43 = getelementptr inbounds %S.lexer.Lexer, ptr %t41, i32 0, i32 2
|
|
%t44 = load i64, ptr %t43
|
|
%t45 = load ptr, ptr %a1
|
|
%t46 = icmp eq ptr %t45, null
|
|
br i1 %t46, label %panic444, label %ok445
|
|
panic444:
|
|
call void @finch_panic(ptr @.str.311, i64 68, ptr @.str.312)
|
|
unreachable
|
|
ok445:
|
|
%t47 = getelementptr inbounds %S.lexer.Lexer, ptr %t45, i32 0, i32 2
|
|
%t48 = load i64, ptr %t47
|
|
%t49 = add i64 %t48, 2
|
|
call void @finch_str_sub(ptr %a40, ptr %a39, i64 %t44, i64 %t49, ptr @.str.308, i64 68)
|
|
%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.cond446
|
|
find.cond446:
|
|
%t58 = load i64, ptr %a57
|
|
%t59 = icmp slt i64 %t58, %t55
|
|
br i1 %t59, label %find.body447, label %find.end450
|
|
find.body447:
|
|
%t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i64 %t58
|
|
%t61 = load { ptr, i64, i64 }, ptr %t60
|
|
store { ptr, i64, i64 } %t61, ptr %a62
|
|
store { ptr, i64, i64 } %t53, ptr %a63
|
|
%t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63)
|
|
%t65 = icmp ne i32 %t64, 0
|
|
br i1 %t65, label %find.hit448, label %find.next449
|
|
find.hit448:
|
|
store i64 %t58, ptr %a54
|
|
br label %find.end450
|
|
find.next449:
|
|
%t66 = add i64 %t58, 1
|
|
store i64 %t66, ptr %a57
|
|
br label %find.cond446
|
|
find.end450:
|
|
%t67 = load i64, ptr %a54
|
|
%t68 = icmp sge i64 %t67, 0
|
|
br i1 %t68, label %then451, label %endif453
|
|
then451:
|
|
%t69 = load { ptr, i64, i64 }, ptr %a51
|
|
ret { ptr, i64, i64 } %t69
|
|
endif453:
|
|
br label %endif439
|
|
endif439:
|
|
store { ptr, i64, i64 } { ptr @.str.313, i64 22, i64 0 }, ptr %a70
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = icmp eq ptr %t71, null
|
|
br i1 %t72, label %panic454, label %ok455
|
|
panic454:
|
|
call void @finch_panic(ptr @.str.314, i64 74, ptr @.str.315)
|
|
unreachable
|
|
ok455:
|
|
%t73 = getelementptr inbounds %S.lexer.Lexer, ptr %t71, i32 0, i32 0
|
|
%t74 = load { ptr, i64, i64 }, ptr %t73
|
|
store { ptr, i64, i64 } %t74, ptr %a75
|
|
%t77 = load ptr, ptr %a1
|
|
%t78 = icmp eq ptr %t77, null
|
|
br i1 %t78, label %panic456, label %ok457
|
|
panic456:
|
|
call void @finch_panic(ptr @.str.317, i64 74, ptr @.str.318)
|
|
unreachable
|
|
ok457:
|
|
%t79 = getelementptr inbounds %S.lexer.Lexer, ptr %t77, i32 0, i32 2
|
|
%t80 = load i64, ptr %t79
|
|
%t81 = load ptr, ptr %a1
|
|
%t82 = icmp eq ptr %t81, null
|
|
br i1 %t82, label %panic458, label %ok459
|
|
panic458:
|
|
call void @finch_panic(ptr @.str.319, i64 74, ptr @.str.320)
|
|
unreachable
|
|
ok459:
|
|
%t83 = getelementptr inbounds %S.lexer.Lexer, ptr %t81, i32 0, i32 2
|
|
%t84 = load i64, ptr %t83
|
|
%t85 = add i64 %t84, 1
|
|
call void @finch_str_sub(ptr %a76, ptr %a75, i64 %t80, i64 %t85, ptr @.str.316, i64 74)
|
|
%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 %then460, label %endif462
|
|
then460:
|
|
%t95 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t95, ptr %a96
|
|
call void @finch_str_copy(ptr %a97, ptr %a96)
|
|
%t98 = load { ptr, i64, i64 }, ptr %a97
|
|
ret { ptr, i64, i64 } %t98
|
|
endif462:
|
|
ret { ptr, i64, i64 } { ptr @.str.322, i64 0, i64 0 }
|
|
}
|
|
|
|
define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i8, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i8 %p1, ptr %a2
|
|
%t3 = load i8, ptr %a2
|
|
%t4 = icmp eq i8 %t3, 110
|
|
br i1 %t4, label %then463, label %endif465
|
|
then463:
|
|
ret i8 10
|
|
endif465:
|
|
%t5 = load i8, ptr %a2
|
|
%t6 = icmp eq i8 %t5, 116
|
|
br i1 %t6, label %then466, label %endif468
|
|
then466:
|
|
ret i8 9
|
|
endif468:
|
|
%t7 = load i8, ptr %a2
|
|
%t8 = icmp eq i8 %t7, 114
|
|
br i1 %t8, label %then469, label %endif471
|
|
then469:
|
|
ret i8 13
|
|
endif471:
|
|
%t9 = load i8, ptr %a2
|
|
%t10 = icmp eq i8 %t9, 48
|
|
br i1 %t10, label %then472, label %endif474
|
|
then472:
|
|
%t11 = trunc i64 0 to i8
|
|
ret i8 %t11
|
|
endif474:
|
|
%t12 = load i8, ptr %a2
|
|
%t13 = icmp eq i8 %t12, 92
|
|
br label %logic.from475
|
|
logic.from475:
|
|
br i1 %t13, label %logic.end477, label %logic.rhs476
|
|
logic.rhs476:
|
|
%t14 = load i8, ptr %a2
|
|
%t15 = icmp eq i8 %t14, 34
|
|
br label %logic.rend478
|
|
logic.rend478:
|
|
br label %logic.end477
|
|
logic.end477:
|
|
%t16 = phi i1 [ true, %logic.from475 ], [ %t15, %logic.rend478 ]
|
|
br label %logic.from479
|
|
logic.from479:
|
|
br i1 %t16, label %logic.end481, label %logic.rhs480
|
|
logic.rhs480:
|
|
%t17 = load i8, ptr %a2
|
|
%t18 = icmp eq i8 %t17, 39
|
|
br label %logic.rend482
|
|
logic.rend482:
|
|
br label %logic.end481
|
|
logic.end481:
|
|
%t19 = phi i1 [ true, %logic.from479 ], [ %t18, %logic.rend482 ]
|
|
br i1 %t19, label %then483, label %endif485
|
|
then483:
|
|
%t20 = load i8, ptr %a2
|
|
ret i8 %t20
|
|
endif485:
|
|
%t21 = load ptr, ptr %a1
|
|
%t22 = load ptr, ptr %a1
|
|
%t23 = icmp eq ptr %t22, null
|
|
br i1 %t23, label %panic486, label %ok487
|
|
panic486:
|
|
call void @finch_panic(ptr @.str.323, i64 97, ptr @.str.324)
|
|
unreachable
|
|
ok487:
|
|
%t24 = getelementptr inbounds %S.lexer.Lexer, ptr %t22, i32 0, i32 3
|
|
%t25 = load i64, ptr %t24
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = icmp eq ptr %t26, null
|
|
br i1 %t27, label %panic488, label %ok489
|
|
panic488:
|
|
call void @finch_panic(ptr @.str.325, i64 97, ptr @.str.326)
|
|
unreachable
|
|
ok489:
|
|
%t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 4
|
|
%t29 = load i64, ptr %t28
|
|
%t30 = sub i64 %t29, 1
|
|
%t31 = load i8, ptr %a2
|
|
call void @finch_str_from_char(ptr %a32, i8 signext %t31)
|
|
%t33 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.327, i64 16, i64 0 }, ptr %a35
|
|
store { ptr, i64, i64 } %t33, ptr %a36
|
|
call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a34
|
|
call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t37)
|
|
%t38 = load i8, ptr %a2
|
|
ret i8 %t38
|
|
}
|
|
|
|
define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.lexer.Token, ptr %src
|
|
store %S.lexer.Token %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.lexer.Token, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.lexer.Token, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.lexer.Token, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.lexer.Token, ptr %src, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.arr_S_lexer_Token(ptr %dst, ptr %src) {
|
|
entry:
|
|
%a5 = alloca i64, align 16
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64))
|
|
%t1 = load ptr, ptr %dst
|
|
%t2 = load ptr, ptr %src
|
|
%t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1
|
|
%t4 = load i64, ptr %t3
|
|
store i64 0, ptr %a5
|
|
br label %n.cond796
|
|
n.cond796:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body797, label %n.end798
|
|
n.body797:
|
|
%t8 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds %S.lexer.Token, ptr %t2, i64 %t6
|
|
call void @finch.copy.S_lexer_Token(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond796
|
|
n.end798:
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca %S.lexer.Lexer, align 16
|
|
%a18 = alloca ptr, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca i8, align 16
|
|
%a98 = alloca i64, align 16
|
|
%a103 = alloca i64, align 16
|
|
%a169 = alloca %S.lexer.Token, align 16
|
|
%a177 = alloca i64, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a242 = alloca { ptr, i64, i64 }, align 16
|
|
%a395 = alloca { ptr, i64, i64 }, align 16
|
|
%a396 = alloca { ptr, i64, i64 }, align 16
|
|
%a403 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a405 = alloca { ptr, i64, i64 }, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a415 = alloca i8, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a448 = alloca i8, align 16
|
|
%a454 = alloca i8, align 16
|
|
%a461 = alloca { ptr, i64, i64 }, align 16
|
|
%a469 = alloca { ptr, i64, i64 }, align 16
|
|
%a470 = alloca { ptr, i64, i64 }, align 16
|
|
%a487 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca i64, align 16
|
|
%a504 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a518 = alloca { ptr, i64, i64 }, align 16
|
|
%a530 = alloca { ptr, i64, i64 }, align 16
|
|
%a531 = alloca { ptr, i64, i64 }, align 16
|
|
%a532 = alloca { ptr, i64, i64 }, align 16
|
|
%a534 = alloca { ptr, i64, i64 }, align 16
|
|
%a535 = alloca { ptr, i64, i64 }, align 16
|
|
%a536 = alloca { ptr, i64, i64 }, align 16
|
|
%a539 = alloca { ptr, i64, i64 }, align 16
|
|
%a540 = alloca { ptr, i64, i64 }, align 16
|
|
%a541 = alloca { ptr, i64, i64 }, align 16
|
|
%a545 = alloca i64, align 16
|
|
%a553 = alloca { ptr, i64, i64 }, align 16
|
|
%a554 = alloca { ptr, i64, i64 }, align 16
|
|
%a558 = alloca { ptr, i64, i64 }, align 16
|
|
%a559 = alloca { ptr, i64, i64 }, align 16
|
|
%a563 = alloca %S.lexer.Token, align 16
|
|
%a564 = alloca %S.lexer.Token, align 16
|
|
%a589 = alloca { ptr, i64, i64 }, align 16
|
|
%a590 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
call void @finch_str_copy(ptr %a5, ptr %a4)
|
|
%t6 = load { ptr, i64, i64 }, ptr %a5
|
|
%t7 = insertvalue %S.lexer.Lexer zeroinitializer, { ptr, i64, i64 } %t6, 0
|
|
%t8 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
call void @finch_str_copy(ptr %a10, ptr %a9)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a10
|
|
%t12 = insertvalue %S.lexer.Lexer %t7, { ptr, i64, i64 } %t11, 1
|
|
%t13 = insertvalue %S.lexer.Lexer %t12, i64 0, 2
|
|
%t14 = insertvalue %S.lexer.Lexer %t13, i64 1, 3
|
|
%t15 = insertvalue %S.lexer.Lexer %t14, i64 1, 4
|
|
%t16 = insertvalue %S.lexer.Lexer %t15, i1 true, 5
|
|
store %S.lexer.Lexer %t16, ptr %a17
|
|
store ptr %a17, ptr %a18
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a19
|
|
br label %while.cond490
|
|
while.cond490:
|
|
%t20 = load ptr, ptr %a18
|
|
%t21 = icmp eq ptr %t20, null
|
|
br i1 %t21, label %panic493, label %ok494
|
|
panic493:
|
|
call void @finch_panic(ptr @.str.328, i64 105, ptr @.str.329)
|
|
unreachable
|
|
ok494:
|
|
%t22 = getelementptr inbounds %S.lexer.Lexer, ptr %t20, i32 0, i32 2
|
|
%t23 = load i64, ptr %t22
|
|
%t24 = load ptr, ptr %a18
|
|
%t25 = icmp eq ptr %t24, null
|
|
br i1 %t25, label %panic495, label %ok496
|
|
panic495:
|
|
call void @finch_panic(ptr @.str.330, i64 105, ptr @.str.331)
|
|
unreachable
|
|
ok496:
|
|
%t26 = getelementptr inbounds %S.lexer.Lexer, ptr %t24, i32 0, i32 0
|
|
%t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i32 0, i32 1
|
|
%t28 = load i64, ptr %t27
|
|
%t29 = icmp slt i64 %t23, %t28
|
|
br i1 %t29, label %while.body491, label %while.end492
|
|
while.body491:
|
|
%t30 = load ptr, ptr %a18
|
|
%t31 = icmp eq ptr %t30, null
|
|
br i1 %t31, label %panic497, label %ok498
|
|
panic497:
|
|
call void @finch_panic(ptr @.str.332, i64 106, ptr @.str.333)
|
|
unreachable
|
|
ok498:
|
|
%t32 = getelementptr inbounds %S.lexer.Lexer, ptr %t30, i32 0, i32 0
|
|
%t33 = load ptr, ptr %a18
|
|
%t34 = icmp eq ptr %t33, null
|
|
br i1 %t34, label %panic499, label %ok500
|
|
panic499:
|
|
call void @finch_panic(ptr @.str.334, i64 106, ptr @.str.335)
|
|
unreachable
|
|
ok500:
|
|
%t35 = getelementptr inbounds %S.lexer.Lexer, ptr %t33, i32 0, i32 2
|
|
%t36 = load i64, ptr %t35
|
|
%t37 = load { ptr, i64, i64 }, ptr %t32
|
|
%t38 = extractvalue { ptr, i64, i64 } %t37, 1
|
|
%t39 = icmp uge i64 %t36, %t38
|
|
br i1 %t39, label %range501, label %inrange502
|
|
range501:
|
|
call void @finch_panic_index(ptr @.str.336, i64 106, i64 %t36, i64 %t38)
|
|
unreachable
|
|
inrange502:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds i8, ptr %t40, i64 %t36
|
|
%t42 = load i8, ptr %t41
|
|
store i8 %t42, ptr %a43
|
|
%t44 = load i8, ptr %a43
|
|
%t45 = icmp eq i8 %t44, 32
|
|
br label %logic.from503
|
|
logic.from503:
|
|
br i1 %t45, label %logic.end505, label %logic.rhs504
|
|
logic.rhs504:
|
|
%t46 = load i8, ptr %a43
|
|
%t47 = icmp eq i8 %t46, 9
|
|
br label %logic.rend506
|
|
logic.rend506:
|
|
br label %logic.end505
|
|
logic.end505:
|
|
%t48 = phi i1 [ true, %logic.from503 ], [ %t47, %logic.rend506 ]
|
|
br label %logic.from507
|
|
logic.from507:
|
|
br i1 %t48, label %logic.end509, label %logic.rhs508
|
|
logic.rhs508:
|
|
%t49 = load i8, ptr %a43
|
|
%t50 = icmp eq i8 %t49, 10
|
|
br label %logic.rend510
|
|
logic.rend510:
|
|
br label %logic.end509
|
|
logic.end509:
|
|
%t51 = phi i1 [ true, %logic.from507 ], [ %t50, %logic.rend510 ]
|
|
br label %logic.from511
|
|
logic.from511:
|
|
br i1 %t51, label %logic.end513, label %logic.rhs512
|
|
logic.rhs512:
|
|
%t52 = load i8, ptr %a43
|
|
%t53 = icmp eq i8 %t52, 13
|
|
br label %logic.rend514
|
|
logic.rend514:
|
|
br label %logic.end513
|
|
logic.end513:
|
|
%t54 = phi i1 [ true, %logic.from511 ], [ %t53, %logic.rend514 ]
|
|
br i1 %t54, label %then515, label %endif517
|
|
then515:
|
|
%t55 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t55)
|
|
br label %while.cond490
|
|
endif517:
|
|
%t56 = load i8, ptr %a43
|
|
%t57 = icmp eq i8 %t56, 47
|
|
br label %logic.from518
|
|
logic.from518:
|
|
br i1 %t57, label %logic.rhs519, label %logic.end520
|
|
logic.rhs519:
|
|
%t58 = load ptr, ptr %a18
|
|
%t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1)
|
|
%t60 = icmp eq i8 %t59, 47
|
|
br label %logic.rend521
|
|
logic.rend521:
|
|
br label %logic.end520
|
|
logic.end520:
|
|
%t61 = phi i1 [ false, %logic.from518 ], [ %t60, %logic.rend521 ]
|
|
br i1 %t61, label %then522, label %endif524
|
|
then522:
|
|
br label %while.cond525
|
|
while.cond525:
|
|
%t62 = load ptr, ptr %a18
|
|
%t63 = icmp eq ptr %t62, null
|
|
br i1 %t63, label %panic528, label %ok529
|
|
panic528:
|
|
call void @finch_panic(ptr @.str.337, i64 112, ptr @.str.338)
|
|
unreachable
|
|
ok529:
|
|
%t64 = getelementptr inbounds %S.lexer.Lexer, ptr %t62, i32 0, i32 2
|
|
%t65 = load i64, ptr %t64
|
|
%t66 = load ptr, ptr %a18
|
|
%t67 = icmp eq ptr %t66, null
|
|
br i1 %t67, label %panic530, label %ok531
|
|
panic530:
|
|
call void @finch_panic(ptr @.str.339, i64 112, ptr @.str.340)
|
|
unreachable
|
|
ok531:
|
|
%t68 = getelementptr inbounds %S.lexer.Lexer, ptr %t66, i32 0, i32 0
|
|
%t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1
|
|
%t70 = load i64, ptr %t69
|
|
%t71 = icmp slt i64 %t65, %t70
|
|
br label %logic.from532
|
|
logic.from532:
|
|
br i1 %t71, label %logic.rhs533, label %logic.end534
|
|
logic.rhs533:
|
|
%t72 = load ptr, ptr %a18
|
|
%t73 = icmp eq ptr %t72, null
|
|
br i1 %t73, label %panic535, label %ok536
|
|
panic535:
|
|
call void @finch_panic(ptr @.str.341, i64 112, ptr @.str.342)
|
|
unreachable
|
|
ok536:
|
|
%t74 = getelementptr inbounds %S.lexer.Lexer, ptr %t72, i32 0, i32 0
|
|
%t75 = load ptr, ptr %a18
|
|
%t76 = icmp eq ptr %t75, null
|
|
br i1 %t76, label %panic537, label %ok538
|
|
panic537:
|
|
call void @finch_panic(ptr @.str.343, i64 112, ptr @.str.344)
|
|
unreachable
|
|
ok538:
|
|
%t77 = getelementptr inbounds %S.lexer.Lexer, ptr %t75, i32 0, i32 2
|
|
%t78 = load i64, ptr %t77
|
|
%t79 = load { ptr, i64, i64 }, ptr %t74
|
|
%t80 = extractvalue { ptr, i64, i64 } %t79, 1
|
|
%t81 = icmp uge i64 %t78, %t80
|
|
br i1 %t81, label %range539, label %inrange540
|
|
range539:
|
|
call void @finch_panic_index(ptr @.str.345, i64 112, i64 %t78, i64 %t80)
|
|
unreachable
|
|
inrange540:
|
|
%t82 = extractvalue { ptr, i64, i64 } %t79, 0
|
|
%t83 = getelementptr inbounds i8, ptr %t82, i64 %t78
|
|
%t84 = load i8, ptr %t83
|
|
%t85 = icmp ne i8 %t84, 10
|
|
br label %logic.rend541
|
|
logic.rend541:
|
|
br label %logic.end534
|
|
logic.end534:
|
|
%t86 = phi i1 [ false, %logic.from532 ], [ %t85, %logic.rend541 ]
|
|
br i1 %t86, label %while.body526, label %while.end527
|
|
while.body526:
|
|
%t87 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t87)
|
|
br label %while.cond525
|
|
while.end527:
|
|
br label %while.cond490
|
|
endif524:
|
|
%t88 = load i8, ptr %a43
|
|
%t89 = icmp eq i8 %t88, 47
|
|
br label %logic.from542
|
|
logic.from542:
|
|
br i1 %t89, label %logic.rhs543, label %logic.end544
|
|
logic.rhs543:
|
|
%t90 = load ptr, ptr %a18
|
|
%t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1)
|
|
%t92 = icmp eq i8 %t91, 42
|
|
br label %logic.rend545
|
|
logic.rend545:
|
|
br label %logic.end544
|
|
logic.end544:
|
|
%t93 = phi i1 [ false, %logic.from542 ], [ %t92, %logic.rend545 ]
|
|
br i1 %t93, label %then546, label %endif548
|
|
then546:
|
|
%t94 = load ptr, ptr %a18
|
|
%t95 = icmp eq ptr %t94, null
|
|
br i1 %t95, label %panic549, label %ok550
|
|
panic549:
|
|
call void @finch_panic(ptr @.str.346, i64 118, ptr @.str.347)
|
|
unreachable
|
|
ok550:
|
|
%t96 = getelementptr inbounds %S.lexer.Lexer, ptr %t94, i32 0, i32 3
|
|
%t97 = load i64, ptr %t96
|
|
store i64 %t97, ptr %a98
|
|
%t99 = load ptr, ptr %a18
|
|
%t100 = icmp eq ptr %t99, null
|
|
br i1 %t100, label %panic551, label %ok552
|
|
panic551:
|
|
call void @finch_panic(ptr @.str.348, i64 119, ptr @.str.349)
|
|
unreachable
|
|
ok552:
|
|
%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.cond553
|
|
while.cond553:
|
|
%t106 = load ptr, ptr %a18
|
|
%t107 = icmp eq ptr %t106, null
|
|
br i1 %t107, label %panic556, label %ok557
|
|
panic556:
|
|
call void @finch_panic(ptr @.str.350, i64 122, ptr @.str.351)
|
|
unreachable
|
|
ok557:
|
|
%t108 = getelementptr inbounds %S.lexer.Lexer, ptr %t106, i32 0, i32 2
|
|
%t109 = load i64, ptr %t108
|
|
%t110 = load ptr, ptr %a18
|
|
%t111 = icmp eq ptr %t110, null
|
|
br i1 %t111, label %panic558, label %ok559
|
|
panic558:
|
|
call void @finch_panic(ptr @.str.352, i64 122, ptr @.str.353)
|
|
unreachable
|
|
ok559:
|
|
%t112 = getelementptr inbounds %S.lexer.Lexer, ptr %t110, i32 0, i32 0
|
|
%t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1
|
|
%t114 = load i64, ptr %t113
|
|
%t115 = icmp slt i64 %t109, %t114
|
|
br label %logic.from560
|
|
logic.from560:
|
|
br i1 %t115, label %logic.rhs561, label %logic.end562
|
|
logic.rhs561:
|
|
%t116 = load ptr, ptr %a18
|
|
%t117 = icmp eq ptr %t116, null
|
|
br i1 %t117, label %panic563, label %ok564
|
|
panic563:
|
|
call void @finch_panic(ptr @.str.354, i64 122, ptr @.str.355)
|
|
unreachable
|
|
ok564:
|
|
%t118 = getelementptr inbounds %S.lexer.Lexer, ptr %t116, i32 0, i32 0
|
|
%t119 = load ptr, ptr %a18
|
|
%t120 = icmp eq ptr %t119, null
|
|
br i1 %t120, label %panic565, label %ok566
|
|
panic565:
|
|
call void @finch_panic(ptr @.str.356, i64 122, ptr @.str.357)
|
|
unreachable
|
|
ok566:
|
|
%t121 = getelementptr inbounds %S.lexer.Lexer, ptr %t119, i32 0, i32 2
|
|
%t122 = load i64, ptr %t121
|
|
%t123 = load { ptr, i64, i64 }, ptr %t118
|
|
%t124 = extractvalue { ptr, i64, i64 } %t123, 1
|
|
%t125 = icmp uge i64 %t122, %t124
|
|
br i1 %t125, label %range567, label %inrange568
|
|
range567:
|
|
call void @finch_panic_index(ptr @.str.358, i64 122, i64 %t122, i64 %t124)
|
|
unreachable
|
|
inrange568:
|
|
%t126 = extractvalue { ptr, i64, i64 } %t123, 0
|
|
%t127 = getelementptr inbounds i8, ptr %t126, i64 %t122
|
|
%t128 = load i8, ptr %t127
|
|
%t129 = icmp eq i8 %t128, 42
|
|
br label %logic.from569
|
|
logic.from569:
|
|
br i1 %t129, label %logic.rhs570, label %logic.end571
|
|
logic.rhs570:
|
|
%t130 = load ptr, ptr %a18
|
|
%t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1)
|
|
%t132 = icmp eq i8 %t131, 47
|
|
br label %logic.rend572
|
|
logic.rend572:
|
|
br label %logic.end571
|
|
logic.end571:
|
|
%t133 = phi i1 [ false, %logic.from569 ], [ %t132, %logic.rend572 ]
|
|
%t134 = xor i1 %t133, true
|
|
br label %logic.rend573
|
|
logic.rend573:
|
|
br label %logic.end562
|
|
logic.end562:
|
|
%t135 = phi i1 [ false, %logic.from560 ], [ %t134, %logic.rend573 ]
|
|
br i1 %t135, label %while.body554, label %while.end555
|
|
while.body554:
|
|
%t136 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t136)
|
|
br label %while.cond553
|
|
while.end555:
|
|
%t137 = load ptr, ptr %a18
|
|
%t138 = icmp eq ptr %t137, null
|
|
br i1 %t138, label %panic574, label %ok575
|
|
panic574:
|
|
call void @finch_panic(ptr @.str.359, i64 125, ptr @.str.360)
|
|
unreachable
|
|
ok575:
|
|
%t139 = getelementptr inbounds %S.lexer.Lexer, ptr %t137, i32 0, i32 2
|
|
%t140 = load i64, ptr %t139
|
|
%t141 = load ptr, ptr %a18
|
|
%t142 = icmp eq ptr %t141, null
|
|
br i1 %t142, label %panic576, label %ok577
|
|
panic576:
|
|
call void @finch_panic(ptr @.str.361, i64 125, ptr @.str.362)
|
|
unreachable
|
|
ok577:
|
|
%t143 = getelementptr inbounds %S.lexer.Lexer, ptr %t141, i32 0, i32 0
|
|
%t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1
|
|
%t145 = load i64, ptr %t144
|
|
%t146 = icmp sge i64 %t140, %t145
|
|
br i1 %t146, label %then578, label %endif580
|
|
then578:
|
|
%t147 = load ptr, ptr %a18
|
|
%t148 = load i64, ptr %a98
|
|
%t149 = load i64, ptr %a103
|
|
call void @finch.lexer.fail(ptr %t147, i64 %t148, i64 %t149, { ptr, i64, i64 } { ptr @.str.363, i64 36, i64 0 })
|
|
br label %endif580
|
|
endif580:
|
|
%t150 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t150)
|
|
%t151 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t151)
|
|
br label %while.cond490
|
|
endif548:
|
|
%t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.364, i64 0, i64 0 }, 0
|
|
%t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.365, i64 0, i64 0 }, 1
|
|
%t154 = load ptr, ptr %a18
|
|
%t155 = icmp eq ptr %t154, null
|
|
br i1 %t155, label %panic581, label %ok582
|
|
panic581:
|
|
call void @finch_panic(ptr @.str.366, i64 133, ptr @.str.367)
|
|
unreachable
|
|
ok582:
|
|
%t156 = getelementptr inbounds %S.lexer.Lexer, ptr %t154, i32 0, i32 3
|
|
%t157 = load i64, ptr %t156
|
|
%t158 = insertvalue %S.lexer.Token %t153, i64 %t157, 2
|
|
%t159 = load ptr, ptr %a18
|
|
%t160 = icmp eq ptr %t159, null
|
|
br i1 %t160, label %panic583, label %ok584
|
|
panic583:
|
|
call void @finch_panic(ptr @.str.368, i64 133, ptr @.str.369)
|
|
unreachable
|
|
ok584:
|
|
%t161 = getelementptr inbounds %S.lexer.Lexer, ptr %t159, i32 0, i32 4
|
|
%t162 = load i64, ptr %t161
|
|
%t163 = insertvalue %S.lexer.Token %t158, i64 %t162, 3
|
|
%t164 = load ptr, ptr %a18
|
|
%t165 = icmp eq ptr %t164, null
|
|
br i1 %t165, label %panic585, label %ok586
|
|
panic585:
|
|
call void @finch_panic(ptr @.str.370, i64 133, ptr @.str.371)
|
|
unreachable
|
|
ok586:
|
|
%t166 = getelementptr inbounds %S.lexer.Lexer, ptr %t164, i32 0, i32 5
|
|
%t167 = load i1, ptr %t166
|
|
%t168 = insertvalue %S.lexer.Token %t163, i1 %t167, 4
|
|
store %S.lexer.Token %t168, ptr %a169
|
|
%t170 = load ptr, ptr %a18
|
|
%t171 = icmp eq ptr %t170, null
|
|
br i1 %t171, label %panic587, label %ok588
|
|
panic587:
|
|
call void @finch_panic(ptr @.str.372, i64 134, ptr @.str.373)
|
|
unreachable
|
|
ok588:
|
|
%t172 = getelementptr inbounds %S.lexer.Lexer, ptr %t170, i32 0, i32 5
|
|
store i1 false, ptr %t172
|
|
%t173 = load ptr, ptr %a18
|
|
%t174 = icmp eq ptr %t173, null
|
|
br i1 %t174, label %panic589, label %ok590
|
|
panic589:
|
|
call void @finch_panic(ptr @.str.374, i64 135, ptr @.str.375)
|
|
unreachable
|
|
ok590:
|
|
%t175 = getelementptr inbounds %S.lexer.Lexer, ptr %t173, i32 0, i32 2
|
|
%t176 = load i64, ptr %t175
|
|
store i64 %t176, ptr %a177
|
|
%t178 = load i8, ptr %a43
|
|
%t179 = call i1 @finch.lexer.isAlpha(i8 %t178)
|
|
br i1 %t179, label %then591, label %else592
|
|
then591:
|
|
br label %while.cond594
|
|
while.cond594:
|
|
%t180 = load ptr, ptr %a18
|
|
%t181 = icmp eq ptr %t180, null
|
|
br i1 %t181, label %panic597, label %ok598
|
|
panic597:
|
|
call void @finch_panic(ptr @.str.376, i64 137, ptr @.str.377)
|
|
unreachable
|
|
ok598:
|
|
%t182 = getelementptr inbounds %S.lexer.Lexer, ptr %t180, i32 0, i32 2
|
|
%t183 = load i64, ptr %t182
|
|
%t184 = load ptr, ptr %a18
|
|
%t185 = icmp eq ptr %t184, null
|
|
br i1 %t185, label %panic599, label %ok600
|
|
panic599:
|
|
call void @finch_panic(ptr @.str.378, i64 137, ptr @.str.379)
|
|
unreachable
|
|
ok600:
|
|
%t186 = getelementptr inbounds %S.lexer.Lexer, ptr %t184, i32 0, i32 0
|
|
%t187 = getelementptr inbounds { ptr, i64, i64 }, ptr %t186, i32 0, i32 1
|
|
%t188 = load i64, ptr %t187
|
|
%t189 = icmp slt i64 %t183, %t188
|
|
br label %logic.from601
|
|
logic.from601:
|
|
br i1 %t189, label %logic.rhs602, label %logic.end603
|
|
logic.rhs602:
|
|
%t190 = load ptr, ptr %a18
|
|
%t191 = icmp eq ptr %t190, null
|
|
br i1 %t191, label %panic604, label %ok605
|
|
panic604:
|
|
call void @finch_panic(ptr @.str.380, i64 137, ptr @.str.381)
|
|
unreachable
|
|
ok605:
|
|
%t192 = getelementptr inbounds %S.lexer.Lexer, ptr %t190, i32 0, i32 0
|
|
%t193 = load ptr, ptr %a18
|
|
%t194 = icmp eq ptr %t193, null
|
|
br i1 %t194, label %panic606, label %ok607
|
|
panic606:
|
|
call void @finch_panic(ptr @.str.382, i64 137, ptr @.str.383)
|
|
unreachable
|
|
ok607:
|
|
%t195 = getelementptr inbounds %S.lexer.Lexer, ptr %t193, i32 0, i32 2
|
|
%t196 = load i64, ptr %t195
|
|
%t197 = load { ptr, i64, i64 }, ptr %t192
|
|
%t198 = extractvalue { ptr, i64, i64 } %t197, 1
|
|
%t199 = icmp uge i64 %t196, %t198
|
|
br i1 %t199, label %range608, label %inrange609
|
|
range608:
|
|
call void @finch_panic_index(ptr @.str.384, i64 137, i64 %t196, i64 %t198)
|
|
unreachable
|
|
inrange609:
|
|
%t200 = extractvalue { ptr, i64, i64 } %t197, 0
|
|
%t201 = getelementptr inbounds i8, ptr %t200, i64 %t196
|
|
%t202 = load i8, ptr %t201
|
|
%t203 = call i1 @finch.lexer.isAlpha(i8 %t202)
|
|
br label %logic.from610
|
|
logic.from610:
|
|
br i1 %t203, label %logic.end612, label %logic.rhs611
|
|
logic.rhs611:
|
|
%t204 = load ptr, ptr %a18
|
|
%t205 = icmp eq ptr %t204, null
|
|
br i1 %t205, label %panic613, label %ok614
|
|
panic613:
|
|
call void @finch_panic(ptr @.str.385, i64 137, ptr @.str.386)
|
|
unreachable
|
|
ok614:
|
|
%t206 = getelementptr inbounds %S.lexer.Lexer, ptr %t204, i32 0, i32 0
|
|
%t207 = load ptr, ptr %a18
|
|
%t208 = icmp eq ptr %t207, null
|
|
br i1 %t208, label %panic615, label %ok616
|
|
panic615:
|
|
call void @finch_panic(ptr @.str.387, i64 137, ptr @.str.388)
|
|
unreachable
|
|
ok616:
|
|
%t209 = getelementptr inbounds %S.lexer.Lexer, ptr %t207, i32 0, i32 2
|
|
%t210 = load i64, ptr %t209
|
|
%t211 = load { ptr, i64, i64 }, ptr %t206
|
|
%t212 = extractvalue { ptr, i64, i64 } %t211, 1
|
|
%t213 = icmp uge i64 %t210, %t212
|
|
br i1 %t213, label %range617, label %inrange618
|
|
range617:
|
|
call void @finch_panic_index(ptr @.str.389, i64 137, i64 %t210, i64 %t212)
|
|
unreachable
|
|
inrange618:
|
|
%t214 = extractvalue { ptr, i64, i64 } %t211, 0
|
|
%t215 = getelementptr inbounds i8, ptr %t214, i64 %t210
|
|
%t216 = load i8, ptr %t215
|
|
%t217 = call i1 @finch.lexer.isDigit(i8 %t216)
|
|
br label %logic.rend619
|
|
logic.rend619:
|
|
br label %logic.end612
|
|
logic.end612:
|
|
%t218 = phi i1 [ true, %logic.from610 ], [ %t217, %logic.rend619 ]
|
|
br label %logic.rend620
|
|
logic.rend620:
|
|
br label %logic.end603
|
|
logic.end603:
|
|
%t219 = phi i1 [ false, %logic.from601 ], [ %t218, %logic.rend620 ]
|
|
br i1 %t219, label %while.body595, label %while.end596
|
|
while.body595:
|
|
%t220 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t220)
|
|
br label %while.cond594
|
|
while.end596:
|
|
%t221 = load ptr, ptr %a18
|
|
%t222 = icmp eq ptr %t221, null
|
|
br i1 %t222, label %panic621, label %ok622
|
|
panic621:
|
|
call void @finch_panic(ptr @.str.390, i64 140, ptr @.str.391)
|
|
unreachable
|
|
ok622:
|
|
%t223 = getelementptr inbounds %S.lexer.Lexer, ptr %t221, i32 0, i32 0
|
|
%t224 = load { ptr, i64, i64 }, ptr %t223
|
|
store { ptr, i64, i64 } %t224, ptr %a225
|
|
%t227 = load i64, ptr %a177
|
|
%t228 = load ptr, ptr %a18
|
|
%t229 = icmp eq ptr %t228, null
|
|
br i1 %t229, label %panic623, label %ok624
|
|
panic623:
|
|
call void @finch_panic(ptr @.str.393, i64 140, ptr @.str.394)
|
|
unreachable
|
|
ok624:
|
|
%t230 = getelementptr inbounds %S.lexer.Lexer, ptr %t228, i32 0, i32 2
|
|
%t231 = load i64, ptr %t230
|
|
call void @finch_str_sub(ptr %a226, ptr %a225, i64 %t227, i64 %t231, ptr @.str.392, i64 140)
|
|
%t232 = load { ptr, i64, i64 }, ptr %a226
|
|
%t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t232, ptr %t233
|
|
%t234 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.395, i64 5, i64 0 }, ptr %t234
|
|
%t235 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1
|
|
%t236 = load { ptr, i64, i64 }, ptr %t235
|
|
%t237 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t236)
|
|
br i1 %t237, label %then625, label %endif627
|
|
then625:
|
|
%t238 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1
|
|
%t239 = load { ptr, i64, i64 }, ptr %t238
|
|
%t240 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0
|
|
store { ptr, i64, i64 } %t239, ptr %a241
|
|
call void @finch_str_copy(ptr %a242, ptr %a241)
|
|
%t243 = load { ptr, i64, i64 }, ptr %a242
|
|
store { ptr, i64, i64 } %t243, ptr %t240
|
|
br label %endif627
|
|
endif627:
|
|
br label %endif593
|
|
else592:
|
|
%t244 = load i8, ptr %a43
|
|
%t245 = call i1 @finch.lexer.isDigit(i8 %t244)
|
|
br i1 %t245, label %then628, label %else629
|
|
then628:
|
|
%t246 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.396, i64 3, i64 0 }, ptr %t246
|
|
%t247 = load i8, ptr %a43
|
|
%t248 = icmp eq i8 %t247, 48
|
|
br label %logic.from631
|
|
logic.from631:
|
|
br i1 %t248, label %logic.rhs632, label %logic.end633
|
|
logic.rhs632:
|
|
%t249 = load ptr, ptr %a18
|
|
%t250 = call i8 @finch.lexer.peek(ptr %t249, i64 1)
|
|
%t251 = icmp eq i8 %t250, 120
|
|
br label %logic.from634
|
|
logic.from634:
|
|
br i1 %t251, label %logic.end636, label %logic.rhs635
|
|
logic.rhs635:
|
|
%t252 = load ptr, ptr %a18
|
|
%t253 = call i8 @finch.lexer.peek(ptr %t252, i64 1)
|
|
%t254 = icmp eq i8 %t253, 88
|
|
br label %logic.rend637
|
|
logic.rend637:
|
|
br label %logic.end636
|
|
logic.end636:
|
|
%t255 = phi i1 [ true, %logic.from634 ], [ %t254, %logic.rend637 ]
|
|
br label %logic.rend638
|
|
logic.rend638:
|
|
br label %logic.end633
|
|
logic.end633:
|
|
%t256 = phi i1 [ false, %logic.from631 ], [ %t255, %logic.rend638 ]
|
|
br i1 %t256, label %then639, label %else640
|
|
then639:
|
|
%t257 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t257)
|
|
%t258 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t258)
|
|
br label %while.cond642
|
|
while.cond642:
|
|
%t259 = load ptr, ptr %a18
|
|
%t260 = icmp eq ptr %t259, null
|
|
br i1 %t260, label %panic645, label %ok646
|
|
panic645:
|
|
call void @finch_panic(ptr @.str.397, i64 150, ptr @.str.398)
|
|
unreachable
|
|
ok646:
|
|
%t261 = getelementptr inbounds %S.lexer.Lexer, ptr %t259, i32 0, i32 2
|
|
%t262 = load i64, ptr %t261
|
|
%t263 = load ptr, ptr %a18
|
|
%t264 = icmp eq ptr %t263, null
|
|
br i1 %t264, label %panic647, label %ok648
|
|
panic647:
|
|
call void @finch_panic(ptr @.str.399, i64 150, ptr @.str.400)
|
|
unreachable
|
|
ok648:
|
|
%t265 = getelementptr inbounds %S.lexer.Lexer, ptr %t263, i32 0, i32 0
|
|
%t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1
|
|
%t267 = load i64, ptr %t266
|
|
%t268 = icmp slt i64 %t262, %t267
|
|
br label %logic.from649
|
|
logic.from649:
|
|
br i1 %t268, label %logic.rhs650, label %logic.end651
|
|
logic.rhs650:
|
|
%t269 = load ptr, ptr %a18
|
|
%t270 = icmp eq ptr %t269, null
|
|
br i1 %t270, label %panic652, label %ok653
|
|
panic652:
|
|
call void @finch_panic(ptr @.str.401, i64 150, ptr @.str.402)
|
|
unreachable
|
|
ok653:
|
|
%t271 = getelementptr inbounds %S.lexer.Lexer, ptr %t269, i32 0, i32 0
|
|
%t272 = load ptr, ptr %a18
|
|
%t273 = icmp eq ptr %t272, null
|
|
br i1 %t273, label %panic654, label %ok655
|
|
panic654:
|
|
call void @finch_panic(ptr @.str.403, i64 150, ptr @.str.404)
|
|
unreachable
|
|
ok655:
|
|
%t274 = getelementptr inbounds %S.lexer.Lexer, ptr %t272, i32 0, i32 2
|
|
%t275 = load i64, ptr %t274
|
|
%t276 = load { ptr, i64, i64 }, ptr %t271
|
|
%t277 = extractvalue { ptr, i64, i64 } %t276, 1
|
|
%t278 = icmp uge i64 %t275, %t277
|
|
br i1 %t278, label %range656, label %inrange657
|
|
range656:
|
|
call void @finch_panic_index(ptr @.str.405, i64 150, i64 %t275, i64 %t277)
|
|
unreachable
|
|
inrange657:
|
|
%t279 = extractvalue { ptr, i64, i64 } %t276, 0
|
|
%t280 = getelementptr inbounds i8, ptr %t279, i64 %t275
|
|
%t281 = load i8, ptr %t280
|
|
%t282 = call i1 @finch.lexer.isHex(i8 %t281)
|
|
br label %logic.from658
|
|
logic.from658:
|
|
br i1 %t282, label %logic.end660, label %logic.rhs659
|
|
logic.rhs659:
|
|
%t283 = load ptr, ptr %a18
|
|
%t284 = icmp eq ptr %t283, null
|
|
br i1 %t284, label %panic661, label %ok662
|
|
panic661:
|
|
call void @finch_panic(ptr @.str.406, i64 150, ptr @.str.407)
|
|
unreachable
|
|
ok662:
|
|
%t285 = getelementptr inbounds %S.lexer.Lexer, ptr %t283, i32 0, i32 0
|
|
%t286 = load ptr, ptr %a18
|
|
%t287 = icmp eq ptr %t286, null
|
|
br i1 %t287, label %panic663, label %ok664
|
|
panic663:
|
|
call void @finch_panic(ptr @.str.408, i64 150, ptr @.str.409)
|
|
unreachable
|
|
ok664:
|
|
%t288 = getelementptr inbounds %S.lexer.Lexer, ptr %t286, i32 0, i32 2
|
|
%t289 = load i64, ptr %t288
|
|
%t290 = load { ptr, i64, i64 }, ptr %t285
|
|
%t291 = extractvalue { ptr, i64, i64 } %t290, 1
|
|
%t292 = icmp uge i64 %t289, %t291
|
|
br i1 %t292, label %range665, label %inrange666
|
|
range665:
|
|
call void @finch_panic_index(ptr @.str.410, i64 150, i64 %t289, i64 %t291)
|
|
unreachable
|
|
inrange666:
|
|
%t293 = extractvalue { ptr, i64, i64 } %t290, 0
|
|
%t294 = getelementptr inbounds i8, ptr %t293, i64 %t289
|
|
%t295 = load i8, ptr %t294
|
|
%t296 = icmp eq i8 %t295, 95
|
|
br label %logic.rend667
|
|
logic.rend667:
|
|
br label %logic.end660
|
|
logic.end660:
|
|
%t297 = phi i1 [ true, %logic.from658 ], [ %t296, %logic.rend667 ]
|
|
br label %logic.rend668
|
|
logic.rend668:
|
|
br label %logic.end651
|
|
logic.end651:
|
|
%t298 = phi i1 [ false, %logic.from649 ], [ %t297, %logic.rend668 ]
|
|
br i1 %t298, label %while.body643, label %while.end644
|
|
while.body643:
|
|
%t299 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t299)
|
|
br label %while.cond642
|
|
while.end644:
|
|
br label %endif641
|
|
else640:
|
|
br label %while.cond669
|
|
while.cond669:
|
|
%t300 = load ptr, ptr %a18
|
|
%t301 = icmp eq ptr %t300, null
|
|
br i1 %t301, label %panic672, label %ok673
|
|
panic672:
|
|
call void @finch_panic(ptr @.str.411, i64 154, ptr @.str.412)
|
|
unreachable
|
|
ok673:
|
|
%t302 = getelementptr inbounds %S.lexer.Lexer, ptr %t300, i32 0, i32 2
|
|
%t303 = load i64, ptr %t302
|
|
%t304 = load ptr, ptr %a18
|
|
%t305 = icmp eq ptr %t304, null
|
|
br i1 %t305, label %panic674, label %ok675
|
|
panic674:
|
|
call void @finch_panic(ptr @.str.413, i64 154, ptr @.str.414)
|
|
unreachable
|
|
ok675:
|
|
%t306 = getelementptr inbounds %S.lexer.Lexer, ptr %t304, i32 0, i32 0
|
|
%t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i32 0, i32 1
|
|
%t308 = load i64, ptr %t307
|
|
%t309 = icmp slt i64 %t303, %t308
|
|
br label %logic.from676
|
|
logic.from676:
|
|
br i1 %t309, label %logic.rhs677, label %logic.end678
|
|
logic.rhs677:
|
|
%t310 = load ptr, ptr %a18
|
|
%t311 = icmp eq ptr %t310, null
|
|
br i1 %t311, label %panic679, label %ok680
|
|
panic679:
|
|
call void @finch_panic(ptr @.str.415, i64 154, ptr @.str.416)
|
|
unreachable
|
|
ok680:
|
|
%t312 = getelementptr inbounds %S.lexer.Lexer, ptr %t310, i32 0, i32 0
|
|
%t313 = load ptr, ptr %a18
|
|
%t314 = icmp eq ptr %t313, null
|
|
br i1 %t314, label %panic681, label %ok682
|
|
panic681:
|
|
call void @finch_panic(ptr @.str.417, i64 154, ptr @.str.418)
|
|
unreachable
|
|
ok682:
|
|
%t315 = getelementptr inbounds %S.lexer.Lexer, ptr %t313, i32 0, i32 2
|
|
%t316 = load i64, ptr %t315
|
|
%t317 = load { ptr, i64, i64 }, ptr %t312
|
|
%t318 = extractvalue { ptr, i64, i64 } %t317, 1
|
|
%t319 = icmp uge i64 %t316, %t318
|
|
br i1 %t319, label %range683, label %inrange684
|
|
range683:
|
|
call void @finch_panic_index(ptr @.str.419, i64 154, i64 %t316, i64 %t318)
|
|
unreachable
|
|
inrange684:
|
|
%t320 = extractvalue { ptr, i64, i64 } %t317, 0
|
|
%t321 = getelementptr inbounds i8, ptr %t320, i64 %t316
|
|
%t322 = load i8, ptr %t321
|
|
%t323 = call i1 @finch.lexer.isDigit(i8 %t322)
|
|
br label %logic.from685
|
|
logic.from685:
|
|
br i1 %t323, label %logic.end687, label %logic.rhs686
|
|
logic.rhs686:
|
|
%t324 = load ptr, ptr %a18
|
|
%t325 = icmp eq ptr %t324, null
|
|
br i1 %t325, label %panic688, label %ok689
|
|
panic688:
|
|
call void @finch_panic(ptr @.str.420, i64 154, ptr @.str.421)
|
|
unreachable
|
|
ok689:
|
|
%t326 = getelementptr inbounds %S.lexer.Lexer, ptr %t324, i32 0, i32 0
|
|
%t327 = load ptr, ptr %a18
|
|
%t328 = icmp eq ptr %t327, null
|
|
br i1 %t328, label %panic690, label %ok691
|
|
panic690:
|
|
call void @finch_panic(ptr @.str.422, i64 154, ptr @.str.423)
|
|
unreachable
|
|
ok691:
|
|
%t329 = getelementptr inbounds %S.lexer.Lexer, ptr %t327, i32 0, i32 2
|
|
%t330 = load i64, ptr %t329
|
|
%t331 = load { ptr, i64, i64 }, ptr %t326
|
|
%t332 = extractvalue { ptr, i64, i64 } %t331, 1
|
|
%t333 = icmp uge i64 %t330, %t332
|
|
br i1 %t333, label %range692, label %inrange693
|
|
range692:
|
|
call void @finch_panic_index(ptr @.str.424, i64 154, i64 %t330, i64 %t332)
|
|
unreachable
|
|
inrange693:
|
|
%t334 = extractvalue { ptr, i64, i64 } %t331, 0
|
|
%t335 = getelementptr inbounds i8, ptr %t334, i64 %t330
|
|
%t336 = load i8, ptr %t335
|
|
%t337 = icmp eq i8 %t336, 95
|
|
br label %logic.rend694
|
|
logic.rend694:
|
|
br label %logic.end687
|
|
logic.end687:
|
|
%t338 = phi i1 [ true, %logic.from685 ], [ %t337, %logic.rend694 ]
|
|
br label %logic.rend695
|
|
logic.rend695:
|
|
br label %logic.end678
|
|
logic.end678:
|
|
%t339 = phi i1 [ false, %logic.from676 ], [ %t338, %logic.rend695 ]
|
|
br i1 %t339, label %while.body670, label %while.end671
|
|
while.body670:
|
|
%t340 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t340)
|
|
br label %while.cond669
|
|
while.end671:
|
|
%t341 = load ptr, ptr %a18
|
|
%t342 = call i8 @finch.lexer.peek(ptr %t341, i64 0)
|
|
%t343 = icmp eq i8 %t342, 46
|
|
br label %logic.from696
|
|
logic.from696:
|
|
br i1 %t343, label %logic.rhs697, label %logic.end698
|
|
logic.rhs697:
|
|
%t344 = load ptr, ptr %a18
|
|
%t345 = call i8 @finch.lexer.peek(ptr %t344, i64 1)
|
|
%t346 = call i1 @finch.lexer.isDigit(i8 %t345)
|
|
br label %logic.rend699
|
|
logic.rend699:
|
|
br label %logic.end698
|
|
logic.end698:
|
|
%t347 = phi i1 [ false, %logic.from696 ], [ %t346, %logic.rend699 ]
|
|
br i1 %t347, label %then700, label %endif702
|
|
then700:
|
|
%t348 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.425, i64 5, i64 0 }, ptr %t348
|
|
%t349 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t349)
|
|
br label %while.cond703
|
|
while.cond703:
|
|
%t350 = load ptr, ptr %a18
|
|
%t351 = icmp eq ptr %t350, null
|
|
br i1 %t351, label %panic706, label %ok707
|
|
panic706:
|
|
call void @finch_panic(ptr @.str.426, i64 160, ptr @.str.427)
|
|
unreachable
|
|
ok707:
|
|
%t352 = getelementptr inbounds %S.lexer.Lexer, ptr %t350, i32 0, i32 2
|
|
%t353 = load i64, ptr %t352
|
|
%t354 = load ptr, ptr %a18
|
|
%t355 = icmp eq ptr %t354, null
|
|
br i1 %t355, label %panic708, label %ok709
|
|
panic708:
|
|
call void @finch_panic(ptr @.str.428, i64 160, ptr @.str.429)
|
|
unreachable
|
|
ok709:
|
|
%t356 = getelementptr inbounds %S.lexer.Lexer, ptr %t354, i32 0, i32 0
|
|
%t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1
|
|
%t358 = load i64, ptr %t357
|
|
%t359 = icmp slt i64 %t353, %t358
|
|
br label %logic.from710
|
|
logic.from710:
|
|
br i1 %t359, label %logic.rhs711, label %logic.end712
|
|
logic.rhs711:
|
|
%t360 = load ptr, ptr %a18
|
|
%t361 = icmp eq ptr %t360, null
|
|
br i1 %t361, label %panic713, label %ok714
|
|
panic713:
|
|
call void @finch_panic(ptr @.str.430, i64 160, ptr @.str.431)
|
|
unreachable
|
|
ok714:
|
|
%t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 0
|
|
%t363 = load ptr, ptr %a18
|
|
%t364 = icmp eq ptr %t363, null
|
|
br i1 %t364, label %panic715, label %ok716
|
|
panic715:
|
|
call void @finch_panic(ptr @.str.432, i64 160, ptr @.str.433)
|
|
unreachable
|
|
ok716:
|
|
%t365 = getelementptr inbounds %S.lexer.Lexer, ptr %t363, i32 0, i32 2
|
|
%t366 = load i64, ptr %t365
|
|
%t367 = load { ptr, i64, i64 }, ptr %t362
|
|
%t368 = extractvalue { ptr, i64, i64 } %t367, 1
|
|
%t369 = icmp uge i64 %t366, %t368
|
|
br i1 %t369, label %range717, label %inrange718
|
|
range717:
|
|
call void @finch_panic_index(ptr @.str.434, i64 160, i64 %t366, i64 %t368)
|
|
unreachable
|
|
inrange718:
|
|
%t370 = extractvalue { ptr, i64, i64 } %t367, 0
|
|
%t371 = getelementptr inbounds i8, ptr %t370, i64 %t366
|
|
%t372 = load i8, ptr %t371
|
|
%t373 = call i1 @finch.lexer.isDigit(i8 %t372)
|
|
br label %logic.from719
|
|
logic.from719:
|
|
br i1 %t373, label %logic.end721, label %logic.rhs720
|
|
logic.rhs720:
|
|
%t374 = load ptr, ptr %a18
|
|
%t375 = icmp eq ptr %t374, null
|
|
br i1 %t375, label %panic722, label %ok723
|
|
panic722:
|
|
call void @finch_panic(ptr @.str.435, i64 160, ptr @.str.436)
|
|
unreachable
|
|
ok723:
|
|
%t376 = getelementptr inbounds %S.lexer.Lexer, ptr %t374, i32 0, i32 0
|
|
%t377 = load ptr, ptr %a18
|
|
%t378 = icmp eq ptr %t377, null
|
|
br i1 %t378, label %panic724, label %ok725
|
|
panic724:
|
|
call void @finch_panic(ptr @.str.437, i64 160, ptr @.str.438)
|
|
unreachable
|
|
ok725:
|
|
%t379 = getelementptr inbounds %S.lexer.Lexer, ptr %t377, i32 0, i32 2
|
|
%t380 = load i64, ptr %t379
|
|
%t381 = load { ptr, i64, i64 }, ptr %t376
|
|
%t382 = extractvalue { ptr, i64, i64 } %t381, 1
|
|
%t383 = icmp uge i64 %t380, %t382
|
|
br i1 %t383, label %range726, label %inrange727
|
|
range726:
|
|
call void @finch_panic_index(ptr @.str.439, i64 160, i64 %t380, i64 %t382)
|
|
unreachable
|
|
inrange727:
|
|
%t384 = extractvalue { ptr, i64, i64 } %t381, 0
|
|
%t385 = getelementptr inbounds i8, ptr %t384, i64 %t380
|
|
%t386 = load i8, ptr %t385
|
|
%t387 = icmp eq i8 %t386, 95
|
|
br label %logic.rend728
|
|
logic.rend728:
|
|
br label %logic.end721
|
|
logic.end721:
|
|
%t388 = phi i1 [ true, %logic.from719 ], [ %t387, %logic.rend728 ]
|
|
br label %logic.rend729
|
|
logic.rend729:
|
|
br label %logic.end712
|
|
logic.end712:
|
|
%t389 = phi i1 [ false, %logic.from710 ], [ %t388, %logic.rend729 ]
|
|
br i1 %t389, label %while.body704, label %while.end705
|
|
while.body704:
|
|
%t390 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t390)
|
|
br label %while.cond703
|
|
while.end705:
|
|
br label %endif702
|
|
endif702:
|
|
br label %endif641
|
|
endif641:
|
|
%t391 = load ptr, ptr %a18
|
|
%t392 = icmp eq ptr %t391, null
|
|
br i1 %t392, label %panic730, label %ok731
|
|
panic730:
|
|
call void @finch_panic(ptr @.str.440, i64 165, ptr @.str.441)
|
|
unreachable
|
|
ok731:
|
|
%t393 = getelementptr inbounds %S.lexer.Lexer, ptr %t391, i32 0, i32 0
|
|
%t394 = load { ptr, i64, i64 }, ptr %t393
|
|
store { ptr, i64, i64 } %t394, ptr %a395
|
|
%t397 = load i64, ptr %a177
|
|
%t398 = load ptr, ptr %a18
|
|
%t399 = icmp eq ptr %t398, null
|
|
br i1 %t399, label %panic732, label %ok733
|
|
panic732:
|
|
call void @finch_panic(ptr @.str.443, i64 165, ptr @.str.444)
|
|
unreachable
|
|
ok733:
|
|
%t400 = getelementptr inbounds %S.lexer.Lexer, ptr %t398, i32 0, i32 2
|
|
%t401 = load i64, ptr %t400
|
|
call void @finch_str_sub(ptr %a396, ptr %a395, i64 %t397, i64 %t401, ptr @.str.442, i64 165)
|
|
%t402 = load { ptr, i64, i64 }, ptr %a396
|
|
store { ptr, i64, i64 } %t402, ptr %a403
|
|
store { ptr, i64, i64 } { ptr @.str.446, i64 1, i64 0 }, ptr %a405
|
|
store { ptr, i64, i64 } { ptr @.str.447, i64 0, i64 0 }, ptr %a406
|
|
call void @finch_str_replace(ptr %a404, ptr %a403, ptr %a405, ptr %a406)
|
|
%t407 = load { ptr, i64, i64 }, ptr %a404
|
|
%t408 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t407, ptr %t408
|
|
br label %endif630
|
|
else629:
|
|
%t409 = load i8, ptr %a43
|
|
%t410 = icmp eq i8 %t409, 34
|
|
br label %logic.from734
|
|
logic.from734:
|
|
br i1 %t410, label %logic.end736, label %logic.rhs735
|
|
logic.rhs735:
|
|
%t411 = load i8, ptr %a43
|
|
%t412 = icmp eq i8 %t411, 39
|
|
br label %logic.rend737
|
|
logic.rend737:
|
|
br label %logic.end736
|
|
logic.end736:
|
|
%t413 = phi i1 [ true, %logic.from734 ], [ %t412, %logic.rend737 ]
|
|
br i1 %t413, label %then738, label %else739
|
|
then738:
|
|
%t414 = load i8, ptr %a43
|
|
store i8 %t414, ptr %a415
|
|
%t416 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.448, i64 6, i64 0 }, ptr %t416
|
|
%t417 = load i8, ptr %a415
|
|
%t418 = icmp eq i8 %t417, 39
|
|
br i1 %t418, label %then741, label %endif743
|
|
then741:
|
|
%t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.449, i64 4, i64 0 }, ptr %t419
|
|
br label %endif743
|
|
endif743:
|
|
%t420 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t420)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a421
|
|
br label %while.cond744
|
|
while.cond744:
|
|
%t422 = load ptr, ptr %a18
|
|
%t423 = call i8 @finch.lexer.peek(ptr %t422, i64 0)
|
|
%t424 = load i8, ptr %a415
|
|
%t425 = icmp ne i8 %t423, %t424
|
|
br i1 %t425, label %while.body745, label %while.end746
|
|
while.body745:
|
|
%t426 = load ptr, ptr %a18
|
|
%t427 = call i8 @finch.lexer.peek(ptr %t426, i64 0)
|
|
%t428 = trunc i64 0 to i8
|
|
%t429 = icmp eq i8 %t427, %t428
|
|
br label %logic.from747
|
|
logic.from747:
|
|
br i1 %t429, label %logic.end749, label %logic.rhs748
|
|
logic.rhs748:
|
|
%t430 = load ptr, ptr %a18
|
|
%t431 = call i8 @finch.lexer.peek(ptr %t430, i64 0)
|
|
%t432 = icmp eq i8 %t431, 10
|
|
br label %logic.rend750
|
|
logic.rend750:
|
|
br label %logic.end749
|
|
logic.end749:
|
|
%t433 = phi i1 [ true, %logic.from747 ], [ %t432, %logic.rend750 ]
|
|
br i1 %t433, label %then751, label %endif753
|
|
then751:
|
|
%t434 = load i8, ptr %a415
|
|
%t435 = icmp eq i8 %t434, 34
|
|
br i1 %t435, label %then754, label %endif756
|
|
then754:
|
|
%t436 = load ptr, ptr %a18
|
|
%t437 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2
|
|
%t438 = load i64, ptr %t437
|
|
%t439 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3
|
|
%t440 = load i64, ptr %t439
|
|
call void @finch.lexer.fail(ptr %t436, i64 %t438, i64 %t440, { ptr, i64, i64 } { ptr @.str.450, i64 34, i64 0 })
|
|
br label %endif756
|
|
endif756:
|
|
%t441 = load ptr, ptr %a18
|
|
%t442 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2
|
|
%t443 = load i64, ptr %t442
|
|
%t444 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3
|
|
%t445 = load i64, ptr %t444
|
|
call void @finch.lexer.fail(ptr %t441, i64 %t443, i64 %t445, { ptr, i64, i64 } { ptr @.str.451, i64 32, i64 0 })
|
|
br label %endif753
|
|
endif753:
|
|
%t446 = load ptr, ptr %a18
|
|
%t447 = call i8 @finch.lexer.peek(ptr %t446, i64 0)
|
|
store i8 %t447, ptr %a448
|
|
%t449 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t449)
|
|
%t450 = load i8, ptr %a448
|
|
%t451 = icmp eq i8 %t450, 92
|
|
br i1 %t451, label %then757, label %endif759
|
|
then757:
|
|
%t452 = load ptr, ptr %a18
|
|
%t453 = call i8 @finch.lexer.peek(ptr %t452, i64 0)
|
|
store i8 %t453, ptr %a454
|
|
%t455 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t455)
|
|
%t456 = load ptr, ptr %a18
|
|
%t457 = load i8, ptr %a454
|
|
%t458 = call i8 @finch.lexer.escape(ptr %t456, i8 %t457)
|
|
store i8 %t458, ptr %a448
|
|
br label %endif759
|
|
endif759:
|
|
%t459 = getelementptr inbounds { ptr, i64, i64 }, ptr %a421, i32 0, i32 1
|
|
%t460 = load i8, ptr %a448
|
|
call void @finch_str_from_char(ptr %a461, i8 signext %t460)
|
|
%t462 = load { ptr, i64, i64 }, ptr %a461
|
|
%t463 = load i64, ptr %t459
|
|
%t464 = add i64 %t463, 1
|
|
call void @finch_arr_reserve(ptr %a421, i64 %t464, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t465 = load ptr, ptr %a421
|
|
%t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 %t463
|
|
store { ptr, i64, i64 } %t462, ptr %t466
|
|
store i64 %t464, ptr %t459
|
|
br label %while.cond744
|
|
while.end746:
|
|
%t467 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t467)
|
|
%t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %a421, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.452, i64 0, i64 0 }, ptr %a469
|
|
call void @finch_str_join(ptr %a470, ptr %a421, ptr %a469)
|
|
%t471 = load { ptr, i64, i64 }, ptr %a470
|
|
%t472 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t471, ptr %t472
|
|
%t473 = load i8, ptr %a415
|
|
%t474 = icmp eq i8 %t473, 39
|
|
br label %logic.from760
|
|
logic.from760:
|
|
br i1 %t474, label %logic.rhs761, label %logic.end762
|
|
logic.rhs761:
|
|
%t475 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1
|
|
%t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i32 0, i32 1
|
|
%t477 = load i64, ptr %t476
|
|
%t478 = icmp ne i64 %t477, 1
|
|
br label %logic.rend763
|
|
logic.rend763:
|
|
br label %logic.end762
|
|
logic.end762:
|
|
%t479 = phi i1 [ false, %logic.from760 ], [ %t478, %logic.rend763 ]
|
|
br i1 %t479, label %then764, label %endif766
|
|
then764:
|
|
%t480 = load ptr, ptr %a18
|
|
%t481 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2
|
|
%t482 = load i64, ptr %t481
|
|
%t483 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3
|
|
%t484 = load i64, ptr %t483
|
|
call void @finch.lexer.fail(ptr %t480, i64 %t482, i64 %t484, { ptr, i64, i64 } { ptr @.str.453, i64 44, i64 0 })
|
|
br label %endif766
|
|
endif766:
|
|
br label %endif740
|
|
else739:
|
|
%t485 = load ptr, ptr %a18
|
|
%t486 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t485)
|
|
store { ptr, i64, i64 } %t486, ptr %a487
|
|
%t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a487, i32 0, i32 1
|
|
%t489 = load i64, ptr %t488
|
|
%t490 = icmp eq i64 %t489, 0
|
|
br i1 %t490, label %then767, label %endif769
|
|
then767:
|
|
store i64 1, ptr %a491
|
|
%t492 = load i8, ptr %a43
|
|
%t493 = zext i8 %t492 to i64
|
|
%t494 = and i64 %t493, 224
|
|
%t495 = icmp eq i64 %t494, 192
|
|
br i1 %t495, label %then770, label %else771
|
|
then770:
|
|
store i64 2, ptr %a491
|
|
br label %endif772
|
|
else771:
|
|
%t496 = load i8, ptr %a43
|
|
%t497 = zext i8 %t496 to i64
|
|
%t498 = and i64 %t497, 240
|
|
%t499 = icmp eq i64 %t498, 224
|
|
br i1 %t499, label %then773, label %else774
|
|
then773:
|
|
store i64 3, ptr %a491
|
|
br label %endif775
|
|
else774:
|
|
%t500 = load i8, ptr %a43
|
|
%t501 = zext i8 %t500 to i64
|
|
%t502 = and i64 %t501, 248
|
|
%t503 = icmp eq i64 %t502, 240
|
|
br i1 %t503, label %then776, label %endif778
|
|
then776:
|
|
store i64 4, ptr %a491
|
|
br label %endif778
|
|
endif778:
|
|
br label %endif775
|
|
endif775:
|
|
br label %endif772
|
|
endif772:
|
|
store { ptr, i64, i64 } { ptr @.str.454, i64 0, i64 0 }, ptr %a504
|
|
%t505 = load i8, ptr %a43
|
|
%t506 = zext i8 %t505 to i64
|
|
%t507 = icmp sge i64 %t506, 128
|
|
br i1 %t507, label %then779, label %endif781
|
|
then779:
|
|
store { ptr, i64, i64 } { ptr @.str.455, i64 74, i64 0 }, ptr %a504
|
|
br label %endif781
|
|
endif781:
|
|
%t508 = load ptr, ptr %a18
|
|
%t509 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2
|
|
%t510 = load i64, ptr %t509
|
|
%t511 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3
|
|
%t512 = load i64, ptr %t511
|
|
%t513 = load ptr, ptr %a18
|
|
%t514 = icmp eq ptr %t513, null
|
|
br i1 %t514, label %panic782, label %ok783
|
|
panic782:
|
|
call void @finch_panic(ptr @.str.457, i64 211, ptr @.str.458)
|
|
unreachable
|
|
ok783:
|
|
%t515 = getelementptr inbounds %S.lexer.Lexer, ptr %t513, i32 0, i32 0
|
|
%t516 = load { ptr, i64, i64 }, ptr %t515
|
|
store { ptr, i64, i64 } %t516, ptr %a517
|
|
%t519 = load ptr, ptr %a18
|
|
%t520 = icmp eq ptr %t519, null
|
|
br i1 %t520, label %panic784, label %ok785
|
|
panic784:
|
|
call void @finch_panic(ptr @.str.460, i64 211, ptr @.str.461)
|
|
unreachable
|
|
ok785:
|
|
%t521 = getelementptr inbounds %S.lexer.Lexer, ptr %t519, i32 0, i32 2
|
|
%t522 = load i64, ptr %t521
|
|
%t523 = load ptr, ptr %a18
|
|
%t524 = icmp eq ptr %t523, null
|
|
br i1 %t524, label %panic786, label %ok787
|
|
panic786:
|
|
call void @finch_panic(ptr @.str.462, i64 211, ptr @.str.463)
|
|
unreachable
|
|
ok787:
|
|
%t525 = getelementptr inbounds %S.lexer.Lexer, ptr %t523, i32 0, i32 2
|
|
%t526 = load i64, ptr %t525
|
|
%t527 = load i64, ptr %a491
|
|
%t528 = add i64 %t526, %t527
|
|
call void @finch_str_sub(ptr %a518, ptr %a517, i64 %t522, i64 %t528, ptr @.str.459, i64 211)
|
|
%t529 = load { ptr, i64, i64 }, ptr %a518
|
|
store { ptr, i64, i64 } { ptr @.str.456, i64 22, i64 0 }, ptr %a531
|
|
store { ptr, i64, i64 } %t529, ptr %a532
|
|
call void @finch_str_concat(ptr %a530, ptr %a531, ptr %a532)
|
|
%t533 = load { ptr, i64, i64 }, ptr %a530
|
|
store { ptr, i64, i64 } %t533, ptr %a535
|
|
store { ptr, i64, i64 } { ptr @.str.464, i64 1, i64 0 }, ptr %a536
|
|
call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536)
|
|
%t537 = load { ptr, i64, i64 }, ptr %a534
|
|
%t538 = load { ptr, i64, i64 }, ptr %a504
|
|
store { ptr, i64, i64 } %t537, ptr %a540
|
|
store { ptr, i64, i64 } %t538, ptr %a541
|
|
call void @finch_str_concat(ptr %a539, ptr %a540, ptr %a541)
|
|
%t542 = load { ptr, i64, i64 }, ptr %a539
|
|
call void @finch.lexer.fail(ptr %t508, i64 %t510, i64 %t512, { ptr, i64, i64 } %t542)
|
|
br label %endif769
|
|
endif769:
|
|
%t543 = getelementptr inbounds { ptr, i64, i64 }, ptr %a487, i32 0, i32 1
|
|
%t544 = load i64, ptr %t543
|
|
store i64 0, ptr %a545
|
|
br label %for.cond788
|
|
for.cond788:
|
|
%t546 = load i64, ptr %a545
|
|
%t547 = icmp slt i64 %t546, %t544
|
|
br i1 %t547, label %for.body789, label %for.end791
|
|
for.body789:
|
|
%t548 = load ptr, ptr %a18
|
|
call void @finch.lexer.advance(ptr %t548)
|
|
br label %for.step790
|
|
for.step790:
|
|
%t549 = load i64, ptr %a545
|
|
%t550 = add i64 %t549, 1
|
|
store i64 %t550, ptr %a545
|
|
br label %for.cond788
|
|
for.end791:
|
|
%t551 = load { ptr, i64, i64 }, ptr %a487
|
|
%t552 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0
|
|
store { ptr, i64, i64 } %t551, ptr %a553
|
|
call void @finch_str_copy(ptr %a554, ptr %a553)
|
|
%t555 = load { ptr, i64, i64 }, ptr %a554
|
|
store { ptr, i64, i64 } %t555, ptr %t552
|
|
%t556 = load { ptr, i64, i64 }, ptr %a487
|
|
%t557 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t556, ptr %a558
|
|
call void @finch_str_copy(ptr %a559, ptr %a558)
|
|
%t560 = load { ptr, i64, i64 }, ptr %a559
|
|
store { ptr, i64, i64 } %t560, ptr %t557
|
|
br label %endif740
|
|
endif740:
|
|
br label %endif630
|
|
endif630:
|
|
br label %endif593
|
|
endif593:
|
|
%t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1
|
|
%t562 = load %S.lexer.Token, ptr %a169
|
|
store %S.lexer.Token %t562, ptr %a563
|
|
call void @finch.copy.S_lexer_Token(ptr %a564, ptr %a563)
|
|
%t565 = load %S.lexer.Token, ptr %a564
|
|
%t566 = load i64, ptr %t561
|
|
%t567 = add i64 %t566, 1
|
|
call void @finch_arr_reserve(ptr %a19, i64 %t567, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64))
|
|
%t568 = load ptr, ptr %a19
|
|
%t569 = getelementptr inbounds %S.lexer.Token, ptr %t568, i64 %t566
|
|
store %S.lexer.Token %t565, ptr %t569
|
|
store i64 %t567, ptr %t561
|
|
br label %while.cond490
|
|
while.end492:
|
|
%t570 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1
|
|
%t571 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.465, i64 3, i64 0 }, 0
|
|
%t572 = insertvalue %S.lexer.Token %t571, { ptr, i64, i64 } { ptr @.str.466, i64 0, i64 0 }, 1
|
|
%t573 = load ptr, ptr %a18
|
|
%t574 = icmp eq ptr %t573, null
|
|
br i1 %t574, label %panic792, label %ok793
|
|
panic792:
|
|
call void @finch_panic(ptr @.str.467, i64 221, ptr @.str.468)
|
|
unreachable
|
|
ok793:
|
|
%t575 = getelementptr inbounds %S.lexer.Lexer, ptr %t573, i32 0, i32 3
|
|
%t576 = load i64, ptr %t575
|
|
%t577 = insertvalue %S.lexer.Token %t572, i64 %t576, 2
|
|
%t578 = load ptr, ptr %a18
|
|
%t579 = icmp eq ptr %t578, null
|
|
br i1 %t579, label %panic794, label %ok795
|
|
panic794:
|
|
call void @finch_panic(ptr @.str.469, i64 221, ptr @.str.470)
|
|
unreachable
|
|
ok795:
|
|
%t580 = getelementptr inbounds %S.lexer.Lexer, ptr %t578, i32 0, i32 4
|
|
%t581 = load i64, ptr %t580
|
|
%t582 = insertvalue %S.lexer.Token %t577, i64 %t581, 3
|
|
%t583 = insertvalue %S.lexer.Token %t582, i1 true, 4
|
|
%t584 = load i64, ptr %t570
|
|
%t585 = add i64 %t584, 1
|
|
call void @finch_arr_reserve(ptr %a19, i64 %t585, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64))
|
|
%t586 = load ptr, ptr %a19
|
|
%t587 = getelementptr inbounds %S.lexer.Token, ptr %t586, i64 %t584
|
|
store %S.lexer.Token %t583, ptr %t587
|
|
store i64 %t585, ptr %t570
|
|
%t588 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t588, ptr %a589
|
|
call void @finch.copy.arr_S_lexer_Token(ptr %a590, ptr %a589)
|
|
%t591 = load { ptr, i64, i64 }, ptr %a590
|
|
ret { ptr, i64, i64 } %t591
|
|
}
|
|
|
|
define internal %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
call void @finch_str_copy(ptr %a4, ptr %a3)
|
|
%t5 = load { ptr, i64, i64 }, ptr %a4
|
|
%t6 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t5, 0
|
|
ret %S.ast.Type %t6
|
|
}
|
|
|
|
define internal %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %p0) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a7 = alloca %S.ast.Type, align 16
|
|
%a8 = alloca %S.ast.Type, align 16
|
|
%a15 = alloca %S.ast.Type, align 16
|
|
%a16 = alloca %S.ast.Type, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
%t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.471, i64 5, i64 0 }, 0
|
|
store %S.ast.Type %t2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1
|
|
%t6 = load %S.ast.Type, ptr %a1
|
|
store %S.ast.Type %t6, ptr %a7
|
|
call void @finch.copy.S_ast_Type(ptr %a8, ptr %a7)
|
|
%t9 = load %S.ast.Type, ptr %a8
|
|
%t10 = load i64, ptr %t5
|
|
%t11 = add i64 %t10, 1
|
|
call void @finch_arr_reserve(ptr %t4, i64 %t11, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t12 = load ptr, ptr %t4
|
|
%t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 %t10
|
|
store %S.ast.Type %t9, ptr %t13
|
|
store i64 %t11, ptr %t5
|
|
%t14 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t14, ptr %a15
|
|
call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15)
|
|
%t17 = load %S.ast.Type, ptr %a16
|
|
ret %S.ast.Type %t17
|
|
}
|
|
|
|
define internal %S.ast.Type @finch.ast.mapOf(%S.ast.Type %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a8 = alloca %S.ast.Type, align 16
|
|
%a9 = alloca %S.ast.Type, align 16
|
|
%a18 = alloca %S.ast.Type, align 16
|
|
%a19 = alloca %S.ast.Type, align 16
|
|
%a26 = alloca %S.ast.Type, align 16
|
|
%a27 = alloca %S.ast.Type, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.472, i64 3, i64 0 }, 0
|
|
store %S.ast.Type %t3, ptr %a4
|
|
%t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1
|
|
%t7 = load %S.ast.Type, ptr %a1
|
|
store %S.ast.Type %t7, ptr %a8
|
|
call void @finch.copy.S_ast_Type(ptr %a9, ptr %a8)
|
|
%t10 = load %S.ast.Type, ptr %a9
|
|
%t11 = load i64, ptr %t6
|
|
%t12 = add i64 %t11, 1
|
|
call void @finch_arr_reserve(ptr %t5, i64 %t12, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t13 = load ptr, ptr %t5
|
|
%t14 = getelementptr inbounds %S.ast.Type, ptr %t13, i64 %t11
|
|
store %S.ast.Type %t10, ptr %t14
|
|
store i64 %t12, ptr %t6
|
|
%t15 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i32 0, i32 1
|
|
%t17 = load %S.ast.Type, ptr %a2
|
|
store %S.ast.Type %t17, ptr %a18
|
|
call void @finch.copy.S_ast_Type(ptr %a19, ptr %a18)
|
|
%t20 = load %S.ast.Type, ptr %a19
|
|
%t21 = load i64, ptr %t16
|
|
%t22 = add i64 %t21, 1
|
|
call void @finch_arr_reserve(ptr %t15, i64 %t22, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t23 = load ptr, ptr %t15
|
|
%t24 = getelementptr inbounds %S.ast.Type, ptr %t23, i64 %t21
|
|
store %S.ast.Type %t20, ptr %t24
|
|
store i64 %t22, ptr %t16
|
|
%t25 = load %S.ast.Type, ptr %a4
|
|
store %S.ast.Type %t25, ptr %a26
|
|
call void @finch.copy.S_ast_Type(ptr %a27, ptr %a26)
|
|
%t28 = load %S.ast.Type, ptr %a27
|
|
ret %S.ast.Type %t28
|
|
}
|
|
|
|
define internal %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %p0) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a7 = alloca %S.ast.Type, align 16
|
|
%a8 = alloca %S.ast.Type, align 16
|
|
%a15 = alloca %S.ast.Type, align 16
|
|
%a16 = alloca %S.ast.Type, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
%t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.473, i64 3, i64 0 }, 0
|
|
store %S.ast.Type %t2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1
|
|
%t6 = load %S.ast.Type, ptr %a1
|
|
store %S.ast.Type %t6, ptr %a7
|
|
call void @finch.copy.S_ast_Type(ptr %a8, ptr %a7)
|
|
%t9 = load %S.ast.Type, ptr %a8
|
|
%t10 = load i64, ptr %t5
|
|
%t11 = add i64 %t10, 1
|
|
call void @finch_arr_reserve(ptr %t4, i64 %t11, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t12 = load ptr, ptr %t4
|
|
%t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 %t10
|
|
store %S.ast.Type %t9, ptr %t13
|
|
store i64 %t11, ptr %t5
|
|
%t14 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t14, ptr %a15
|
|
call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15)
|
|
%t17 = load %S.ast.Type, ptr %a16
|
|
ret %S.ast.Type %t17
|
|
}
|
|
|
|
define internal i1 @finch.ast.same(%S.ast.Type %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca i64, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
%t5 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
store { ptr, i64, i64 } %t4, ptr %a7
|
|
store { ptr, i64, i64 } %t6, ptr %a8
|
|
%t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8)
|
|
%t10 = icmp eq i32 %t9, 0
|
|
br i1 %t10, label %then799, label %endif801
|
|
then799:
|
|
ret i1 false
|
|
endif801:
|
|
%t11 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t12 = load { ptr, i64, i64 }, ptr %t11
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.474, i64 6, i64 0 }, ptr %a14
|
|
%t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14)
|
|
%t16 = icmp ne i32 %t15, 0
|
|
br label %logic.from802
|
|
logic.from802:
|
|
br i1 %t16, label %logic.end804, label %logic.rhs803
|
|
logic.rhs803:
|
|
%t17 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t18 = load { ptr, i64, i64 }, ptr %t17
|
|
store { ptr, i64, i64 } %t18, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.475, i64 5, i64 0 }, ptr %a20
|
|
%t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20)
|
|
%t22 = icmp ne i32 %t21, 0
|
|
br label %logic.rend805
|
|
logic.rend805:
|
|
br label %logic.end804
|
|
logic.end804:
|
|
%t23 = phi i1 [ true, %logic.from802 ], [ %t22, %logic.rend805 ]
|
|
br label %logic.from806
|
|
logic.from806:
|
|
br i1 %t23, label %logic.end808, label %logic.rhs807
|
|
logic.rhs807:
|
|
%t24 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t25 = load { ptr, i64, i64 }, ptr %t24
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.476, i64 4, i64 0 }, ptr %a27
|
|
%t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27)
|
|
%t29 = icmp ne i32 %t28, 0
|
|
br label %logic.rend809
|
|
logic.rend809:
|
|
br label %logic.end808
|
|
logic.end808:
|
|
%t30 = phi i1 [ true, %logic.from806 ], [ %t29, %logic.rend809 ]
|
|
br i1 %t30, label %then810, label %endif812
|
|
then810:
|
|
%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.from813
|
|
logic.from813:
|
|
br i1 %t38, label %logic.rhs814, label %logic.end815
|
|
logic.rhs814:
|
|
%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.rend816
|
|
logic.rend816:
|
|
br label %logic.end815
|
|
logic.end815:
|
|
%t47 = phi i1 [ false, %logic.from813 ], [ %t46, %logic.rend816 ]
|
|
ret i1 %t47
|
|
endif812:
|
|
%t48 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t49 = load { ptr, i64, i64 }, ptr %t48
|
|
store { ptr, i64, i64 } %t49, ptr %a50
|
|
store { ptr, i64, i64 } { ptr @.str.477, i64 5, i64 0 }, ptr %a51
|
|
%t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51)
|
|
%t53 = icmp ne i32 %t52, 0
|
|
br label %logic.from817
|
|
logic.from817:
|
|
br i1 %t53, label %logic.rhs818, label %logic.end819
|
|
logic.rhs818:
|
|
%t54 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4
|
|
%t55 = load i64, ptr %t54
|
|
%t56 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4
|
|
%t57 = load i64, ptr %t56
|
|
%t58 = icmp ne i64 %t55, %t57
|
|
br label %logic.rend820
|
|
logic.rend820:
|
|
br label %logic.end819
|
|
logic.end819:
|
|
%t59 = phi i1 [ false, %logic.from817 ], [ %t58, %logic.rend820 ]
|
|
br i1 %t59, label %then821, label %endif823
|
|
then821:
|
|
ret i1 false
|
|
endif823:
|
|
%t60 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t61 = load { ptr, i64, i64 }, ptr %t60
|
|
store { ptr, i64, i64 } %t61, ptr %a62
|
|
store { ptr, i64, i64 } { ptr @.str.478, i64 5, i64 0 }, ptr %a63
|
|
%t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63)
|
|
%t65 = icmp ne i32 %t64, 0
|
|
br label %logic.from824
|
|
logic.from824:
|
|
br i1 %t65, label %logic.end826, label %logic.rhs825
|
|
logic.rhs825:
|
|
%t66 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t67 = load { ptr, i64, i64 }, ptr %t66
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.479, i64 3, i64 0 }, ptr %a69
|
|
%t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69)
|
|
%t71 = icmp ne i32 %t70, 0
|
|
br label %logic.rend827
|
|
logic.rend827:
|
|
br label %logic.end826
|
|
logic.end826:
|
|
%t72 = phi i1 [ true, %logic.from824 ], [ %t71, %logic.rend827 ]
|
|
br label %logic.from828
|
|
logic.from828:
|
|
br i1 %t72, label %logic.end830, label %logic.rhs829
|
|
logic.rhs829:
|
|
%t73 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t74 = load { ptr, i64, i64 }, ptr %t73
|
|
store { ptr, i64, i64 } %t74, ptr %a75
|
|
store { ptr, i64, i64 } { ptr @.str.480, i64 3, i64 0 }, ptr %a76
|
|
%t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76)
|
|
%t78 = icmp ne i32 %t77, 0
|
|
br label %logic.rend831
|
|
logic.rend831:
|
|
br label %logic.end830
|
|
logic.end830:
|
|
%t79 = phi i1 [ true, %logic.from828 ], [ %t78, %logic.rend831 ]
|
|
br label %logic.from832
|
|
logic.from832:
|
|
br i1 %t79, label %logic.end834, label %logic.rhs833
|
|
logic.rhs833:
|
|
%t80 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t81 = load { ptr, i64, i64 }, ptr %t80
|
|
store { ptr, i64, i64 } %t81, ptr %a82
|
|
store { ptr, i64, i64 } { ptr @.str.481, i64 5, i64 0 }, ptr %a83
|
|
%t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83)
|
|
%t85 = icmp ne i32 %t84, 0
|
|
br label %logic.rend835
|
|
logic.rend835:
|
|
br label %logic.end834
|
|
logic.end834:
|
|
%t86 = phi i1 [ true, %logic.from832 ], [ %t85, %logic.rend835 ]
|
|
br i1 %t86, label %then836, label %endif838
|
|
then836:
|
|
%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 %then839, label %endif841
|
|
then839:
|
|
ret i1 false
|
|
endif841:
|
|
%t94 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1
|
|
%t96 = load i64, ptr %t95
|
|
store i64 0, ptr %a97
|
|
br label %for.cond842
|
|
for.cond842:
|
|
%t98 = load i64, ptr %a97
|
|
%t99 = icmp slt i64 %t98, %t96
|
|
br i1 %t99, label %for.body843, label %for.end845
|
|
for.body843:
|
|
%t100 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t101 = load i64, ptr %a97
|
|
%t102 = load { ptr, i64, i64 }, ptr %t100
|
|
%t103 = extractvalue { ptr, i64, i64 } %t102, 1
|
|
%t104 = icmp uge i64 %t101, %t103
|
|
br i1 %t104, label %range846, label %inrange847
|
|
range846:
|
|
call void @finch_panic_index(ptr @.str.482, i64 54, i64 %t101, i64 %t103)
|
|
unreachable
|
|
inrange847:
|
|
%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 %range848, label %inrange849
|
|
range848:
|
|
call void @finch_panic_index(ptr @.str.483, i64 54, i64 %t109, i64 %t111)
|
|
unreachable
|
|
inrange849:
|
|
%t113 = extractvalue { ptr, i64, i64 } %t110, 0
|
|
%t114 = getelementptr inbounds %S.ast.Type, ptr %t113, i64 %t109
|
|
%t115 = load %S.ast.Type, ptr %t114
|
|
%t116 = call i1 @finch.ast.same(%S.ast.Type %t107, %S.ast.Type %t115)
|
|
%t117 = xor i1 %t116, true
|
|
br i1 %t117, label %then850, label %endif852
|
|
then850:
|
|
ret i1 false
|
|
endif852:
|
|
br label %for.step844
|
|
for.step844:
|
|
%t118 = load i64, ptr %a97
|
|
%t119 = add i64 %t118, 1
|
|
store i64 %t119, ptr %a97
|
|
br label %for.cond842
|
|
for.end845:
|
|
ret i1 true
|
|
endif838:
|
|
ret i1 true
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %p0) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
%t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t3 = load { ptr, i64, i64 }, ptr %t2
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.484, i64 5, i64 0 }, ptr %a5
|
|
%t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5)
|
|
%t7 = icmp ne i32 %t6, 0
|
|
br i1 %t7, label %then853, label %endif855
|
|
then853:
|
|
%t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t9 = load { ptr, i64, i64 }, ptr %t8
|
|
%t10 = extractvalue { ptr, i64, i64 } %t9, 1
|
|
%t11 = icmp uge i64 0, %t10
|
|
br i1 %t11, label %range856, label %inrange857
|
|
range856:
|
|
call void @finch_panic_index(ptr @.str.486, i64 65, i64 0, i64 %t10)
|
|
unreachable
|
|
inrange857:
|
|
%t12 = extractvalue { ptr, i64, i64 } %t9, 0
|
|
%t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 0
|
|
%t14 = load %S.ast.Type, ptr %t13
|
|
%t15 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t14)
|
|
store { ptr, i64, i64 } { ptr @.str.485, i64 2, i64 0 }, ptr %a17
|
|
store { ptr, i64, i64 } %t15, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
ret { ptr, i64, i64 } %t19
|
|
endif855:
|
|
%t20 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t21 = load { ptr, i64, i64 }, ptr %t20
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
store { ptr, i64, i64 } { ptr @.str.487, i64 5, i64 0 }, ptr %a23
|
|
%t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23)
|
|
%t25 = icmp ne i32 %t24, 0
|
|
br i1 %t25, label %then858, label %endif860
|
|
then858:
|
|
%t26 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4
|
|
%t27 = load i64, ptr %t26
|
|
call void @finch_str_from_int(ptr %a28, i64 %t27)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a28
|
|
store { ptr, i64, i64 } { ptr @.str.488, i64 1, i64 0 }, ptr %a31
|
|
store { ptr, i64, i64 } %t29, ptr %a32
|
|
call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32)
|
|
%t33 = load { ptr, i64, i64 }, ptr %a30
|
|
store { ptr, i64, i64 } %t33, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.489, i64 1, i64 0 }, ptr %a36
|
|
call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a34
|
|
%t38 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t39 = load { ptr, i64, i64 }, ptr %t38
|
|
%t40 = extractvalue { ptr, i64, i64 } %t39, 1
|
|
%t41 = icmp uge i64 0, %t40
|
|
br i1 %t41, label %range861, label %inrange862
|
|
range861:
|
|
call void @finch_panic_index(ptr @.str.490, i64 68, i64 0, i64 %t40)
|
|
unreachable
|
|
inrange862:
|
|
%t42 = extractvalue { ptr, i64, i64 } %t39, 0
|
|
%t43 = getelementptr inbounds %S.ast.Type, ptr %t42, i64 0
|
|
%t44 = load %S.ast.Type, ptr %t43
|
|
%t45 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t44)
|
|
store { ptr, i64, i64 } %t37, ptr %a47
|
|
store { ptr, i64, i64 } %t45, ptr %a48
|
|
call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a46
|
|
ret { ptr, i64, i64 } %t49
|
|
endif860:
|
|
%t50 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t51 = load { ptr, i64, i64 }, ptr %t50
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
store { ptr, i64, i64 } { ptr @.str.491, i64 3, i64 0 }, ptr %a53
|
|
%t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53)
|
|
%t55 = icmp ne i32 %t54, 0
|
|
br i1 %t55, label %then863, label %endif865
|
|
then863:
|
|
%t56 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t57 = load { ptr, i64, i64 }, ptr %t56
|
|
%t58 = extractvalue { ptr, i64, i64 } %t57, 1
|
|
%t59 = icmp uge i64 0, %t58
|
|
br i1 %t59, label %range866, label %inrange867
|
|
range866:
|
|
call void @finch_panic_index(ptr @.str.493, i64 71, i64 0, i64 %t58)
|
|
unreachable
|
|
inrange867:
|
|
%t60 = extractvalue { ptr, i64, i64 } %t57, 0
|
|
%t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i64 0
|
|
%t62 = load %S.ast.Type, ptr %t61
|
|
%t63 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t62)
|
|
store { ptr, i64, i64 } { ptr @.str.492, i64 4, i64 0 }, ptr %a65
|
|
store { ptr, i64, i64 } %t63, ptr %a66
|
|
call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a64
|
|
store { ptr, i64, i64 } %t67, ptr %a69
|
|
store { ptr, i64, i64 } { ptr @.str.494, i64 1, i64 0 }, ptr %a70
|
|
call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70)
|
|
%t71 = load { ptr, i64, i64 }, ptr %a68
|
|
%t72 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t73 = load { ptr, i64, i64 }, ptr %t72
|
|
%t74 = extractvalue { ptr, i64, i64 } %t73, 1
|
|
%t75 = icmp uge i64 1, %t74
|
|
br i1 %t75, label %range868, label %inrange869
|
|
range868:
|
|
call void @finch_panic_index(ptr @.str.495, i64 71, i64 1, i64 %t74)
|
|
unreachable
|
|
inrange869:
|
|
%t76 = extractvalue { ptr, i64, i64 } %t73, 0
|
|
%t77 = getelementptr inbounds %S.ast.Type, ptr %t76, i64 1
|
|
%t78 = load %S.ast.Type, ptr %t77
|
|
%t79 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t78)
|
|
store { ptr, i64, i64 } %t71, ptr %a81
|
|
store { ptr, i64, i64 } %t79, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
ret { ptr, i64, i64 } %t83
|
|
endif865:
|
|
%t84 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t85 = load { ptr, i64, i64 }, ptr %t84
|
|
store { ptr, i64, i64 } %t85, ptr %a86
|
|
store { ptr, i64, i64 } { ptr @.str.496, i64 3, i64 0 }, ptr %a87
|
|
%t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87)
|
|
%t89 = icmp ne i32 %t88, 0
|
|
br i1 %t89, label %then870, label %endif872
|
|
then870:
|
|
%t90 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i32 0, i32 1
|
|
%t92 = load i64, ptr %t91
|
|
%t93 = icmp eq i64 %t92, 0
|
|
br i1 %t93, label %then873, label %endif875
|
|
then873:
|
|
ret { ptr, i64, i64 } { ptr @.str.497, i64 3, i64 0 }
|
|
endif875:
|
|
%t94 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t95 = load { ptr, i64, i64 }, ptr %t94
|
|
%t96 = extractvalue { ptr, i64, i64 } %t95, 1
|
|
%t97 = icmp uge i64 0, %t96
|
|
br i1 %t97, label %range876, label %inrange877
|
|
range876:
|
|
call void @finch_panic_index(ptr @.str.499, i64 77, i64 0, i64 %t96)
|
|
unreachable
|
|
inrange877:
|
|
%t98 = extractvalue { ptr, i64, i64 } %t95, 0
|
|
%t99 = getelementptr inbounds %S.ast.Type, ptr %t98, i64 0
|
|
%t100 = load %S.ast.Type, ptr %t99
|
|
%t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100)
|
|
store { ptr, i64, i64 } { ptr @.str.498, i64 4, i64 0 }, ptr %a103
|
|
store { ptr, i64, i64 } %t101, ptr %a104
|
|
call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104)
|
|
%t105 = load { ptr, i64, i64 }, ptr %a102
|
|
store { ptr, i64, i64 } %t105, ptr %a107
|
|
store { ptr, i64, i64 } { ptr @.str.500, i64 1, i64 0 }, ptr %a108
|
|
call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108)
|
|
%t109 = load { ptr, i64, i64 }, ptr %a106
|
|
ret { ptr, i64, i64 } %t109
|
|
endif872:
|
|
%t110 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t111 = load { ptr, i64, i64 }, ptr %t110
|
|
store { ptr, i64, i64 } %t111, ptr %a112
|
|
store { ptr, i64, i64 } { ptr @.str.501, i64 6, i64 0 }, ptr %a113
|
|
%t114 = call i32 @finch_str_eq(ptr %a112, ptr %a113)
|
|
%t115 = icmp ne i32 %t114, 0
|
|
br label %logic.from878
|
|
logic.from878:
|
|
br i1 %t115, label %logic.end880, label %logic.rhs879
|
|
logic.rhs879:
|
|
%t116 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t117 = load { ptr, i64, i64 }, ptr %t116
|
|
store { ptr, i64, i64 } %t117, ptr %a118
|
|
store { ptr, i64, i64 } { ptr @.str.502, i64 5, i64 0 }, ptr %a119
|
|
%t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119)
|
|
%t121 = icmp ne i32 %t120, 0
|
|
br label %logic.rend881
|
|
logic.rend881:
|
|
br label %logic.end880
|
|
logic.end880:
|
|
%t122 = phi i1 [ true, %logic.from878 ], [ %t121, %logic.rend881 ]
|
|
br label %logic.from882
|
|
logic.from882:
|
|
br i1 %t122, label %logic.end884, label %logic.rhs883
|
|
logic.rhs883:
|
|
%t123 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t124 = load { ptr, i64, i64 }, ptr %t123
|
|
store { ptr, i64, i64 } %t124, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.503, i64 4, i64 0 }, ptr %a126
|
|
%t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126)
|
|
%t128 = icmp ne i32 %t127, 0
|
|
br label %logic.rend885
|
|
logic.rend885:
|
|
br label %logic.end884
|
|
logic.end884:
|
|
%t129 = phi i1 [ true, %logic.from882 ], [ %t128, %logic.rend885 ]
|
|
br i1 %t129, label %then886, label %endif888
|
|
then886:
|
|
%t130 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3
|
|
%t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i32 0, i32 1
|
|
%t132 = load i64, ptr %t131
|
|
%t133 = icmp sgt i64 %t132, 0
|
|
br i1 %t133, label %then889, label %endif891
|
|
then889:
|
|
%t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3
|
|
%t135 = load { ptr, i64, i64 }, ptr %t134
|
|
store { ptr, i64, i64 } %t135, ptr %a137
|
|
store { ptr, i64, i64 } { ptr @.str.504, i64 1, i64 0 }, ptr %a138
|
|
call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138)
|
|
%t139 = load { ptr, i64, i64 }, ptr %a136
|
|
%t140 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2
|
|
%t141 = load { ptr, i64, i64 }, ptr %t140
|
|
store { ptr, i64, i64 } %t139, ptr %a143
|
|
store { ptr, i64, i64 } %t141, ptr %a144
|
|
call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144)
|
|
%t145 = load { ptr, i64, i64 }, ptr %a142
|
|
ret { ptr, i64, i64 } %t145
|
|
endif891:
|
|
%t146 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2
|
|
%t147 = load { ptr, i64, i64 }, ptr %t146
|
|
store { ptr, i64, i64 } %t147, ptr %a148
|
|
call void @finch_str_copy(ptr %a149, ptr %a148)
|
|
%t150 = load { ptr, i64, i64 }, ptr %a149
|
|
ret { ptr, i64, i64 } %t150
|
|
endif888:
|
|
%t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t152 = load { ptr, i64, i64 }, ptr %t151
|
|
store { ptr, i64, i64 } %t152, ptr %a153
|
|
store { ptr, i64, i64 } { ptr @.str.505, i64 4, i64 0 }, ptr %a154
|
|
%t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154)
|
|
%t156 = icmp ne i32 %t155, 0
|
|
br i1 %t156, label %then892, label %endif894
|
|
then892:
|
|
ret { ptr, i64, i64 } { ptr @.str.506, i64 7, i64 0 }
|
|
endif894:
|
|
%t157 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t158 = load { ptr, i64, i64 }, ptr %t157
|
|
store { ptr, i64, i64 } %t158, ptr %a159
|
|
call void @finch_str_copy(ptr %a160, ptr %a159)
|
|
%t161 = load { ptr, i64, i64 }, ptr %a160
|
|
ret { ptr, i64, i64 } %t161
|
|
}
|
|
|
|
define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.lexer.Token, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.lexer.Token %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = icmp eq ptr %t4, null
|
|
br i1 %t5, label %panic895, label %ok896
|
|
panic895:
|
|
call void @finch_panic(ptr @.str.507, i64 14, ptr @.str.508)
|
|
unreachable
|
|
ok896:
|
|
%t6 = getelementptr inbounds %S.parser.Parser, ptr %t4, i32 0, i32 4
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
store { ptr, i64, i64 } %t7, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.509, i64 1, i64 0 }, ptr %a10
|
|
call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a8
|
|
%t12 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 2
|
|
%t13 = load i64, ptr %t12
|
|
call void @finch_str_from_int(ptr %a14, i64 %t13)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t11, ptr %a17
|
|
store { ptr, i64, i64 } %t15, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t19, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.510, i64 1, i64 0 }, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
%t24 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3
|
|
%t25 = load i64, ptr %t24
|
|
call void @finch_str_from_int(ptr %a26, i64 %t25)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t23, ptr %a29
|
|
store { ptr, i64, i64 } %t27, ptr %a30
|
|
call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a28
|
|
store { ptr, i64, i64 } %t31, ptr %a33
|
|
store { ptr, i64, i64 } { ptr @.str.511, i64 9, i64 0 }, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
%t36 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t35, ptr %a38
|
|
store { ptr, i64, i64 } %t36, ptr %a39
|
|
call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a37
|
|
%t41 = extractvalue { ptr, i64, i64 } %t40, 1
|
|
%t42 = trunc i64 %t41 to i32
|
|
%t43 = extractvalue { ptr, i64, i64 } %t40, 0
|
|
%t44 = icmp eq ptr %t43, null
|
|
%t45 = select i1 %t44, ptr @.str.512, ptr %t43
|
|
%t46 = call i32 (ptr, ...) @printf(ptr @.str.513, i32 %t42, ptr %t45)
|
|
%t47 = call i32 (ptr, ...) @printf(ptr @.str.514)
|
|
%t48 = trunc i64 1 to i32
|
|
%t49 = call i32 @fflush(ptr null)
|
|
call void @exit(i32 %t48)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.lexer.Token @finch.parser.cur(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a15 = alloca %S.lexer.Token, align 16
|
|
%a16 = alloca %S.lexer.Token, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic897, label %ok898
|
|
panic897:
|
|
call void @finch_panic(ptr @.str.515, i64 19, ptr @.str.516)
|
|
unreachable
|
|
ok898:
|
|
%t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = icmp eq ptr %t5, null
|
|
br i1 %t6, label %panic899, label %ok900
|
|
panic899:
|
|
call void @finch_panic(ptr @.str.517, i64 19, ptr @.str.518)
|
|
unreachable
|
|
ok900:
|
|
%t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1
|
|
%t8 = load i64, ptr %t7
|
|
%t9 = load { ptr, i64, i64 }, ptr %t4
|
|
%t10 = extractvalue { ptr, i64, i64 } %t9, 1
|
|
%t11 = icmp uge i64 %t8, %t10
|
|
br i1 %t11, label %range901, label %inrange902
|
|
range901:
|
|
call void @finch_panic_index(ptr @.str.519, i64 19, i64 %t8, i64 %t10)
|
|
unreachable
|
|
inrange902:
|
|
%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 %panic903, label %ok904
|
|
panic903:
|
|
call void @finch_panic(ptr @.str.520, i64 23, ptr @.str.521)
|
|
unreachable
|
|
ok904:
|
|
%t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = icmp eq ptr %t5, null
|
|
br i1 %t6, label %panic905, label %ok906
|
|
panic905:
|
|
call void @finch_panic(ptr @.str.522, i64 23, ptr @.str.523)
|
|
unreachable
|
|
ok906:
|
|
%t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1
|
|
%t8 = load i64, ptr %t7
|
|
%t9 = load { ptr, i64, i64 }, ptr %t4
|
|
%t10 = extractvalue { ptr, i64, i64 } %t9, 1
|
|
%t11 = icmp uge i64 %t8, %t10
|
|
br i1 %t11, label %range907, label %inrange908
|
|
range907:
|
|
call void @finch_panic_index(ptr @.str.524, i64 23, i64 %t8, i64 %t10)
|
|
unreachable
|
|
inrange908:
|
|
%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 %panic909, label %ok910
|
|
panic909:
|
|
call void @finch_panic(ptr @.str.525, i64 27, ptr @.str.526)
|
|
unreachable
|
|
ok910:
|
|
%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 %panic911, label %ok912
|
|
panic911:
|
|
call void @finch_panic(ptr @.str.527, i64 28, ptr @.str.528)
|
|
unreachable
|
|
ok912:
|
|
%t13 = getelementptr inbounds %S.parser.Parser, ptr %t11, i32 0, i32 0
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i32 0, i32 1
|
|
%t15 = load i64, ptr %t14
|
|
%t16 = icmp sge i64 %t10, %t15
|
|
br i1 %t16, label %then913, label %endif915
|
|
then913:
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = icmp eq ptr %t17, null
|
|
br i1 %t18, label %panic916, label %ok917
|
|
panic916:
|
|
call void @finch_panic(ptr @.str.529, i64 29, ptr @.str.530)
|
|
unreachable
|
|
ok917:
|
|
%t19 = getelementptr inbounds %S.parser.Parser, ptr %t17, i32 0, i32 0
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1
|
|
%t21 = load i64, ptr %t20
|
|
%t22 = sub i64 %t21, 1
|
|
store i64 %t22, ptr %a9
|
|
br label %endif915
|
|
endif915:
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = icmp eq ptr %t23, null
|
|
br i1 %t24, label %panic918, label %ok919
|
|
panic918:
|
|
call void @finch_panic(ptr @.str.531, i64 31, ptr @.str.532)
|
|
unreachable
|
|
ok919:
|
|
%t25 = getelementptr inbounds %S.parser.Parser, ptr %t23, i32 0, i32 0
|
|
%t26 = load i64, ptr %a9
|
|
%t27 = load { ptr, i64, i64 }, ptr %t25
|
|
%t28 = extractvalue { ptr, i64, i64 } %t27, 1
|
|
%t29 = icmp uge i64 %t26, %t28
|
|
br i1 %t29, label %range920, label %inrange921
|
|
range920:
|
|
call void @finch_panic_index(ptr @.str.533, i64 31, i64 %t26, i64 %t28)
|
|
unreachable
|
|
inrange921:
|
|
%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 %panic922, label %ok923
|
|
panic922:
|
|
call void @finch_panic(ptr @.str.534, i64 35, ptr @.str.535)
|
|
unreachable
|
|
ok923:
|
|
%t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 0
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = icmp eq ptr %t6, null
|
|
br i1 %t7, label %panic924, label %ok925
|
|
panic924:
|
|
call void @finch_panic(ptr @.str.536, i64 35, ptr @.str.537)
|
|
unreachable
|
|
ok925:
|
|
%t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1
|
|
%t9 = load i64, ptr %t8
|
|
%t10 = load { ptr, i64, i64 }, ptr %t5
|
|
%t11 = extractvalue { ptr, i64, i64 } %t10, 1
|
|
%t12 = icmp uge i64 %t9, %t11
|
|
br i1 %t12, label %range926, label %inrange927
|
|
range926:
|
|
call void @finch_panic_index(ptr @.str.538, i64 35, i64 %t9, i64 %t11)
|
|
unreachable
|
|
inrange927:
|
|
%t13 = extractvalue { ptr, i64, i64 } %t10, 0
|
|
%t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i64 %t9
|
|
%t15 = getelementptr inbounds %S.lexer.Token, ptr %t14, i32 0, i32 0
|
|
%t16 = load { ptr, i64, i64 }, ptr %t15
|
|
%t17 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t16, ptr %a18
|
|
store { ptr, i64, i64 } %t17, ptr %a19
|
|
%t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19)
|
|
%t21 = icmp ne i32 %t20, 0
|
|
ret i1 %t21
|
|
}
|
|
|
|
define internal %S.lexer.Token @finch.parser.next(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a15 = alloca %S.lexer.Token, align 16
|
|
%a16 = alloca %S.lexer.Token, align 16
|
|
%a18 = alloca %S.lexer.Token, align 16
|
|
%a25 = alloca %S.lexer.Token, align 16
|
|
%a26 = alloca %S.lexer.Token, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic928, label %ok929
|
|
panic928:
|
|
call void @finch_panic(ptr @.str.539, i64 39, ptr @.str.540)
|
|
unreachable
|
|
ok929:
|
|
%t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = icmp eq ptr %t5, null
|
|
br i1 %t6, label %panic930, label %ok931
|
|
panic930:
|
|
call void @finch_panic(ptr @.str.541, i64 39, ptr @.str.542)
|
|
unreachable
|
|
ok931:
|
|
%t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1
|
|
%t8 = load i64, ptr %t7
|
|
%t9 = load { ptr, i64, i64 }, ptr %t4
|
|
%t10 = extractvalue { ptr, i64, i64 } %t9, 1
|
|
%t11 = icmp uge i64 %t8, %t10
|
|
br i1 %t11, label %range932, label %inrange933
|
|
range932:
|
|
call void @finch_panic_index(ptr @.str.543, i64 39, i64 %t8, i64 %t10)
|
|
unreachable
|
|
inrange933:
|
|
%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 %panic934, label %ok935
|
|
panic934:
|
|
call void @finch_panic(ptr @.str.544, i64 40, ptr @.str.545)
|
|
unreachable
|
|
ok935:
|
|
%t21 = getelementptr inbounds %S.parser.Parser, ptr %t19, i32 0, i32 1
|
|
%t22 = load i64, ptr %t21
|
|
%t23 = add i64 %t22, 1
|
|
store i64 %t23, ptr %t21
|
|
%t24 = load %S.lexer.Token, ptr %a18
|
|
store %S.lexer.Token %t24, ptr %a25
|
|
call void @finch.copy.S_lexer_Token(ptr %a26, ptr %a25)
|
|
%t27 = load %S.lexer.Token, ptr %a26
|
|
ret %S.lexer.Token %t27
|
|
}
|
|
|
|
define internal i1 @finch.parser.accept(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load { ptr, i64, i64 }, ptr %a2
|
|
%t5 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } %t4)
|
|
br i1 %t5, label %then936, label %endif938
|
|
then936:
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = icmp eq ptr %t6, null
|
|
br i1 %t7, label %panic939, label %ok940
|
|
panic939:
|
|
call void @finch_panic(ptr @.str.546, i64 46, ptr @.str.547)
|
|
unreachable
|
|
ok940:
|
|
%t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1
|
|
%t9 = load i64, ptr %t8
|
|
%t10 = add i64 %t9, 1
|
|
store i64 %t10, ptr %t8
|
|
ret i1 true
|
|
endif938:
|
|
ret i1 false
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %p0) {
|
|
entry:
|
|
%a1 = alloca %S.lexer.Token, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
store %S.lexer.Token %p0, ptr %a1
|
|
%t2 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0
|
|
%t3 = load { ptr, i64, i64 }, ptr %t2
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.548, i64 5, i64 0 }, ptr %a5
|
|
%t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5)
|
|
%t7 = icmp ne i32 %t6, 0
|
|
br i1 %t7, label %then941, label %endif943
|
|
then941:
|
|
%t8 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 1
|
|
%t9 = load { ptr, i64, i64 }, ptr %t8
|
|
store { ptr, i64, i64 } { ptr @.str.549, i64 1, i64 0 }, ptr %a11
|
|
store { ptr, i64, i64 } %t9, ptr %a12
|
|
call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t13, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.550, i64 1, i64 0 }, ptr %a16
|
|
call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a14
|
|
ret { ptr, i64, i64 } %t17
|
|
endif943:
|
|
%t18 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0
|
|
%t19 = load { ptr, i64, i64 }, ptr %t18
|
|
store { ptr, i64, i64 } %t19, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.551, i64 3, i64 0 }, ptr %a21
|
|
%t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21)
|
|
%t23 = icmp ne i32 %t22, 0
|
|
br i1 %t23, label %then944, label %endif946
|
|
then944:
|
|
ret { ptr, i64, i64 } { ptr @.str.552, i64 11, i64 0 }
|
|
endif946:
|
|
%t24 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0
|
|
%t25 = load { ptr, i64, i64 }, ptr %t24
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.553, i64 3, i64 0 }, ptr %a27
|
|
%t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27)
|
|
%t29 = icmp ne i32 %t28, 0
|
|
br label %logic.from947
|
|
logic.from947:
|
|
br i1 %t29, label %logic.end949, label %logic.rhs948
|
|
logic.rhs948:
|
|
%t30 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0
|
|
%t31 = load { ptr, i64, i64 }, ptr %t30
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.554, i64 5, i64 0 }, ptr %a33
|
|
%t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33)
|
|
%t35 = icmp ne i32 %t34, 0
|
|
br label %logic.rend950
|
|
logic.rend950:
|
|
br label %logic.end949
|
|
logic.end949:
|
|
%t36 = phi i1 [ true, %logic.from947 ], [ %t35, %logic.rend950 ]
|
|
br i1 %t36, label %then951, label %endif953
|
|
then951:
|
|
ret { ptr, i64, i64 } { ptr @.str.555, i64 8, i64 0 }
|
|
endif953:
|
|
%t37 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0
|
|
%t38 = load { ptr, i64, i64 }, ptr %t37
|
|
store { ptr, i64, i64 } %t38, ptr %a39
|
|
store { ptr, i64, i64 } { ptr @.str.556, i64 6, i64 0 }, ptr %a40
|
|
%t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40)
|
|
%t42 = icmp ne i32 %t41, 0
|
|
br i1 %t42, label %then954, label %endif956
|
|
then954:
|
|
ret { ptr, i64, i64 } { ptr @.str.557, i64 8, i64 0 }
|
|
endif956:
|
|
%t43 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0
|
|
%t44 = load { ptr, i64, i64 }, ptr %t43
|
|
store { ptr, i64, i64 } %t44, ptr %a45
|
|
store { ptr, i64, i64 } { ptr @.str.558, i64 4, i64 0 }, ptr %a46
|
|
%t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46)
|
|
%t48 = icmp ne i32 %t47, 0
|
|
br i1 %t48, label %then957, label %endif959
|
|
then957:
|
|
ret { ptr, i64, i64 } { ptr @.str.559, i64 6, i64 0 }
|
|
endif959:
|
|
%t49 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0
|
|
%t50 = load { ptr, i64, i64 }, ptr %t49
|
|
store { ptr, i64, i64 } { ptr @.str.560, i64 1, i64 0 }, ptr %a52
|
|
store { ptr, i64, i64 } %t50, ptr %a53
|
|
call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a51
|
|
store { ptr, i64, i64 } %t54, ptr %a56
|
|
store { ptr, i64, i64 } { ptr @.str.561, i64 1, i64 0 }, ptr %a57
|
|
call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57)
|
|
%t58 = load { ptr, i64, i64 }, ptr %a55
|
|
ret { ptr, i64, i64 } %t58
|
|
}
|
|
|
|
define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = load { ptr, i64, i64 }, ptr %a2
|
|
%t6 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } %t5)
|
|
%t7 = xor i1 %t6, true
|
|
br i1 %t7, label %then960, label %endif962
|
|
then960:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = call %S.lexer.Token @finch.parser.cur(ptr %t9)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.562, i64 9, i64 0 }, ptr %a13
|
|
store { ptr, i64, i64 } %t11, ptr %a14
|
|
call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t15, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.563, i64 8, i64 0 }, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = call %S.lexer.Token @finch.parser.cur(ptr %t20)
|
|
%t22 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t21)
|
|
store { ptr, i64, i64 } %t19, ptr %a24
|
|
store { ptr, i64, i64 } %t22, ptr %a25
|
|
call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t26)
|
|
br label %endif962
|
|
endif962:
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = call %S.lexer.Token @finch.parser.next(ptr %t27)
|
|
ret %S.lexer.Token %t28
|
|
}
|
|
|
|
define internal i1 @finch.parser.sameLine(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic963, label %ok964
|
|
panic963:
|
|
call void @finch_panic(ptr @.str.564, i64 79, ptr @.str.565)
|
|
unreachable
|
|
ok964:
|
|
%t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 2
|
|
%t5 = load i64, ptr %t4
|
|
%t6 = icmp sgt i64 %t5, 0
|
|
br label %logic.from965
|
|
logic.from965:
|
|
br i1 %t6, label %logic.end967, label %logic.rhs966
|
|
logic.rhs966:
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = icmp eq ptr %t7, null
|
|
br i1 %t8, label %panic968, label %ok969
|
|
panic968:
|
|
call void @finch_panic(ptr @.str.566, i64 79, ptr @.str.567)
|
|
unreachable
|
|
ok969:
|
|
%t9 = getelementptr inbounds %S.parser.Parser, ptr %t7, i32 0, i32 0
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = icmp eq ptr %t10, null
|
|
br i1 %t11, label %panic970, label %ok971
|
|
panic970:
|
|
call void @finch_panic(ptr @.str.568, i64 79, ptr @.str.569)
|
|
unreachable
|
|
ok971:
|
|
%t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1
|
|
%t13 = load i64, ptr %t12
|
|
%t14 = load { ptr, i64, i64 }, ptr %t9
|
|
%t15 = extractvalue { ptr, i64, i64 } %t14, 1
|
|
%t16 = icmp uge i64 %t13, %t15
|
|
br i1 %t16, label %range972, label %inrange973
|
|
range972:
|
|
call void @finch_panic_index(ptr @.str.570, i64 79, i64 %t13, i64 %t15)
|
|
unreachable
|
|
inrange973:
|
|
%t17 = extractvalue { ptr, i64, i64 } %t14, 0
|
|
%t18 = getelementptr inbounds %S.lexer.Token, ptr %t17, i64 %t13
|
|
%t19 = getelementptr inbounds %S.lexer.Token, ptr %t18, i32 0, i32 4
|
|
%t20 = load i1, ptr %t19
|
|
%t21 = xor i1 %t20, true
|
|
br label %logic.rend974
|
|
logic.rend974:
|
|
br label %logic.end967
|
|
logic.end967:
|
|
%t22 = phi i1 [ true, %logic.from965 ], [ %t21, %logic.rend974 ]
|
|
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 %panic975, label %ok976
|
|
panic975:
|
|
call void @finch_panic(ptr @.str.571, i64 83, ptr @.str.572)
|
|
unreachable
|
|
ok976:
|
|
%t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 0
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = icmp eq ptr %t6, null
|
|
br i1 %t7, label %panic977, label %ok978
|
|
panic977:
|
|
call void @finch_panic(ptr @.str.573, i64 83, ptr @.str.574)
|
|
unreachable
|
|
ok978:
|
|
%t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1
|
|
%t9 = load i64, ptr %t8
|
|
%t10 = load { ptr, i64, i64 }, ptr %t5
|
|
%t11 = extractvalue { ptr, i64, i64 } %t10, 1
|
|
%t12 = icmp uge i64 %t9, %t11
|
|
br i1 %t12, label %range979, label %inrange980
|
|
range979:
|
|
call void @finch_panic_index(ptr @.str.575, i64 83, i64 %t9, i64 %t11)
|
|
unreachable
|
|
inrange980:
|
|
%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 %panic981, label %ok982
|
|
panic981:
|
|
call void @finch_panic(ptr @.str.576, i64 84, ptr @.str.577)
|
|
unreachable
|
|
ok982:
|
|
%t33 = getelementptr inbounds %S.parser.Parser, ptr %t31, i32 0, i32 3
|
|
%t34 = load i64, ptr %t33
|
|
%t35 = insertvalue %S.ast.Node %t30, i64 %t34, 13
|
|
ret %S.ast.Node %t35
|
|
}
|
|
|
|
define internal i1 @finch.parser.isTypeName({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca i64, align 16
|
|
%a29 = alloca i64, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = mul i64 16, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t3 = call ptr @finch_alloc(i64 %t2)
|
|
%t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.578, i64 3, i64 0 }, ptr %t4
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.579, i64 5, i64 0 }, ptr %t5
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.580, i64 4, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.581, i64 4, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.582, i64 3, i64 0 }, ptr %t8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.583, i64 3, i64 0 }, ptr %t9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.584, i64 2, i64 0 }, ptr %t10
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.585, i64 3, i64 0 }, ptr %t11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.586, i64 3, i64 0 }, ptr %t12
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.587, i64 3, i64 0 }, ptr %t13
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10
|
|
store { ptr, i64, i64 } { ptr @.str.588, i64 2, i64 0 }, ptr %t14
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11
|
|
store { ptr, i64, i64 } { ptr @.str.589, i64 3, i64 0 }, ptr %t15
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12
|
|
store { ptr, i64, i64 } { ptr @.str.590, i64 3, i64 0 }, ptr %t16
|
|
%t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13
|
|
store { ptr, i64, i64 } { ptr @.str.591, i64 3, i64 0 }, ptr %t17
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14
|
|
store { ptr, i64, i64 } { ptr @.str.592, i64 3, i64 0 }, ptr %t18
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15
|
|
store { ptr, i64, i64 } { ptr @.str.593, i64 3, i64 0 }, ptr %t19
|
|
%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.cond983
|
|
find.cond983:
|
|
%t30 = load i64, ptr %a29
|
|
%t31 = icmp slt i64 %t30, %t27
|
|
br i1 %t31, label %find.body984, label %find.end987
|
|
find.body984:
|
|
%t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t30
|
|
%t33 = load { ptr, i64, i64 }, ptr %t32
|
|
store { ptr, i64, i64 } %t33, ptr %a34
|
|
store { ptr, i64, i64 } %t25, ptr %a35
|
|
%t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35)
|
|
%t37 = icmp ne i32 %t36, 0
|
|
br i1 %t37, label %find.hit985, label %find.next986
|
|
find.hit985:
|
|
store i64 %t30, ptr %a26
|
|
br label %find.end987
|
|
find.next986:
|
|
%t38 = add i64 %t30, 1
|
|
store i64 %t38, ptr %a29
|
|
br label %find.cond983
|
|
find.end987:
|
|
%t39 = load i64, ptr %a26
|
|
%t40 = icmp sge i64 %t39, 0
|
|
ret i1 %t40
|
|
}
|
|
|
|
define internal %S.ast.Type @finch.parser.parseType(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca %S.ast.Type, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca %S.ast.Type, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca %S.ast.Type, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca %S.ast.Type, align 16
|
|
%a144 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.594, i64 1, i64 0 })
|
|
br i1 %t3, label %then988, label %endif990
|
|
then988:
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.595, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.596, i64 36, i64 0 })
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = call %S.ast.Type @finch.parser.parseType(ptr %t6)
|
|
%t8 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t7)
|
|
ret %S.ast.Type %t8
|
|
endif990:
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = call i1 @finch.parser.at(ptr %t9, { ptr, i64, i64 } { ptr @.str.597, i64 5, i64 0 })
|
|
%t11 = xor i1 %t10, true
|
|
br i1 %t11, label %then991, label %endif993
|
|
then991:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = call %S.lexer.Token @finch.parser.cur(ptr %t13)
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = call %S.lexer.Token @finch.parser.cur(ptr %t15)
|
|
%t17 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t16)
|
|
store { ptr, i64, i64 } { ptr @.str.598, i64 11, i64 0 }, ptr %a19
|
|
store { ptr, i64, i64 } %t17, ptr %a20
|
|
call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t21, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.599, i64 56, i64 0 }, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t25)
|
|
br label %endif993
|
|
endif993:
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = call %S.lexer.Token @finch.parser.next(ptr %t26)
|
|
%t28 = extractvalue %S.lexer.Token %t27, 1
|
|
store { ptr, i64, i64 } %t28, ptr %a29
|
|
call void @finch_str_copy(ptr %a30, ptr %a29)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a30
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
%t33 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t33, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.600, i64 3, i64 0 }, ptr %a35
|
|
%t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35)
|
|
%t37 = icmp ne i32 %t36, 0
|
|
br label %logic.from994
|
|
logic.from994:
|
|
br i1 %t37, label %logic.rhs995, label %logic.end996
|
|
logic.rhs995:
|
|
%t38 = load ptr, ptr %a1
|
|
%t39 = call i1 @finch.parser.at(ptr %t38, { ptr, i64, i64 } { ptr @.str.601, i64 1, i64 0 })
|
|
br label %logic.rend997
|
|
logic.rend997:
|
|
br label %logic.end996
|
|
logic.end996:
|
|
%t40 = phi i1 [ false, %logic.from994 ], [ %t39, %logic.rend997 ]
|
|
br i1 %t40, label %then998, label %endif1000
|
|
then998:
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = call %S.lexer.Token @finch.parser.next(ptr %t41)
|
|
%t43 = load ptr, ptr %a1
|
|
%t44 = call %S.ast.Type @finch.parser.parseType(ptr %t43)
|
|
store %S.ast.Type %t44, ptr %a45
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = call %S.lexer.Token @finch.parser.expect(ptr %t46, { ptr, i64, i64 } { ptr @.str.602, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.603, i64 39, i64 0 })
|
|
%t48 = load %S.ast.Type, ptr %a45
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = call %S.ast.Type @finch.parser.parseType(ptr %t49)
|
|
%t51 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t48, %S.ast.Type %t50)
|
|
ret %S.ast.Type %t51
|
|
endif1000:
|
|
%t52 = load { ptr, i64, i64 }, ptr %a32
|
|
%t53 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t52)
|
|
br i1 %t53, label %then1001, label %endif1003
|
|
then1001:
|
|
%t54 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
store { ptr, i64, i64 } { ptr @.str.604, i64 3, i64 0 }, ptr %a56
|
|
%t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56)
|
|
%t58 = icmp ne i32 %t57, 0
|
|
br label %logic.from1004
|
|
logic.from1004:
|
|
br i1 %t58, label %logic.rhs1005, label %logic.end1006
|
|
logic.rhs1005:
|
|
%t59 = load ptr, ptr %a1
|
|
%t60 = call i1 @finch.parser.accept(ptr %t59, { ptr, i64, i64 } { ptr @.str.605, i64 1, i64 0 })
|
|
br label %logic.rend1007
|
|
logic.rend1007:
|
|
br label %logic.end1006
|
|
logic.end1006:
|
|
%t61 = phi i1 [ false, %logic.from1004 ], [ %t60, %logic.rend1007 ]
|
|
br i1 %t61, label %then1008, label %endif1010
|
|
then1008:
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62)
|
|
%t64 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t63)
|
|
store %S.ast.Type %t64, ptr %a65
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.606, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.607, i64 3, i64 0 })
|
|
%t68 = load %S.ast.Type, ptr %a65
|
|
ret %S.ast.Type %t68
|
|
endif1010:
|
|
%t69 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t69, ptr %a70
|
|
store { ptr, i64, i64 } { ptr @.str.608, i64 3, i64 0 }, ptr %a71
|
|
%t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71)
|
|
%t73 = icmp ne i32 %t72, 0
|
|
br i1 %t73, label %then1011, label %endif1013
|
|
then1011:
|
|
%t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.609, i64 3, i64 0 })
|
|
ret %S.ast.Type %t74
|
|
endif1013:
|
|
%t75 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.610, i64 3, i64 0 }, ptr %a77
|
|
%t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77)
|
|
%t79 = icmp ne i32 %t78, 0
|
|
br i1 %t79, label %then1014, label %endif1016
|
|
then1014:
|
|
%t80 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.611, i64 5, i64 0 })
|
|
ret %S.ast.Type %t80
|
|
endif1016:
|
|
%t81 = load { ptr, i64, i64 }, ptr %a32
|
|
%t82 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t81)
|
|
ret %S.ast.Type %t82
|
|
endif1003:
|
|
%t83 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.612, i64 5, i64 0 }, 0
|
|
%t84 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t84, ptr %a85
|
|
call void @finch_str_copy(ptr %a86, ptr %a85)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a86
|
|
%t88 = insertvalue %S.ast.Type %t83, { ptr, i64, i64 } %t87, 2
|
|
store %S.ast.Type %t88, ptr %a89
|
|
%t90 = load ptr, ptr %a1
|
|
%t91 = call i1 @finch.parser.at(ptr %t90, { ptr, i64, i64 } { ptr @.str.613, i64 1, i64 0 })
|
|
br label %logic.from1017
|
|
logic.from1017:
|
|
br i1 %t91, label %logic.rhs1018, label %logic.end1019
|
|
logic.rhs1018:
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t92, i64 1)
|
|
store { ptr, i64, i64 } %t93, ptr %a94
|
|
store { ptr, i64, i64 } { ptr @.str.614, i64 5, i64 0 }, ptr %a95
|
|
%t96 = call i32 @finch_str_eq(ptr %a94, ptr %a95)
|
|
%t97 = icmp ne i32 %t96, 0
|
|
br label %logic.rend1020
|
|
logic.rend1020:
|
|
br label %logic.end1019
|
|
logic.end1019:
|
|
%t98 = phi i1 [ false, %logic.from1017 ], [ %t97, %logic.rend1020 ]
|
|
br i1 %t98, label %then1021, label %endif1023
|
|
then1021:
|
|
%t99 = load ptr, ptr %a1
|
|
%t100 = call %S.lexer.Token @finch.parser.next(ptr %t99)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a32
|
|
%t102 = getelementptr inbounds %S.ast.Type, ptr %a89, i32 0, i32 3
|
|
store { ptr, i64, i64 } %t101, ptr %a103
|
|
call void @finch_str_copy(ptr %a104, ptr %a103)
|
|
%t105 = load { ptr, i64, i64 }, ptr %a104
|
|
store { ptr, i64, i64 } %t105, ptr %t102
|
|
%t106 = load ptr, ptr %a1
|
|
%t107 = call %S.lexer.Token @finch.parser.next(ptr %t106)
|
|
%t108 = extractvalue %S.lexer.Token %t107, 1
|
|
store { ptr, i64, i64 } %t108, ptr %a109
|
|
call void @finch_str_copy(ptr %a110, ptr %a109)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a110
|
|
%t112 = getelementptr inbounds %S.ast.Type, ptr %a89, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t111, ptr %t112
|
|
br label %endif1023
|
|
endif1023:
|
|
%t113 = load ptr, ptr %a1
|
|
%t114 = call i1 @finch.parser.at(ptr %t113, { ptr, i64, i64 } { ptr @.str.615, i64 1, i64 0 })
|
|
br label %logic.from1024
|
|
logic.from1024:
|
|
br i1 %t114, label %logic.rhs1025, label %logic.end1026
|
|
logic.rhs1025:
|
|
%t115 = load ptr, ptr %a1
|
|
%t116 = call %S.lexer.Token @finch.parser.cur(ptr %t115)
|
|
%t117 = extractvalue %S.lexer.Token %t116, 4
|
|
%t118 = xor i1 %t117, true
|
|
br label %logic.rend1027
|
|
logic.rend1027:
|
|
br label %logic.end1026
|
|
logic.end1026:
|
|
%t119 = phi i1 [ false, %logic.from1024 ], [ %t118, %logic.rend1027 ]
|
|
br label %logic.from1028
|
|
logic.from1028:
|
|
br i1 %t119, label %logic.rhs1029, label %logic.end1030
|
|
logic.rhs1029:
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t120, i64 1)
|
|
store { ptr, i64, i64 } %t121, ptr %a122
|
|
store { ptr, i64, i64 } { ptr @.str.616, i64 1, i64 0 }, ptr %a123
|
|
%t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123)
|
|
%t125 = icmp eq i32 %t124, 0
|
|
br label %logic.rend1031
|
|
logic.rend1031:
|
|
br label %logic.end1030
|
|
logic.end1030:
|
|
%t126 = phi i1 [ false, %logic.from1028 ], [ %t125, %logic.rend1031 ]
|
|
br i1 %t126, label %then1032, label %endif1034
|
|
then1032:
|
|
%t127 = load ptr, ptr %a1
|
|
%t128 = call %S.lexer.Token @finch.parser.next(ptr %t127)
|
|
br label %while.cond1035
|
|
while.cond1035:
|
|
br label %while.body1036
|
|
while.body1036:
|
|
%t129 = getelementptr inbounds %S.ast.Type, ptr %a89, i32 0, i32 1
|
|
%t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = call %S.ast.Type @finch.parser.parseType(ptr %t131)
|
|
%t133 = load i64, ptr %t130
|
|
%t134 = add i64 %t133, 1
|
|
call void @finch_arr_reserve(ptr %t129, i64 %t134, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t135 = load ptr, ptr %t129
|
|
%t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t133
|
|
store %S.ast.Type %t132, ptr %t136
|
|
store i64 %t134, ptr %t130
|
|
%t137 = load ptr, ptr %a1
|
|
%t138 = call i1 @finch.parser.accept(ptr %t137, { ptr, i64, i64 } { ptr @.str.617, i64 1, i64 0 })
|
|
%t139 = xor i1 %t138, true
|
|
br i1 %t139, label %then1038, label %endif1040
|
|
then1038:
|
|
br label %while.end1037
|
|
endif1040:
|
|
br label %while.cond1035
|
|
while.end1037:
|
|
%t140 = load ptr, ptr %a1
|
|
%t141 = call %S.lexer.Token @finch.parser.expect(ptr %t140, { ptr, i64, i64 } { ptr @.str.618, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.619, i64 28, i64 0 })
|
|
br label %endif1034
|
|
endif1034:
|
|
%t142 = load %S.ast.Type, ptr %a89
|
|
store %S.ast.Type %t142, ptr %a143
|
|
call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143)
|
|
%t145 = load %S.ast.Type, ptr %a144
|
|
ret %S.ast.Type %t145
|
|
}
|
|
|
|
define internal i1 @finch.parser.genericDeclAhead(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca i64, align 16
|
|
%a25 = alloca i64, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.620, i64 5, i64 0 })
|
|
%t4 = xor i1 %t3, true
|
|
br label %logic.from1041
|
|
logic.from1041:
|
|
br i1 %t4, label %logic.end1043, label %logic.rhs1042
|
|
logic.rhs1042:
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t5, i64 1)
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
store { ptr, i64, i64 } { ptr @.str.621, i64 1, i64 0 }, ptr %a8
|
|
%t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8)
|
|
%t10 = icmp eq i32 %t9, 0
|
|
br label %logic.rend1044
|
|
logic.rend1044:
|
|
br label %logic.end1043
|
|
logic.end1043:
|
|
%t11 = phi i1 [ true, %logic.from1041 ], [ %t10, %logic.rend1044 ]
|
|
br label %logic.from1045
|
|
logic.from1045:
|
|
br i1 %t11, label %logic.end1047, label %logic.rhs1046
|
|
logic.rhs1046:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t12, i64 2)
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.622, i64 1, i64 0 }, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp ne i32 %t16, 0
|
|
br label %logic.rend1048
|
|
logic.rend1048:
|
|
br label %logic.end1047
|
|
logic.end1047:
|
|
%t18 = phi i1 [ true, %logic.from1045 ], [ %t17, %logic.rend1048 ]
|
|
br i1 %t18, label %then1049, label %endif1051
|
|
then1049:
|
|
ret i1 false
|
|
endif1051:
|
|
store i64 0, ptr %a19
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = icmp eq ptr %t20, null
|
|
br i1 %t21, label %panic1052, label %ok1053
|
|
panic1052:
|
|
call void @finch_panic(ptr @.str.623, i64 148, ptr @.str.624)
|
|
unreachable
|
|
ok1053:
|
|
%t22 = getelementptr inbounds %S.parser.Parser, ptr %t20, i32 0, i32 1
|
|
%t23 = load i64, ptr %t22
|
|
%t24 = add i64 %t23, 1
|
|
store i64 %t24, ptr %a25
|
|
br label %while.cond1054
|
|
while.cond1054:
|
|
%t26 = load i64, ptr %a25
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = icmp eq ptr %t27, null
|
|
br i1 %t28, label %panic1057, label %ok1058
|
|
panic1057:
|
|
call void @finch_panic(ptr @.str.625, i64 149, ptr @.str.626)
|
|
unreachable
|
|
ok1058:
|
|
%t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 0
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1
|
|
%t31 = load i64, ptr %t30
|
|
%t32 = icmp slt i64 %t26, %t31
|
|
br i1 %t32, label %while.body1055, label %while.end1056
|
|
while.body1055:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = icmp eq ptr %t33, null
|
|
br i1 %t34, label %panic1059, label %ok1060
|
|
panic1059:
|
|
call void @finch_panic(ptr @.str.627, i64 150, ptr @.str.628)
|
|
unreachable
|
|
ok1060:
|
|
%t35 = getelementptr inbounds %S.parser.Parser, ptr %t33, i32 0, i32 0
|
|
%t36 = load i64, ptr %a25
|
|
%t37 = load { ptr, i64, i64 }, ptr %t35
|
|
%t38 = extractvalue { ptr, i64, i64 } %t37, 1
|
|
%t39 = icmp uge i64 %t36, %t38
|
|
br i1 %t39, label %range1061, label %inrange1062
|
|
range1061:
|
|
call void @finch_panic_index(ptr @.str.629, i64 150, i64 %t36, i64 %t38)
|
|
unreachable
|
|
inrange1062:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds %S.lexer.Token, ptr %t40, i64 %t36
|
|
%t42 = getelementptr inbounds %S.lexer.Token, ptr %t41, i32 0, i32 0
|
|
%t43 = load { ptr, i64, i64 }, ptr %t42
|
|
store { ptr, i64, i64 } %t43, ptr %a44
|
|
call void @finch_str_copy(ptr %a45, ptr %a44)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a45
|
|
store { ptr, i64, i64 } %t46, ptr %a47
|
|
%t48 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
store { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }, ptr %a50
|
|
%t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50)
|
|
%t52 = icmp ne i32 %t51, 0
|
|
br i1 %t52, label %then1063, label %else1064
|
|
then1063:
|
|
%t53 = load i64, ptr %a19
|
|
%t54 = add i64 %t53, 1
|
|
store i64 %t54, ptr %a19
|
|
br label %endif1065
|
|
else1064:
|
|
%t55 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
store { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, ptr %a57
|
|
%t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57)
|
|
%t59 = icmp ne i32 %t58, 0
|
|
br i1 %t59, label %then1066, label %else1067
|
|
then1066:
|
|
%t60 = load i64, ptr %a19
|
|
%t61 = sub i64 %t60, 1
|
|
store i64 %t61, ptr %a19
|
|
%t62 = load i64, ptr %a19
|
|
%t63 = icmp eq i64 %t62, 0
|
|
br i1 %t63, label %then1069, label %endif1071
|
|
then1069:
|
|
%t64 = load i64, ptr %a25
|
|
%t65 = add i64 %t64, 1
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = icmp eq ptr %t66, null
|
|
br i1 %t67, label %panic1072, label %ok1073
|
|
panic1072:
|
|
call void @finch_panic(ptr @.str.632, i64 156, ptr @.str.633)
|
|
unreachable
|
|
ok1073:
|
|
%t68 = getelementptr inbounds %S.parser.Parser, ptr %t66, i32 0, i32 0
|
|
%t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1
|
|
%t70 = load i64, ptr %t69
|
|
%t71 = icmp slt i64 %t65, %t70
|
|
br label %logic.from1074
|
|
logic.from1074:
|
|
br i1 %t71, label %logic.rhs1075, label %logic.end1076
|
|
logic.rhs1075:
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = icmp eq ptr %t72, null
|
|
br i1 %t73, label %panic1077, label %ok1078
|
|
panic1077:
|
|
call void @finch_panic(ptr @.str.634, i64 156, ptr @.str.635)
|
|
unreachable
|
|
ok1078:
|
|
%t74 = getelementptr inbounds %S.parser.Parser, ptr %t72, i32 0, i32 0
|
|
%t75 = load i64, ptr %a25
|
|
%t76 = add i64 %t75, 1
|
|
%t77 = load { ptr, i64, i64 }, ptr %t74
|
|
%t78 = extractvalue { ptr, i64, i64 } %t77, 1
|
|
%t79 = icmp uge i64 %t76, %t78
|
|
br i1 %t79, label %range1079, label %inrange1080
|
|
range1079:
|
|
call void @finch_panic_index(ptr @.str.636, i64 156, i64 %t76, i64 %t78)
|
|
unreachable
|
|
inrange1080:
|
|
%t80 = extractvalue { ptr, i64, i64 } %t77, 0
|
|
%t81 = getelementptr inbounds %S.lexer.Token, ptr %t80, i64 %t76
|
|
%t82 = getelementptr inbounds %S.lexer.Token, ptr %t81, i32 0, i32 0
|
|
%t83 = load { ptr, i64, i64 }, ptr %t82
|
|
store { ptr, i64, i64 } %t83, ptr %a84
|
|
store { ptr, i64, i64 } { ptr @.str.637, i64 5, i64 0 }, ptr %a85
|
|
%t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85)
|
|
%t87 = icmp ne i32 %t86, 0
|
|
br label %logic.rend1081
|
|
logic.rend1081:
|
|
br label %logic.end1076
|
|
logic.end1076:
|
|
%t88 = phi i1 [ false, %logic.from1074 ], [ %t87, %logic.rend1081 ]
|
|
br label %logic.from1082
|
|
logic.from1082:
|
|
br i1 %t88, label %logic.rhs1083, label %logic.end1084
|
|
logic.rhs1083:
|
|
%t89 = load ptr, ptr %a1
|
|
%t90 = icmp eq ptr %t89, null
|
|
br i1 %t90, label %panic1085, label %ok1086
|
|
panic1085:
|
|
call void @finch_panic(ptr @.str.638, i64 156, ptr @.str.639)
|
|
unreachable
|
|
ok1086:
|
|
%t91 = getelementptr inbounds %S.parser.Parser, ptr %t89, i32 0, i32 0
|
|
%t92 = load i64, ptr %a25
|
|
%t93 = add i64 %t92, 1
|
|
%t94 = load { ptr, i64, i64 }, ptr %t91
|
|
%t95 = extractvalue { ptr, i64, i64 } %t94, 1
|
|
%t96 = icmp uge i64 %t93, %t95
|
|
br i1 %t96, label %range1087, label %inrange1088
|
|
range1087:
|
|
call void @finch_panic_index(ptr @.str.640, i64 156, i64 %t93, i64 %t95)
|
|
unreachable
|
|
inrange1088:
|
|
%t97 = extractvalue { ptr, i64, i64 } %t94, 0
|
|
%t98 = getelementptr inbounds %S.lexer.Token, ptr %t97, i64 %t93
|
|
%t99 = getelementptr inbounds %S.lexer.Token, ptr %t98, i32 0, i32 4
|
|
%t100 = load i1, ptr %t99
|
|
%t101 = xor i1 %t100, true
|
|
br label %logic.rend1089
|
|
logic.rend1089:
|
|
br label %logic.end1084
|
|
logic.end1084:
|
|
%t102 = phi i1 [ false, %logic.from1082 ], [ %t101, %logic.rend1089 ]
|
|
ret i1 %t102
|
|
endif1071:
|
|
br label %endif1068
|
|
else1067:
|
|
%t103 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } %t103, ptr %a104
|
|
store { ptr, i64, i64 } { ptr @.str.641, i64 3, i64 0 }, ptr %a105
|
|
%t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105)
|
|
%t107 = icmp ne i32 %t106, 0
|
|
br label %logic.from1090
|
|
logic.from1090:
|
|
br i1 %t107, label %logic.end1092, label %logic.rhs1091
|
|
logic.rhs1091:
|
|
%t108 = load ptr, ptr %a1
|
|
%t109 = icmp eq ptr %t108, null
|
|
br i1 %t109, label %panic1093, label %ok1094
|
|
panic1093:
|
|
call void @finch_panic(ptr @.str.642, i64 158, ptr @.str.643)
|
|
unreachable
|
|
ok1094:
|
|
%t110 = getelementptr inbounds %S.parser.Parser, ptr %t108, i32 0, i32 0
|
|
%t111 = load i64, ptr %a25
|
|
%t112 = load { ptr, i64, i64 }, ptr %t110
|
|
%t113 = extractvalue { ptr, i64, i64 } %t112, 1
|
|
%t114 = icmp uge i64 %t111, %t113
|
|
br i1 %t114, label %range1095, label %inrange1096
|
|
range1095:
|
|
call void @finch_panic_index(ptr @.str.644, i64 158, i64 %t111, i64 %t113)
|
|
unreachable
|
|
inrange1096:
|
|
%t115 = extractvalue { ptr, i64, i64 } %t112, 0
|
|
%t116 = getelementptr inbounds %S.lexer.Token, ptr %t115, i64 %t111
|
|
%t117 = getelementptr inbounds %S.lexer.Token, ptr %t116, i32 0, i32 4
|
|
%t118 = load i1, ptr %t117
|
|
br label %logic.from1097
|
|
logic.from1097:
|
|
br i1 %t118, label %logic.rhs1098, label %logic.end1099
|
|
logic.rhs1098:
|
|
%t119 = load i64, ptr %a19
|
|
%t120 = icmp eq i64 %t119, 0
|
|
br label %logic.rend1100
|
|
logic.rend1100:
|
|
br label %logic.end1099
|
|
logic.end1099:
|
|
%t121 = phi i1 [ false, %logic.from1097 ], [ %t120, %logic.rend1100 ]
|
|
br label %logic.rend1101
|
|
logic.rend1101:
|
|
br label %logic.end1092
|
|
logic.end1092:
|
|
%t122 = phi i1 [ true, %logic.from1090 ], [ %t121, %logic.rend1101 ]
|
|
br i1 %t122, label %then1102, label %endif1104
|
|
then1102:
|
|
ret i1 false
|
|
endif1104:
|
|
br label %endif1068
|
|
endif1068:
|
|
br label %endif1065
|
|
endif1065:
|
|
%t123 = load i64, ptr %a25
|
|
%t124 = add i64 %t123, 1
|
|
store i64 %t124, ptr %a25
|
|
br label %while.cond1054
|
|
while.end1056:
|
|
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 %panic1105, label %ok1106
|
|
panic1105:
|
|
call void @finch_panic(ptr @.str.645, i64 168, ptr @.str.646)
|
|
unreachable
|
|
ok1106:
|
|
%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 %panic1107, label %ok1108
|
|
panic1107:
|
|
call void @finch_panic(ptr @.str.647, i64 170, ptr @.str.648)
|
|
unreachable
|
|
ok1108:
|
|
%t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1
|
|
%t13 = load i64, ptr %t12
|
|
%t14 = add i64 %t13, 1
|
|
store i64 %t14, ptr %t12
|
|
%t15 = load i1, ptr %a9
|
|
ret i1 %t15
|
|
}
|
|
|
|
define internal i1 @finch.parser.genericCallAhead(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca i64, align 16
|
|
%a37 = alloca i64, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t2, i64 1)
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.649, i64 1, i64 0 }, ptr %a5
|
|
%t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5)
|
|
%t7 = icmp eq i32 %t6, 0
|
|
br label %logic.from1109
|
|
logic.from1109:
|
|
br i1 %t7, label %logic.end1111, label %logic.rhs1110
|
|
logic.rhs1110:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = icmp eq ptr %t8, null
|
|
br i1 %t9, label %panic1112, label %ok1113
|
|
panic1112:
|
|
call void @finch_panic(ptr @.str.650, i64 176, ptr @.str.651)
|
|
unreachable
|
|
ok1113:
|
|
%t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 0
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = icmp eq ptr %t11, null
|
|
br i1 %t12, label %panic1114, label %ok1115
|
|
panic1114:
|
|
call void @finch_panic(ptr @.str.652, i64 176, ptr @.str.653)
|
|
unreachable
|
|
ok1115:
|
|
%t13 = getelementptr inbounds %S.parser.Parser, ptr %t11, i32 0, i32 1
|
|
%t14 = load i64, ptr %t13
|
|
%t15 = add i64 %t14, 1
|
|
%t16 = load { ptr, i64, i64 }, ptr %t10
|
|
%t17 = extractvalue { ptr, i64, i64 } %t16, 1
|
|
%t18 = icmp uge i64 %t15, %t17
|
|
br i1 %t18, label %range1116, label %inrange1117
|
|
range1116:
|
|
call void @finch_panic_index(ptr @.str.654, i64 176, i64 %t15, i64 %t17)
|
|
unreachable
|
|
inrange1117:
|
|
%t19 = extractvalue { ptr, i64, i64 } %t16, 0
|
|
%t20 = getelementptr inbounds %S.lexer.Token, ptr %t19, i64 %t15
|
|
%t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i32 0, i32 4
|
|
%t22 = load i1, ptr %t21
|
|
br label %logic.rend1118
|
|
logic.rend1118:
|
|
br label %logic.end1111
|
|
logic.end1111:
|
|
%t23 = phi i1 [ true, %logic.from1109 ], [ %t22, %logic.rend1118 ]
|
|
br label %logic.from1119
|
|
logic.from1119:
|
|
br i1 %t23, label %logic.end1121, label %logic.rhs1120
|
|
logic.rhs1120:
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t24, i64 2)
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.655, i64 1, i64 0 }, ptr %a27
|
|
%t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27)
|
|
%t29 = icmp ne i32 %t28, 0
|
|
br label %logic.rend1122
|
|
logic.rend1122:
|
|
br label %logic.end1121
|
|
logic.end1121:
|
|
%t30 = phi i1 [ true, %logic.from1119 ], [ %t29, %logic.rend1122 ]
|
|
br i1 %t30, label %then1123, label %endif1125
|
|
then1123:
|
|
ret i1 false
|
|
endif1125:
|
|
store i64 0, ptr %a31
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = icmp eq ptr %t32, null
|
|
br i1 %t33, label %panic1126, label %ok1127
|
|
panic1126:
|
|
call void @finch_panic(ptr @.str.656, i64 180, ptr @.str.657)
|
|
unreachable
|
|
ok1127:
|
|
%t34 = getelementptr inbounds %S.parser.Parser, ptr %t32, i32 0, i32 1
|
|
%t35 = load i64, ptr %t34
|
|
%t36 = add i64 %t35, 1
|
|
store i64 %t36, ptr %a37
|
|
br label %while.cond1128
|
|
while.cond1128:
|
|
%t38 = load i64, ptr %a37
|
|
%t39 = load ptr, ptr %a1
|
|
%t40 = icmp eq ptr %t39, null
|
|
br i1 %t40, label %panic1131, label %ok1132
|
|
panic1131:
|
|
call void @finch_panic(ptr @.str.658, i64 181, ptr @.str.659)
|
|
unreachable
|
|
ok1132:
|
|
%t41 = getelementptr inbounds %S.parser.Parser, ptr %t39, i32 0, i32 0
|
|
%t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1
|
|
%t43 = load i64, ptr %t42
|
|
%t44 = icmp slt i64 %t38, %t43
|
|
br i1 %t44, label %while.body1129, label %while.end1130
|
|
while.body1129:
|
|
%t45 = load ptr, ptr %a1
|
|
%t46 = icmp eq ptr %t45, null
|
|
br i1 %t46, label %panic1133, label %ok1134
|
|
panic1133:
|
|
call void @finch_panic(ptr @.str.660, i64 182, ptr @.str.661)
|
|
unreachable
|
|
ok1134:
|
|
%t47 = getelementptr inbounds %S.parser.Parser, ptr %t45, i32 0, i32 0
|
|
%t48 = load i64, ptr %a37
|
|
%t49 = load { ptr, i64, i64 }, ptr %t47
|
|
%t50 = extractvalue { ptr, i64, i64 } %t49, 1
|
|
%t51 = icmp uge i64 %t48, %t50
|
|
br i1 %t51, label %range1135, label %inrange1136
|
|
range1135:
|
|
call void @finch_panic_index(ptr @.str.662, i64 182, i64 %t48, i64 %t50)
|
|
unreachable
|
|
inrange1136:
|
|
%t52 = extractvalue { ptr, i64, i64 } %t49, 0
|
|
%t53 = getelementptr inbounds %S.lexer.Token, ptr %t52, i64 %t48
|
|
%t54 = getelementptr inbounds %S.lexer.Token, ptr %t53, i32 0, i32 0
|
|
%t55 = load { ptr, i64, i64 }, ptr %t54
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
call void @finch_str_copy(ptr %a57, ptr %a56)
|
|
%t58 = load { ptr, i64, i64 }, ptr %a57
|
|
store { ptr, i64, i64 } %t58, ptr %a59
|
|
%t60 = load { ptr, i64, i64 }, ptr %a59
|
|
store { ptr, i64, i64 } %t60, ptr %a61
|
|
store { ptr, i64, i64 } { ptr @.str.663, i64 1, i64 0 }, ptr %a62
|
|
%t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62)
|
|
%t64 = icmp ne i32 %t63, 0
|
|
br i1 %t64, label %then1137, label %else1138
|
|
then1137:
|
|
%t65 = load i64, ptr %a31
|
|
%t66 = add i64 %t65, 1
|
|
store i64 %t66, ptr %a31
|
|
br label %endif1139
|
|
else1138:
|
|
%t67 = load { ptr, i64, i64 }, ptr %a59
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.664, i64 1, i64 0 }, ptr %a69
|
|
%t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69)
|
|
%t71 = icmp ne i32 %t70, 0
|
|
br i1 %t71, label %then1140, label %else1141
|
|
then1140:
|
|
%t72 = load i64, ptr %a31
|
|
%t73 = sub i64 %t72, 1
|
|
store i64 %t73, ptr %a31
|
|
%t74 = load i64, ptr %a31
|
|
%t75 = icmp eq i64 %t74, 0
|
|
br i1 %t75, label %then1143, label %endif1145
|
|
then1143:
|
|
%t76 = load i64, ptr %a37
|
|
%t77 = add i64 %t76, 1
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = icmp eq ptr %t78, null
|
|
br i1 %t79, label %panic1146, label %ok1147
|
|
panic1146:
|
|
call void @finch_panic(ptr @.str.665, i64 188, ptr @.str.666)
|
|
unreachable
|
|
ok1147:
|
|
%t80 = getelementptr inbounds %S.parser.Parser, ptr %t78, i32 0, i32 0
|
|
%t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1
|
|
%t82 = load i64, ptr %t81
|
|
%t83 = icmp slt i64 %t77, %t82
|
|
br label %logic.from1148
|
|
logic.from1148:
|
|
br i1 %t83, label %logic.rhs1149, label %logic.end1150
|
|
logic.rhs1149:
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = icmp eq ptr %t84, null
|
|
br i1 %t85, label %panic1151, label %ok1152
|
|
panic1151:
|
|
call void @finch_panic(ptr @.str.667, i64 188, ptr @.str.668)
|
|
unreachable
|
|
ok1152:
|
|
%t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 0
|
|
%t87 = load i64, ptr %a37
|
|
%t88 = add i64 %t87, 1
|
|
%t89 = load { ptr, i64, i64 }, ptr %t86
|
|
%t90 = extractvalue { ptr, i64, i64 } %t89, 1
|
|
%t91 = icmp uge i64 %t88, %t90
|
|
br i1 %t91, label %range1153, label %inrange1154
|
|
range1153:
|
|
call void @finch_panic_index(ptr @.str.669, i64 188, i64 %t88, i64 %t90)
|
|
unreachable
|
|
inrange1154:
|
|
%t92 = extractvalue { ptr, i64, i64 } %t89, 0
|
|
%t93 = getelementptr inbounds %S.lexer.Token, ptr %t92, i64 %t88
|
|
%t94 = getelementptr inbounds %S.lexer.Token, ptr %t93, i32 0, i32 0
|
|
%t95 = load { ptr, i64, i64 }, ptr %t94
|
|
store { ptr, i64, i64 } %t95, ptr %a96
|
|
store { ptr, i64, i64 } { ptr @.str.670, i64 1, i64 0 }, ptr %a97
|
|
%t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97)
|
|
%t99 = icmp ne i32 %t98, 0
|
|
br label %logic.rend1155
|
|
logic.rend1155:
|
|
br label %logic.end1150
|
|
logic.end1150:
|
|
%t100 = phi i1 [ false, %logic.from1148 ], [ %t99, %logic.rend1155 ]
|
|
br label %logic.from1156
|
|
logic.from1156:
|
|
br i1 %t100, label %logic.rhs1157, label %logic.end1158
|
|
logic.rhs1157:
|
|
%t101 = load ptr, ptr %a1
|
|
%t102 = icmp eq ptr %t101, null
|
|
br i1 %t102, label %panic1159, label %ok1160
|
|
panic1159:
|
|
call void @finch_panic(ptr @.str.671, i64 188, ptr @.str.672)
|
|
unreachable
|
|
ok1160:
|
|
%t103 = getelementptr inbounds %S.parser.Parser, ptr %t101, i32 0, i32 0
|
|
%t104 = load i64, ptr %a37
|
|
%t105 = add i64 %t104, 1
|
|
%t106 = load { ptr, i64, i64 }, ptr %t103
|
|
%t107 = extractvalue { ptr, i64, i64 } %t106, 1
|
|
%t108 = icmp uge i64 %t105, %t107
|
|
br i1 %t108, label %range1161, label %inrange1162
|
|
range1161:
|
|
call void @finch_panic_index(ptr @.str.673, i64 188, i64 %t105, i64 %t107)
|
|
unreachable
|
|
inrange1162:
|
|
%t109 = extractvalue { ptr, i64, i64 } %t106, 0
|
|
%t110 = getelementptr inbounds %S.lexer.Token, ptr %t109, i64 %t105
|
|
%t111 = getelementptr inbounds %S.lexer.Token, ptr %t110, i32 0, i32 4
|
|
%t112 = load i1, ptr %t111
|
|
%t113 = xor i1 %t112, true
|
|
br label %logic.rend1163
|
|
logic.rend1163:
|
|
br label %logic.end1158
|
|
logic.end1158:
|
|
%t114 = phi i1 [ false, %logic.from1156 ], [ %t113, %logic.rend1163 ]
|
|
ret i1 %t114
|
|
endif1145:
|
|
br label %endif1142
|
|
else1141:
|
|
%t115 = load { ptr, i64, i64 }, ptr %a59
|
|
store { ptr, i64, i64 } %t115, ptr %a116
|
|
store { ptr, i64, i64 } { ptr @.str.674, i64 3, i64 0 }, ptr %a117
|
|
%t118 = call i32 @finch_str_eq(ptr %a116, ptr %a117)
|
|
%t119 = icmp ne i32 %t118, 0
|
|
br label %logic.from1164
|
|
logic.from1164:
|
|
br i1 %t119, label %logic.end1166, label %logic.rhs1165
|
|
logic.rhs1165:
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = icmp eq ptr %t120, null
|
|
br i1 %t121, label %panic1167, label %ok1168
|
|
panic1167:
|
|
call void @finch_panic(ptr @.str.675, i64 190, ptr @.str.676)
|
|
unreachable
|
|
ok1168:
|
|
%t122 = getelementptr inbounds %S.parser.Parser, ptr %t120, i32 0, i32 0
|
|
%t123 = load i64, ptr %a37
|
|
%t124 = load { ptr, i64, i64 }, ptr %t122
|
|
%t125 = extractvalue { ptr, i64, i64 } %t124, 1
|
|
%t126 = icmp uge i64 %t123, %t125
|
|
br i1 %t126, label %range1169, label %inrange1170
|
|
range1169:
|
|
call void @finch_panic_index(ptr @.str.677, i64 190, i64 %t123, i64 %t125)
|
|
unreachable
|
|
inrange1170:
|
|
%t127 = extractvalue { ptr, i64, i64 } %t124, 0
|
|
%t128 = getelementptr inbounds %S.lexer.Token, ptr %t127, i64 %t123
|
|
%t129 = getelementptr inbounds %S.lexer.Token, ptr %t128, i32 0, i32 4
|
|
%t130 = load i1, ptr %t129
|
|
br label %logic.rend1171
|
|
logic.rend1171:
|
|
br label %logic.end1166
|
|
logic.end1166:
|
|
%t131 = phi i1 [ true, %logic.from1164 ], [ %t130, %logic.rend1171 ]
|
|
br i1 %t131, label %then1172, label %endif1174
|
|
then1172:
|
|
ret i1 false
|
|
endif1174:
|
|
br label %endif1142
|
|
endif1142:
|
|
br label %endif1139
|
|
endif1139:
|
|
%t132 = load i64, ptr %a37
|
|
%t133 = add i64 %t132, 1
|
|
store i64 %t133, ptr %a37
|
|
br label %while.cond1128
|
|
while.end1130:
|
|
ret i1 false
|
|
}
|
|
|
|
define internal i1 @finch.parser.atDeclaration(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2)
|
|
br i1 %t3, label %then1175, label %endif1177
|
|
then1175:
|
|
ret i1 true
|
|
endif1177:
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.678, i64 1, i64 0 })
|
|
br i1 %t5, label %then1178, label %endif1180
|
|
then1178:
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t6, i64 1)
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.679, i64 1, i64 0 }, ptr %a9
|
|
%t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9)
|
|
%t11 = icmp ne i32 %t10, 0
|
|
ret i1 %t11
|
|
endif1180:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = call i1 @finch.parser.at(ptr %t12, { ptr, i64, i64 } { ptr @.str.680, i64 5, i64 0 })
|
|
%t14 = xor i1 %t13, true
|
|
br i1 %t14, label %then1181, label %endif1183
|
|
then1181:
|
|
ret i1 false
|
|
endif1183:
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t15, i64 1)
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
%t18 = load { ptr, i64, i64 }, ptr %a17
|
|
store { ptr, i64, i64 } %t18, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.681, i64 5, i64 0 }, ptr %a20
|
|
%t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20)
|
|
%t22 = icmp ne i32 %t21, 0
|
|
br i1 %t22, label %then1184, label %endif1186
|
|
then1184:
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = icmp eq ptr %t23, null
|
|
br i1 %t24, label %panic1187, label %ok1188
|
|
panic1187:
|
|
call void @finch_panic(ptr @.str.682, i64 210, ptr @.str.683)
|
|
unreachable
|
|
ok1188:
|
|
%t25 = getelementptr inbounds %S.parser.Parser, ptr %t23, i32 0, i32 0
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = icmp eq ptr %t26, null
|
|
br i1 %t27, label %panic1189, label %ok1190
|
|
panic1189:
|
|
call void @finch_panic(ptr @.str.684, i64 210, ptr @.str.685)
|
|
unreachable
|
|
ok1190:
|
|
%t28 = getelementptr inbounds %S.parser.Parser, ptr %t26, i32 0, i32 1
|
|
%t29 = load i64, ptr %t28
|
|
%t30 = add i64 %t29, 1
|
|
%t31 = load { ptr, i64, i64 }, ptr %t25
|
|
%t32 = extractvalue { ptr, i64, i64 } %t31, 1
|
|
%t33 = icmp uge i64 %t30, %t32
|
|
br i1 %t33, label %range1191, label %inrange1192
|
|
range1191:
|
|
call void @finch_panic_index(ptr @.str.686, i64 210, i64 %t30, i64 %t32)
|
|
unreachable
|
|
inrange1192:
|
|
%t34 = extractvalue { ptr, i64, i64 } %t31, 0
|
|
%t35 = getelementptr inbounds %S.lexer.Token, ptr %t34, i64 %t30
|
|
%t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i32 0, i32 4
|
|
%t37 = load i1, ptr %t36
|
|
%t38 = xor i1 %t37, true
|
|
ret i1 %t38
|
|
endif1186:
|
|
%t39 = load ptr, ptr %a1
|
|
%t40 = call %S.lexer.Token @finch.parser.cur(ptr %t39)
|
|
%t41 = extractvalue %S.lexer.Token %t40, 1
|
|
store { ptr, i64, i64 } %t41, ptr %a42
|
|
call void @finch_str_copy(ptr %a43, ptr %a42)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a43
|
|
store { ptr, i64, i64 } %t44, ptr %a45
|
|
store { ptr, i64, i64 } { ptr @.str.687, i64 3, i64 0 }, ptr %a46
|
|
%t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46)
|
|
%t48 = icmp ne i32 %t47, 0
|
|
br label %logic.from1193
|
|
logic.from1193:
|
|
br i1 %t48, label %logic.end1195, label %logic.rhs1194
|
|
logic.rhs1194:
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = call %S.lexer.Token @finch.parser.cur(ptr %t49)
|
|
%t51 = extractvalue %S.lexer.Token %t50, 1
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
call void @finch_str_copy(ptr %a53, ptr %a52)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
store { ptr, i64, i64 } { ptr @.str.688, i64 3, i64 0 }, ptr %a56
|
|
%t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56)
|
|
%t58 = icmp ne i32 %t57, 0
|
|
br label %logic.rend1196
|
|
logic.rend1196:
|
|
br label %logic.end1195
|
|
logic.end1195:
|
|
%t59 = phi i1 [ true, %logic.from1193 ], [ %t58, %logic.rend1196 ]
|
|
br label %logic.from1197
|
|
logic.from1197:
|
|
br i1 %t59, label %logic.rhs1198, label %logic.end1199
|
|
logic.rhs1198:
|
|
%t60 = load { ptr, i64, i64 }, ptr %a17
|
|
store { ptr, i64, i64 } %t60, ptr %a61
|
|
store { ptr, i64, i64 } { ptr @.str.689, i64 1, i64 0 }, ptr %a62
|
|
%t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62)
|
|
%t64 = icmp ne i32 %t63, 0
|
|
br label %logic.rend1200
|
|
logic.rend1200:
|
|
br label %logic.end1199
|
|
logic.end1199:
|
|
%t65 = phi i1 [ false, %logic.from1197 ], [ %t64, %logic.rend1200 ]
|
|
br i1 %t65, label %then1201, label %endif1203
|
|
then1201:
|
|
ret i1 true
|
|
endif1203:
|
|
%t66 = load { ptr, i64, i64 }, ptr %a17
|
|
store { ptr, i64, i64 } %t66, ptr %a67
|
|
store { ptr, i64, i64 } { ptr @.str.690, i64 1, i64 0 }, ptr %a68
|
|
%t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68)
|
|
%t70 = icmp ne i32 %t69, 0
|
|
br label %logic.from1204
|
|
logic.from1204:
|
|
br i1 %t70, label %logic.rhs1205, label %logic.end1206
|
|
logic.rhs1205:
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t71, i64 2)
|
|
store { ptr, i64, i64 } %t72, ptr %a73
|
|
store { ptr, i64, i64 } { ptr @.str.691, i64 5, i64 0 }, ptr %a74
|
|
%t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74)
|
|
%t76 = icmp ne i32 %t75, 0
|
|
br label %logic.rend1207
|
|
logic.rend1207:
|
|
br label %logic.end1206
|
|
logic.end1206:
|
|
%t77 = phi i1 [ false, %logic.from1204 ], [ %t76, %logic.rend1207 ]
|
|
br label %logic.from1208
|
|
logic.from1208:
|
|
br i1 %t77, label %logic.rhs1209, label %logic.end1210
|
|
logic.rhs1209:
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t78, i64 3)
|
|
store { ptr, i64, i64 } %t79, ptr %a80
|
|
store { ptr, i64, i64 } { ptr @.str.692, i64 5, i64 0 }, ptr %a81
|
|
%t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81)
|
|
%t83 = icmp ne i32 %t82, 0
|
|
br label %logic.rend1211
|
|
logic.rend1211:
|
|
br label %logic.end1210
|
|
logic.end1210:
|
|
%t84 = phi i1 [ false, %logic.from1208 ], [ %t83, %logic.rend1211 ]
|
|
br label %logic.from1212
|
|
logic.from1212:
|
|
br i1 %t84, label %logic.rhs1213, label %logic.end1214
|
|
logic.rhs1213:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = icmp eq ptr %t85, null
|
|
br i1 %t86, label %panic1215, label %ok1216
|
|
panic1215:
|
|
call void @finch_panic(ptr @.str.693, i64 215, ptr @.str.694)
|
|
unreachable
|
|
ok1216:
|
|
%t87 = getelementptr inbounds %S.parser.Parser, ptr %t85, i32 0, i32 0
|
|
%t88 = load ptr, ptr %a1
|
|
%t89 = icmp eq ptr %t88, null
|
|
br i1 %t89, label %panic1217, label %ok1218
|
|
panic1217:
|
|
call void @finch_panic(ptr @.str.695, i64 215, ptr @.str.696)
|
|
unreachable
|
|
ok1218:
|
|
%t90 = getelementptr inbounds %S.parser.Parser, ptr %t88, i32 0, i32 1
|
|
%t91 = load i64, ptr %t90
|
|
%t92 = add i64 %t91, 3
|
|
%t93 = load { ptr, i64, i64 }, ptr %t87
|
|
%t94 = extractvalue { ptr, i64, i64 } %t93, 1
|
|
%t95 = icmp uge i64 %t92, %t94
|
|
br i1 %t95, label %range1219, label %inrange1220
|
|
range1219:
|
|
call void @finch_panic_index(ptr @.str.697, i64 215, i64 %t92, i64 %t94)
|
|
unreachable
|
|
inrange1220:
|
|
%t96 = extractvalue { ptr, i64, i64 } %t93, 0
|
|
%t97 = getelementptr inbounds %S.lexer.Token, ptr %t96, i64 %t92
|
|
%t98 = getelementptr inbounds %S.lexer.Token, ptr %t97, i32 0, i32 4
|
|
%t99 = load i1, ptr %t98
|
|
%t100 = xor i1 %t99, true
|
|
br label %logic.rend1221
|
|
logic.rend1221:
|
|
br label %logic.end1214
|
|
logic.end1214:
|
|
%t101 = phi i1 [ false, %logic.from1212 ], [ %t100, %logic.rend1221 ]
|
|
ret i1 %t101
|
|
}
|
|
|
|
define internal void @finch.parser.endOfStatement(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.698, i64 1, i64 0 })
|
|
br label %logic.from1222
|
|
logic.from1222:
|
|
br i1 %t3, label %logic.end1224, label %logic.rhs1223
|
|
logic.rhs1223:
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.699, i64 3, i64 0 })
|
|
br label %logic.rend1225
|
|
logic.rend1225:
|
|
br label %logic.end1224
|
|
logic.end1224:
|
|
%t6 = phi i1 [ true, %logic.from1222 ], [ %t5, %logic.rend1225 ]
|
|
br label %logic.from1226
|
|
logic.from1226:
|
|
br i1 %t6, label %logic.end1228, label %logic.rhs1227
|
|
logic.rhs1227:
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = call %S.lexer.Token @finch.parser.cur(ptr %t7)
|
|
%t9 = extractvalue %S.lexer.Token %t8, 4
|
|
br label %logic.rend1229
|
|
logic.rend1229:
|
|
br label %logic.end1228
|
|
logic.end1228:
|
|
%t10 = phi i1 [ true, %logic.from1226 ], [ %t9, %logic.rend1229 ]
|
|
br i1 %t10, label %then1230, label %endif1232
|
|
then1230:
|
|
ret void
|
|
endif1232:
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = call %S.lexer.Token @finch.parser.cur(ptr %t12)
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = call %S.lexer.Token @finch.parser.cur(ptr %t14)
|
|
%t16 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t15)
|
|
store { ptr, i64, i64 } { ptr @.str.700, i64 11, i64 0 }, ptr %a18
|
|
store { ptr, i64, i64 } %t16, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
store { ptr, i64, i64 } %t20, ptr %a22
|
|
store { ptr, i64, i64 } { ptr @.str.701, i64 37, i64 0 }, ptr %a23
|
|
call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a21
|
|
call void @finch.parser.fail(ptr %t11, %S.lexer.Token %t13, { ptr, i64, i64 } %t24)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.ast.Program @finch.parser.parseProgram(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Program, align 16
|
|
%a10 = alloca %S.lexer.Token, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca %S.lexer.Token, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca i1, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca %S.ast.Program, align 16
|
|
%a174 = alloca %S.ast.Program, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Program zeroinitializer, ptr %a2
|
|
br label %while.cond1233
|
|
while.cond1233:
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.702, i64 3, i64 0 })
|
|
%t5 = xor i1 %t4, true
|
|
br i1 %t5, label %while.body1234, label %while.end1235
|
|
while.body1234:
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.703, i64 6, i64 0 })
|
|
br i1 %t7, label %then1236, label %else1237
|
|
then1236:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = call %S.lexer.Token @finch.parser.next(ptr %t8)
|
|
store %S.lexer.Token %t9, ptr %a10
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.704, i64 6, i64 0 })
|
|
br i1 %t12, label %then1239, label %else1240
|
|
then1239:
|
|
%t13 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 4
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i32 0, i32 1
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = icmp eq ptr %t15, null
|
|
br i1 %t16, label %panic1242, label %ok1243
|
|
panic1242:
|
|
call void @finch_panic(ptr @.str.705, i64 233, ptr @.str.706)
|
|
unreachable
|
|
ok1243:
|
|
%t17 = getelementptr inbounds %S.parser.Parser, ptr %t15, i32 0, i32 4
|
|
%t18 = load { ptr, i64, i64 }, ptr %t17
|
|
store { ptr, i64, i64 } %t18, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }, ptr %a21
|
|
call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a19
|
|
%t23 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 2
|
|
%t24 = load i64, ptr %t23
|
|
call void @finch_str_from_int(ptr %a25, i64 %t24)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t22, ptr %a28
|
|
store { ptr, i64, i64 } %t26, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t30, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.708, i64 1, i64 0 }, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
%t35 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3
|
|
%t36 = load i64, ptr %t35
|
|
call void @finch_str_from_int(ptr %a37, i64 %t36)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a37
|
|
store { ptr, i64, i64 } %t34, ptr %a40
|
|
store { ptr, i64, i64 } %t38, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
%t43 = load i64, ptr %t14
|
|
%t44 = add i64 %t43, 1
|
|
call void @finch_arr_reserve(ptr %t13, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t45 = load ptr, ptr %t13
|
|
%t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43
|
|
store { ptr, i64, i64 } %t42, ptr %t46
|
|
store i64 %t44, ptr %t14
|
|
%t47 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3
|
|
%t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i32 0, i32 1
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = call %S.lexer.Token @finch.parser.next(ptr %t49)
|
|
%t51 = extractvalue %S.lexer.Token %t50, 1
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
call void @finch_str_copy(ptr %a53, ptr %a52)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a53
|
|
%t55 = load i64, ptr %t48
|
|
%t56 = add i64 %t55, 1
|
|
call void @finch_arr_reserve(ptr %t47, i64 %t56, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t57 = load ptr, ptr %t47
|
|
%t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i64 %t55
|
|
store { ptr, i64, i64 } %t54, ptr %t58
|
|
store i64 %t56, ptr %t48
|
|
br label %endif1241
|
|
else1240:
|
|
%t59 = load ptr, ptr %a1
|
|
%t60 = call i1 @finch.parser.at(ptr %t59, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 })
|
|
%t61 = xor i1 %t60, true
|
|
br i1 %t61, label %then1244, label %endif1246
|
|
then1244:
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = load %S.lexer.Token, ptr %a10
|
|
call void @finch.parser.fail(ptr %t62, %S.lexer.Token %t63, { ptr, i64, i64 } { ptr @.str.710, i64 51, i64 0 })
|
|
br label %endif1246
|
|
endif1246:
|
|
%t64 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2
|
|
%t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = call %S.lexer.Token @finch.parser.next(ptr %t66)
|
|
%t68 = extractvalue %S.lexer.Token %t67, 1
|
|
store { ptr, i64, i64 } %t68, ptr %a69
|
|
call void @finch_str_copy(ptr %a70, ptr %a69)
|
|
%t71 = load { ptr, i64, i64 }, ptr %a70
|
|
%t72 = load i64, ptr %t65
|
|
%t73 = add i64 %t72, 1
|
|
call void @finch_arr_reserve(ptr %t64, i64 %t73, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t74 = load ptr, ptr %t64
|
|
%t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72
|
|
store { ptr, i64, i64 } %t71, ptr %t75
|
|
store i64 %t73, ptr %t65
|
|
br label %endif1241
|
|
endif1241:
|
|
br label %endif1238
|
|
else1237:
|
|
%t76 = load ptr, ptr %a1
|
|
%t77 = call i1 @finch.parser.at(ptr %t76, { ptr, i64, i64 } { ptr @.str.711, i64 4, i64 0 })
|
|
br i1 %t77, label %then1247, label %else1248
|
|
then1247:
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = call %S.lexer.Token @finch.parser.next(ptr %t78)
|
|
store %S.lexer.Token %t79, ptr %a80
|
|
%t81 = load ptr, ptr %a1
|
|
%t82 = call %S.lexer.Token @finch.parser.expect(ptr %t81, { ptr, i64, i64 } { ptr @.str.712, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.713, i64 42, i64 0 })
|
|
%t83 = extractvalue %S.lexer.Token %t82, 1
|
|
store { ptr, i64, i64 } %t83, ptr %a84
|
|
call void @finch_str_copy(ptr %a85, ptr %a84)
|
|
%t86 = load { ptr, i64, i64 }, ptr %a85
|
|
store { ptr, i64, i64 } %t86, ptr %a87
|
|
%t88 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t88, ptr %a89
|
|
store { ptr, i64, i64 } { ptr @.str.715, i64 2, i64 0 }, ptr %a91
|
|
%t92 = call i32 @finch_str_ends(ptr %a89, ptr %a91)
|
|
%t93 = icmp ne i32 %t92, 0
|
|
br label %logic.from1250
|
|
logic.from1250:
|
|
br i1 %t93, label %logic.end1252, label %logic.rhs1251
|
|
logic.rhs1251:
|
|
%t94 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t94, ptr %a95
|
|
store { ptr, i64, i64 } { ptr @.str.717, i64 2, i64 0 }, ptr %a97
|
|
%t98 = call i32 @finch_str_ends(ptr %a95, ptr %a97)
|
|
%t99 = icmp ne i32 %t98, 0
|
|
br label %logic.rend1253
|
|
logic.rend1253:
|
|
br label %logic.end1252
|
|
logic.end1252:
|
|
%t100 = phi i1 [ true, %logic.from1250 ], [ %t99, %logic.rend1253 ]
|
|
br label %logic.from1254
|
|
logic.from1254:
|
|
br i1 %t100, label %logic.end1256, label %logic.rhs1255
|
|
logic.rhs1255:
|
|
%t101 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t101, ptr %a102
|
|
store { ptr, i64, i64 } { ptr @.str.719, i64 2, i64 0 }, ptr %a104
|
|
%t105 = call i32 @finch_str_ends(ptr %a102, ptr %a104)
|
|
%t106 = icmp ne i32 %t105, 0
|
|
br label %logic.rend1257
|
|
logic.rend1257:
|
|
br label %logic.end1256
|
|
logic.end1256:
|
|
%t107 = phi i1 [ true, %logic.from1254 ], [ %t106, %logic.rend1257 ]
|
|
store i1 %t107, ptr %a108
|
|
%t109 = load i1, ptr %a108
|
|
%t110 = xor i1 %t109, true
|
|
br label %logic.from1258
|
|
logic.from1258:
|
|
br i1 %t110, label %logic.rhs1259, label %logic.end1260
|
|
logic.rhs1259:
|
|
%t111 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t111, ptr %a112
|
|
store { ptr, i64, i64 } { ptr @.str.721, i64 3, i64 0 }, ptr %a114
|
|
%t115 = call i32 @finch_str_starts(ptr %a112, ptr %a114)
|
|
%t116 = icmp ne i32 %t115, 0
|
|
br label %logic.from1261
|
|
logic.from1261:
|
|
br i1 %t116, label %logic.end1263, label %logic.rhs1262
|
|
logic.rhs1262:
|
|
%t117 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t117, ptr %a118
|
|
store { ptr, i64, i64 } { ptr @.str.723, i64 3, i64 0 }, ptr %a120
|
|
%t121 = call i64 @finch_str_find(ptr %a118, ptr %a120)
|
|
%t122 = icmp sge i64 %t121, 0
|
|
br label %logic.rend1264
|
|
logic.rend1264:
|
|
br label %logic.end1263
|
|
logic.end1263:
|
|
%t123 = phi i1 [ true, %logic.from1261 ], [ %t122, %logic.rend1264 ]
|
|
br label %logic.from1265
|
|
logic.from1265:
|
|
br i1 %t123, label %logic.end1267, label %logic.rhs1266
|
|
logic.rhs1266:
|
|
%t124 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t124, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.725, i64 1, i64 0 }, ptr %a127
|
|
%t128 = call i64 @finch_str_find(ptr %a125, ptr %a127)
|
|
%t129 = icmp sge i64 %t128, 0
|
|
br label %logic.rend1268
|
|
logic.rend1268:
|
|
br label %logic.end1267
|
|
logic.end1267:
|
|
%t130 = phi i1 [ true, %logic.from1265 ], [ %t129, %logic.rend1268 ]
|
|
br label %logic.rend1269
|
|
logic.rend1269:
|
|
br label %logic.end1260
|
|
logic.end1260:
|
|
%t131 = phi i1 [ false, %logic.from1258 ], [ %t130, %logic.rend1269 ]
|
|
br i1 %t131, label %then1270, label %endif1272
|
|
then1270:
|
|
%t132 = load ptr, ptr %a1
|
|
%t133 = load %S.lexer.Token, ptr %a80
|
|
call void @finch.parser.fail(ptr %t132, %S.lexer.Token %t133, { ptr, i64, i64 } { ptr @.str.726, i64 65, i64 0 })
|
|
br label %endif1272
|
|
endif1272:
|
|
%t134 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5
|
|
%t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1
|
|
%t136 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t136, ptr %a137
|
|
call void @finch_str_copy(ptr %a138, ptr %a137)
|
|
%t139 = load { ptr, i64, i64 }, ptr %a138
|
|
%t140 = load i64, ptr %t135
|
|
%t141 = add i64 %t140, 1
|
|
call void @finch_arr_reserve(ptr %t134, i64 %t141, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t142 = load ptr, ptr %t134
|
|
%t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i64 %t140
|
|
store { ptr, i64, i64 } %t139, ptr %t143
|
|
store i64 %t141, ptr %t135
|
|
br label %endif1249
|
|
else1248:
|
|
%t144 = load ptr, ptr %a1
|
|
%t145 = call i1 @finch.parser.at(ptr %t144, { ptr, i64, i64 } { ptr @.str.727, i64 6, i64 0 })
|
|
br i1 %t145, label %then1273, label %else1274
|
|
then1273:
|
|
%t146 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6
|
|
%t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1
|
|
%t148 = load ptr, ptr %a1
|
|
%t149 = call %S.ast.Node @finch.parser.parseStruct(ptr %t148)
|
|
%t150 = load i64, ptr %t147
|
|
%t151 = add i64 %t150, 1
|
|
call void @finch_arr_reserve(ptr %t146, i64 %t151, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t152 = load ptr, ptr %t146
|
|
%t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 %t150
|
|
store %S.ast.Node %t149, ptr %t153
|
|
store i64 %t151, ptr %t147
|
|
br label %endif1275
|
|
else1274:
|
|
%t154 = load ptr, ptr %a1
|
|
%t155 = call i1 @finch.parser.at(ptr %t154, { ptr, i64, i64 } { ptr @.str.728, i64 4, i64 0 })
|
|
br i1 %t155, label %then1276, label %else1277
|
|
then1276:
|
|
%t156 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7
|
|
%t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1
|
|
%t158 = load ptr, ptr %a1
|
|
%t159 = call %S.ast.Node @finch.parser.parseEnum(ptr %t158)
|
|
%t160 = load i64, ptr %t157
|
|
%t161 = add i64 %t160, 1
|
|
call void @finch_arr_reserve(ptr %t156, i64 %t161, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t162 = load ptr, ptr %t156
|
|
%t163 = getelementptr inbounds %S.ast.Node, ptr %t162, i64 %t160
|
|
store %S.ast.Node %t159, ptr %t163
|
|
store i64 %t161, ptr %t157
|
|
br label %endif1278
|
|
else1277:
|
|
%t164 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8
|
|
%t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1
|
|
%t166 = load ptr, ptr %a1
|
|
%t167 = call %S.ast.Node @finch.parser.parseFn(ptr %t166)
|
|
%t168 = load i64, ptr %t165
|
|
%t169 = add i64 %t168, 1
|
|
call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t170 = load ptr, ptr %t164
|
|
%t171 = getelementptr inbounds %S.ast.Node, ptr %t170, i64 %t168
|
|
store %S.ast.Node %t167, ptr %t171
|
|
store i64 %t169, ptr %t165
|
|
br label %endif1278
|
|
endif1278:
|
|
br label %endif1275
|
|
endif1275:
|
|
br label %endif1249
|
|
endif1249:
|
|
br label %endif1238
|
|
endif1238:
|
|
br label %while.cond1233
|
|
while.end1235:
|
|
%t172 = load %S.ast.Program, ptr %a2
|
|
store %S.ast.Program %t172, ptr %a173
|
|
call void @finch.copy.S_ast_Program(ptr %a174, ptr %a173)
|
|
%t175 = load %S.ast.Program, ptr %a174
|
|
ret %S.ast.Program %t175
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseEnum(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca %S.ast.Node, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca %S.ast.Node, align 16
|
|
%a55 = alloca %S.ast.Node, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca %S.ast.Node, align 16
|
|
%a86 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.729, i64 4, i64 0 })
|
|
store %S.ast.Node %t3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.730, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.731, i64 6, i64 0 })
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.732, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.733, i64 12, i64 0 })
|
|
%t9 = extractvalue %S.lexer.Token %t8, 1
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
call void @finch_str_copy(ptr %a11, ptr %a10)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a11
|
|
%t13 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t12, ptr %t13
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = call %S.lexer.Token @finch.parser.expect(ptr %t14, { ptr, i64, i64 } { ptr @.str.734, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.735, i64 3, i64 0 })
|
|
br label %while.cond1279
|
|
while.cond1279:
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.736, i64 1, i64 0 })
|
|
%t18 = xor i1 %t17, true
|
|
br i1 %t18, label %while.body1280, label %while.end1281
|
|
while.body1280:
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.737, i64 3, i64 0 })
|
|
br i1 %t20, label %then1282, label %endif1284
|
|
then1282:
|
|
%t21 = load ptr, ptr %a1
|
|
%t22 = load ptr, ptr %a1
|
|
%t23 = call %S.lexer.Token @finch.parser.cur(ptr %t22)
|
|
call void @finch.parser.fail(ptr %t21, %S.lexer.Token %t23, { ptr, i64, i64 } { ptr @.str.738, i64 37, i64 0 })
|
|
br label %endif1284
|
|
endif1284:
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = call %S.ast.Node @finch.parser.node(ptr %t24, { ptr, i64, i64 } { ptr @.str.739, i64 7, i64 0 })
|
|
store %S.ast.Node %t25, ptr %a26
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.740, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.741, i64 24, i64 0 })
|
|
%t29 = extractvalue %S.lexer.Token %t28, 1
|
|
store { ptr, i64, i64 } %t29, ptr %a30
|
|
call void @finch_str_copy(ptr %a31, ptr %a30)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a31
|
|
%t33 = getelementptr inbounds %S.ast.Node, ptr %a26, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t32, ptr %t33
|
|
%t34 = load ptr, ptr %a1
|
|
%t35 = call i1 @finch.parser.accept(ptr %t34, { ptr, i64, i64 } { ptr @.str.742, i64 1, i64 0 })
|
|
br i1 %t35, label %then1285, label %endif1287
|
|
then1285:
|
|
store { ptr, i64, i64 } { ptr @.str.743, i64 0, i64 0 }, ptr %a36
|
|
%t37 = load ptr, ptr %a1
|
|
%t38 = call i1 @finch.parser.accept(ptr %t37, { ptr, i64, i64 } { ptr @.str.744, i64 1, i64 0 })
|
|
br i1 %t38, label %then1288, label %endif1290
|
|
then1288:
|
|
store { ptr, i64, i64 } { ptr @.str.745, i64 1, i64 0 }, ptr %a36
|
|
br label %endif1290
|
|
endif1290:
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
%t40 = load ptr, ptr %a1
|
|
%t41 = call %S.lexer.Token @finch.parser.expect(ptr %t40, { ptr, i64, i64 } { ptr @.str.746, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.747, i64 30, i64 0 })
|
|
%t42 = extractvalue %S.lexer.Token %t41, 1
|
|
store { ptr, i64, i64 } %t42, ptr %a43
|
|
call void @finch_str_copy(ptr %a44, ptr %a43)
|
|
%t45 = load { ptr, i64, i64 }, ptr %a44
|
|
store { ptr, i64, i64 } %t39, ptr %a47
|
|
store { ptr, i64, i64 } %t45, ptr %a48
|
|
call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a46
|
|
%t50 = getelementptr inbounds %S.ast.Node, ptr %a26, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t49, ptr %t50
|
|
br label %endif1287
|
|
endif1287:
|
|
%t51 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i32 0, i32 1
|
|
%t53 = load %S.ast.Node, ptr %a26
|
|
store %S.ast.Node %t53, ptr %a54
|
|
call void @finch.copy.S_ast_Node(ptr %a55, ptr %a54)
|
|
%t56 = load %S.ast.Node, ptr %a55
|
|
%t57 = load i64, ptr %t52
|
|
%t58 = add i64 %t57, 1
|
|
call void @finch_arr_reserve(ptr %t51, i64 %t58, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t59 = load ptr, ptr %t51
|
|
%t60 = getelementptr inbounds %S.ast.Node, ptr %t59, i64 %t57
|
|
store %S.ast.Node %t56, ptr %t60
|
|
store i64 %t58, ptr %t52
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.748, i64 1, i64 0 })
|
|
%t63 = xor i1 %t62, true
|
|
br i1 %t63, label %then1291, label %endif1293
|
|
then1291:
|
|
%t64 = load ptr, ptr %a1
|
|
call void @finch.parser.endOfStatement(ptr %t64)
|
|
br label %endif1293
|
|
endif1293:
|
|
br label %while.cond1279
|
|
while.end1281:
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = call %S.lexer.Token @finch.parser.next(ptr %t65)
|
|
%t67 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1
|
|
%t69 = load i64, ptr %t68
|
|
%t70 = icmp eq i64 %t69, 0
|
|
br i1 %t70, label %then1294, label %endif1296
|
|
then1294:
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = call %S.lexer.Token @finch.parser.cur(ptr %t72)
|
|
%t74 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1
|
|
%t75 = load { ptr, i64, i64 }, ptr %t74
|
|
store { ptr, i64, i64 } { ptr @.str.749, i64 9, i64 0 }, ptr %a77
|
|
store { ptr, i64, i64 } %t75, ptr %a78
|
|
call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78)
|
|
%t79 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } %t79, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.750, i64 16, i64 0 }, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
call void @finch.parser.fail(ptr %t71, %S.lexer.Token %t73, { ptr, i64, i64 } %t83)
|
|
br label %endif1296
|
|
endif1296:
|
|
%t84 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t84, ptr %a85
|
|
call void @finch.copy.S_ast_Node(ptr %a86, ptr %a85)
|
|
%t87 = load %S.ast.Node, ptr %a86
|
|
ret %S.ast.Node %t87
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseMatch(ptr %p0, i1 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i1, align 16
|
|
%a5 = alloca %S.ast.Node, align 16
|
|
%a24 = alloca i64, align 16
|
|
%a38 = alloca %S.ast.Node, align 16
|
|
%a41 = alloca %S.ast.Node, align 16
|
|
%a59 = alloca %S.ast.Node, align 16
|
|
%a60 = alloca %S.ast.Node, align 16
|
|
%a101 = alloca %S.ast.Node, align 16
|
|
%a102 = alloca %S.ast.Node, align 16
|
|
%a126 = alloca %S.ast.Node, align 16
|
|
%a127 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i1 %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.751, i64 5, i64 0 })
|
|
store %S.ast.Node %t4, ptr %a5
|
|
%t6 = load i1, ptr %a2
|
|
%t7 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 6
|
|
store i1 %t6, ptr %t7
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.752, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.753, i64 7, i64 0 })
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = call %S.ast.Node @finch.parser.parseExpr(ptr %t12)
|
|
%t14 = load i64, ptr %t11
|
|
%t15 = add i64 %t14, 1
|
|
call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t16 = load ptr, ptr %t10
|
|
%t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14
|
|
store %S.ast.Node %t13, ptr %t17
|
|
store i64 %t15, ptr %t11
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.755, i64 3, i64 0 })
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = icmp eq ptr %t20, null
|
|
br i1 %t21, label %panic1297, label %ok1298
|
|
panic1297:
|
|
call void @finch_panic(ptr @.str.756, i64 300, ptr @.str.757)
|
|
unreachable
|
|
ok1298:
|
|
%t22 = getelementptr inbounds %S.parser.Parser, ptr %t20, i32 0, i32 2
|
|
%t23 = load i64, ptr %t22
|
|
store i64 %t23, ptr %a24
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = icmp eq ptr %t25, null
|
|
br i1 %t26, label %panic1299, label %ok1300
|
|
panic1299:
|
|
call void @finch_panic(ptr @.str.758, i64 301, ptr @.str.759)
|
|
unreachable
|
|
ok1300:
|
|
%t27 = getelementptr inbounds %S.parser.Parser, ptr %t25, i32 0, i32 2
|
|
store i64 0, ptr %t27
|
|
br label %while.cond1301
|
|
while.cond1301:
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.760, i64 1, i64 0 })
|
|
%t30 = xor i1 %t29, true
|
|
br i1 %t30, label %while.body1302, label %while.end1303
|
|
while.body1302:
|
|
%t31 = load ptr, ptr %a1
|
|
%t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.761, i64 3, i64 0 })
|
|
br i1 %t32, label %then1304, label %endif1306
|
|
then1304:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = load ptr, ptr %a1
|
|
%t35 = call %S.lexer.Token @finch.parser.cur(ptr %t34)
|
|
call void @finch.parser.fail(ptr %t33, %S.lexer.Token %t35, { ptr, i64, i64 } { ptr @.str.762, i64 37, i64 0 })
|
|
br label %endif1306
|
|
endif1306:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = call %S.ast.Node @finch.parser.node(ptr %t36, { ptr, i64, i64 } { ptr @.str.763, i64 3, i64 0 })
|
|
store %S.ast.Node %t37, ptr %a38
|
|
%t39 = load ptr, ptr %a1
|
|
%t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.764, i64 8, i64 0 })
|
|
store %S.ast.Node %t40, ptr %a41
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = call i1 @finch.parser.accept(ptr %t42, { ptr, i64, i64 } { ptr @.str.765, i64 4, i64 0 })
|
|
br i1 %t43, label %then1307, label %else1308
|
|
then1307:
|
|
%t44 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 6
|
|
store i1 true, ptr %t44
|
|
br label %endif1309
|
|
else1308:
|
|
br label %while.cond1310
|
|
while.cond1310:
|
|
br label %while.body1311
|
|
while.body1311:
|
|
%t45 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9
|
|
%t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1
|
|
%t47 = load ptr, ptr %a1
|
|
%t48 = call %S.ast.Node @finch.parser.parseExpr(ptr %t47)
|
|
%t49 = load i64, ptr %t46
|
|
%t50 = add i64 %t49, 1
|
|
call void @finch_arr_reserve(ptr %t45, i64 %t50, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t51 = load ptr, ptr %t45
|
|
%t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t49
|
|
store %S.ast.Node %t48, ptr %t52
|
|
store i64 %t50, ptr %t46
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = call i1 @finch.parser.accept(ptr %t53, { ptr, i64, i64 } { ptr @.str.766, i64 1, i64 0 })
|
|
%t55 = xor i1 %t54, true
|
|
br i1 %t55, label %then1313, label %endif1315
|
|
then1313:
|
|
br label %while.end1312
|
|
endif1315:
|
|
br label %while.cond1310
|
|
while.end1312:
|
|
br label %endif1309
|
|
endif1309:
|
|
%t56 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 9
|
|
%t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i32 0, i32 1
|
|
%t58 = load %S.ast.Node, ptr %a41
|
|
store %S.ast.Node %t58, ptr %a59
|
|
call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59)
|
|
%t61 = load %S.ast.Node, ptr %a60
|
|
%t62 = load i64, ptr %t57
|
|
%t63 = add i64 %t62, 1
|
|
call void @finch_arr_reserve(ptr %t56, i64 %t63, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t64 = load ptr, ptr %t56
|
|
%t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 %t62
|
|
store %S.ast.Node %t61, ptr %t65
|
|
store i64 %t63, ptr %t57
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.767, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.768, i64 57, i64 0 })
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = call i1 @finch.parser.at(ptr %t68, { ptr, i64, i64 } { ptr @.str.769, i64 1, i64 0 })
|
|
br label %logic.from1316
|
|
logic.from1316:
|
|
br i1 %t69, label %logic.rhs1317, label %logic.end1318
|
|
logic.rhs1317:
|
|
%t70 = load i1, ptr %a2
|
|
%t71 = xor i1 %t70, true
|
|
br label %logic.rend1319
|
|
logic.rend1319:
|
|
br label %logic.end1318
|
|
logic.end1318:
|
|
%t72 = phi i1 [ false, %logic.from1316 ], [ %t71, %logic.rend1319 ]
|
|
br i1 %t72, label %then1320, label %else1321
|
|
then1320:
|
|
%t73 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 9
|
|
%t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = call %S.ast.Node @finch.parser.parseBlock(ptr %t75)
|
|
%t77 = load i64, ptr %t74
|
|
%t78 = add i64 %t77, 1
|
|
call void @finch_arr_reserve(ptr %t73, i64 %t78, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t79 = load ptr, ptr %t73
|
|
%t80 = getelementptr inbounds %S.ast.Node, ptr %t79, i64 %t77
|
|
store %S.ast.Node %t76, ptr %t80
|
|
store i64 %t78, ptr %t74
|
|
br label %endif1322
|
|
else1321:
|
|
%t81 = load i1, ptr %a2
|
|
br i1 %t81, label %then1323, label %else1324
|
|
then1323:
|
|
%t82 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 9
|
|
%t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = call %S.ast.Node @finch.parser.parseExpr(ptr %t84)
|
|
%t86 = load i64, ptr %t83
|
|
%t87 = add i64 %t86, 1
|
|
call void @finch_arr_reserve(ptr %t82, i64 %t87, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t88 = load ptr, ptr %t82
|
|
%t89 = getelementptr inbounds %S.ast.Node, ptr %t88, i64 %t86
|
|
store %S.ast.Node %t85, ptr %t89
|
|
store i64 %t87, ptr %t83
|
|
br label %endif1325
|
|
else1324:
|
|
%t90 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 9
|
|
%t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i32 0, i32 1
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = call %S.ast.Node @finch.parser.parseStatement(ptr %t92)
|
|
%t94 = load i64, ptr %t91
|
|
%t95 = add i64 %t94, 1
|
|
call void @finch_arr_reserve(ptr %t90, i64 %t95, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t96 = load ptr, ptr %t90
|
|
%t97 = getelementptr inbounds %S.ast.Node, ptr %t96, i64 %t94
|
|
store %S.ast.Node %t93, ptr %t97
|
|
store i64 %t95, ptr %t91
|
|
br label %endif1325
|
|
endif1325:
|
|
br label %endif1322
|
|
endif1322:
|
|
%t98 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9
|
|
%t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1
|
|
%t100 = load %S.ast.Node, ptr %a38
|
|
store %S.ast.Node %t100, ptr %a101
|
|
call void @finch.copy.S_ast_Node(ptr %a102, ptr %a101)
|
|
%t103 = load %S.ast.Node, ptr %a102
|
|
%t104 = load i64, ptr %t99
|
|
%t105 = add i64 %t104, 1
|
|
call void @finch_arr_reserve(ptr %t98, i64 %t105, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t106 = load ptr, ptr %t98
|
|
%t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 %t104
|
|
store %S.ast.Node %t103, ptr %t107
|
|
store i64 %t105, ptr %t99
|
|
%t108 = load ptr, ptr %a1
|
|
%t109 = call i1 @finch.parser.accept(ptr %t108, { ptr, i64, i64 } { ptr @.str.770, i64 1, i64 0 })
|
|
%t110 = xor i1 %t109, true
|
|
br i1 %t110, label %then1326, label %endif1328
|
|
then1326:
|
|
%t111 = load ptr, ptr %a1
|
|
call void @finch.parser.endOfStatement(ptr %t111)
|
|
br label %endif1328
|
|
endif1328:
|
|
br label %while.cond1301
|
|
while.end1303:
|
|
%t112 = load i64, ptr %a24
|
|
%t113 = load ptr, ptr %a1
|
|
%t114 = icmp eq ptr %t113, null
|
|
br i1 %t114, label %panic1329, label %ok1330
|
|
panic1329:
|
|
call void @finch_panic(ptr @.str.771, i64 332, ptr @.str.772)
|
|
unreachable
|
|
ok1330:
|
|
%t115 = getelementptr inbounds %S.parser.Parser, ptr %t113, i32 0, i32 2
|
|
store i64 %t112, ptr %t115
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = call %S.lexer.Token @finch.parser.next(ptr %t116)
|
|
%t118 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9
|
|
%t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i32 0, i32 1
|
|
%t120 = load i64, ptr %t119
|
|
%t121 = icmp eq i64 %t120, 1
|
|
br i1 %t121, label %then1331, label %endif1333
|
|
then1331:
|
|
%t122 = load ptr, ptr %a1
|
|
%t123 = load ptr, ptr %a1
|
|
%t124 = call %S.lexer.Token @finch.parser.cur(ptr %t123)
|
|
call void @finch.parser.fail(ptr %t122, %S.lexer.Token %t124, { ptr, i64, i64 } { ptr @.str.773, i64 30, i64 0 })
|
|
br label %endif1333
|
|
endif1333:
|
|
%t125 = load %S.ast.Node, ptr %a5
|
|
store %S.ast.Node %t125, ptr %a126
|
|
call void @finch.copy.S_ast_Node(ptr %a127, ptr %a126)
|
|
%t128 = load %S.ast.Node, ptr %a127
|
|
ret %S.ast.Node %t128
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.parser.parseTParams(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.775, i64 3, i64 0 })
|
|
br label %while.cond1334
|
|
while.cond1334:
|
|
br label %while.body1335
|
|
while.body1335:
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = call %S.lexer.Token @finch.parser.expect(ptr %t6, { ptr, i64, i64 } { ptr @.str.776, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.777, i64 29, i64 0 })
|
|
%t8 = extractvalue %S.lexer.Token %t7, 1
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
call void @finch_str_copy(ptr %a10, ptr %a9)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a10
|
|
%t12 = load i64, ptr %t5
|
|
%t13 = add i64 %t12, 1
|
|
call void @finch_arr_reserve(ptr %a2, i64 %t13, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t14 = load ptr, ptr %a2
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i64 %t12
|
|
store { ptr, i64, i64 } %t11, ptr %t15
|
|
store i64 %t13, ptr %t5
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = call i1 @finch.parser.accept(ptr %t16, { ptr, i64, i64 } { ptr @.str.778, i64 1, i64 0 })
|
|
%t18 = xor i1 %t17, true
|
|
br i1 %t18, label %then1337, label %endif1339
|
|
then1337:
|
|
br label %while.end1336
|
|
endif1339:
|
|
br label %while.cond1334
|
|
while.end1336:
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.779, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.780, i64 29, i64 0 })
|
|
%t21 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
call void @finch.copy.arr_str(ptr %a23, ptr %a22)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a23
|
|
ret { ptr, i64, i64 } %t24
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseStruct(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca %S.ast.Node, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca %S.ast.Node, align 16
|
|
%a73 = alloca %S.ast.Node, align 16
|
|
%a83 = alloca %S.ast.Node, align 16
|
|
%a84 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.781, i64 6, i64 0 })
|
|
store %S.ast.Node %t3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.782, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.783, i64 8, i64 0 })
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.784, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.785, i64 13, i64 0 })
|
|
%t9 = extractvalue %S.lexer.Token %t8, 1
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
call void @finch_str_copy(ptr %a11, ptr %a10)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a11
|
|
%t13 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t12, ptr %t13
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.786, i64 1, i64 0 })
|
|
br i1 %t15, label %then1340, label %endif1342
|
|
then1340:
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t16)
|
|
%t18 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3
|
|
store { ptr, i64, i64 } %t17, ptr %t18
|
|
br label %endif1342
|
|
endif1342:
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.787, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.788, i64 3, i64 0 })
|
|
br label %while.cond1343
|
|
while.cond1343:
|
|
%t21 = load ptr, ptr %a1
|
|
%t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.789, i64 1, i64 0 })
|
|
%t23 = xor i1 %t22, true
|
|
br i1 %t23, label %while.body1344, label %while.end1345
|
|
while.body1344:
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.790, i64 3, i64 0 })
|
|
br i1 %t25, label %then1346, label %endif1348
|
|
then1346:
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = call %S.lexer.Token @finch.parser.cur(ptr %t27)
|
|
call void @finch.parser.fail(ptr %t26, %S.lexer.Token %t28, { ptr, i64, i64 } { ptr @.str.791, i64 38, i64 0 })
|
|
br label %endif1348
|
|
endif1348:
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = call %S.ast.Node @finch.parser.node(ptr %t29, { ptr, i64, i64 } { ptr @.str.792, i64 5, i64 0 })
|
|
store %S.ast.Node %t30, ptr %a31
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = call i1 @finch.parser.atDeclaration(ptr %t32)
|
|
%t34 = xor i1 %t33, true
|
|
br i1 %t34, label %then1349, label %endif1351
|
|
then1349:
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36)
|
|
%t38 = load ptr, ptr %a1
|
|
%t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38)
|
|
%t40 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t39)
|
|
store { ptr, i64, i64 } { ptr @.str.793, i64 11, i64 0 }, ptr %a42
|
|
store { ptr, i64, i64 } %t40, ptr %a43
|
|
call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a41
|
|
store { ptr, i64, i64 } %t44, ptr %a46
|
|
store { ptr, i64, i64 } { ptr @.str.794, i64 28, i64 0 }, ptr %a47
|
|
call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a45
|
|
call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } %t48)
|
|
br label %endif1351
|
|
endif1351:
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = call %S.ast.Type @finch.parser.parseType(ptr %t49)
|
|
%t51 = getelementptr inbounds %S.ast.Node, ptr %a31, i32 0, i32 5
|
|
store %S.ast.Type %t50, ptr %t51
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = call %S.lexer.Token @finch.parser.expect(ptr %t52, { ptr, i64, i64 } { ptr @.str.795, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.796, i64 12, i64 0 })
|
|
%t54 = extractvalue %S.lexer.Token %t53, 1
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
call void @finch_str_copy(ptr %a56, ptr %a55)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a56
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %a31, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t57, ptr %t58
|
|
%t59 = load ptr, ptr %a1
|
|
%t60 = call i1 @finch.parser.accept(ptr %t59, { ptr, i64, i64 } { ptr @.str.797, i64 1, i64 0 })
|
|
br i1 %t60, label %then1352, label %endif1354
|
|
then1352:
|
|
%t61 = getelementptr inbounds %S.ast.Node, ptr %a31, i32 0, i32 9
|
|
%t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i32 0, i32 1
|
|
%t63 = load ptr, ptr %a1
|
|
%t64 = call %S.ast.Node @finch.parser.parseExpr(ptr %t63)
|
|
%t65 = load i64, ptr %t62
|
|
%t66 = add i64 %t65, 1
|
|
call void @finch_arr_reserve(ptr %t61, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t67 = load ptr, ptr %t61
|
|
%t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65
|
|
store %S.ast.Node %t64, ptr %t68
|
|
store i64 %t66, ptr %t62
|
|
br label %endif1354
|
|
endif1354:
|
|
%t69 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1
|
|
%t71 = load %S.ast.Node, ptr %a31
|
|
store %S.ast.Node %t71, ptr %a72
|
|
call void @finch.copy.S_ast_Node(ptr %a73, ptr %a72)
|
|
%t74 = load %S.ast.Node, ptr %a73
|
|
%t75 = load i64, ptr %t70
|
|
%t76 = add i64 %t75, 1
|
|
call void @finch_arr_reserve(ptr %t69, i64 %t76, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t77 = load ptr, ptr %t69
|
|
%t78 = getelementptr inbounds %S.ast.Node, ptr %t77, i64 %t75
|
|
store %S.ast.Node %t74, ptr %t78
|
|
store i64 %t76, ptr %t70
|
|
%t79 = load ptr, ptr %a1
|
|
call void @finch.parser.endOfStatement(ptr %t79)
|
|
br label %while.cond1343
|
|
while.end1345:
|
|
%t80 = load ptr, ptr %a1
|
|
%t81 = call %S.lexer.Token @finch.parser.next(ptr %t80)
|
|
%t82 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t82, ptr %a83
|
|
call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83)
|
|
%t85 = load %S.ast.Node, ptr %a84
|
|
ret %S.ast.Node %t85
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca %S.ast.Node, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca %S.ast.Node, align 16
|
|
%a77 = alloca %S.ast.Node, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca %S.ast.Node, align 16
|
|
%a141 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.798, i64 2, i64 0 })
|
|
store %S.ast.Node %t3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call i1 @finch.parser.accept(ptr %t5, { ptr, i64, i64 } { ptr @.str.799, i64 6, i64 0 })
|
|
%t7 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 8
|
|
store i1 %t6, ptr %t7
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.800, i64 5, i64 0 })
|
|
br label %logic.from1355
|
|
logic.from1355:
|
|
br i1 %t9, label %logic.rhs1356, label %logic.end1357
|
|
logic.rhs1356:
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = call %S.lexer.Token @finch.parser.cur(ptr %t10)
|
|
%t12 = extractvalue %S.lexer.Token %t11, 1
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
call void @finch_str_copy(ptr %a14, ptr %a13)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a14
|
|
%t16 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15)
|
|
br label %logic.rend1358
|
|
logic.rend1358:
|
|
br label %logic.end1357
|
|
logic.end1357:
|
|
%t17 = phi i1 [ false, %logic.from1355 ], [ %t16, %logic.rend1358 ]
|
|
br i1 %t17, label %then1359, label %endif1361
|
|
then1359:
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = call %S.lexer.Token @finch.parser.cur(ptr %t19)
|
|
call void @finch.parser.fail(ptr %t18, %S.lexer.Token %t20, { ptr, i64, i64 } { ptr @.str.801, i64 68, i64 0 })
|
|
br label %endif1361
|
|
endif1361:
|
|
%t21 = load ptr, ptr %a1
|
|
%t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.802, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.803, i64 26, i64 0 })
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = call %S.lexer.Token @finch.parser.expect(ptr %t23, { ptr, i64, i64 } { ptr @.str.804, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.805, i64 15, i64 0 })
|
|
%t25 = extractvalue %S.lexer.Token %t24, 1
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
call void @finch_str_copy(ptr %a27, ptr %a26)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a27
|
|
%t29 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t28, ptr %t29
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.806, i64 1, i64 0 })
|
|
br i1 %t31, label %then1362, label %endif1364
|
|
then1362:
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t32)
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3
|
|
store { ptr, i64, i64 } %t33, ptr %t34
|
|
br label %endif1364
|
|
endif1364:
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = call i1 @finch.parser.accept(ptr %t35, { ptr, i64, i64 } { ptr @.str.807, i64 1, i64 0 })
|
|
br i1 %t36, label %then1365, label %endif1367
|
|
then1365:
|
|
%t37 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1
|
|
%t38 = load { ptr, i64, i64 }, ptr %t37
|
|
%t39 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t38, ptr %a40
|
|
call void @finch_str_copy(ptr %a41, ptr %a40)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a41
|
|
store { ptr, i64, i64 } %t42, ptr %t39
|
|
%t43 = load ptr, ptr %a1
|
|
%t44 = call %S.lexer.Token @finch.parser.expect(ptr %t43, { ptr, i64, i64 } { ptr @.str.808, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.809, i64 13, i64 0 })
|
|
%t45 = extractvalue %S.lexer.Token %t44, 1
|
|
store { ptr, i64, i64 } %t45, ptr %a46
|
|
call void @finch_str_copy(ptr %a47, ptr %a46)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a47
|
|
%t49 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t48, ptr %t49
|
|
br label %endif1367
|
|
endif1367:
|
|
%t50 = load ptr, ptr %a1
|
|
%t51 = call %S.lexer.Token @finch.parser.expect(ptr %t50, { ptr, i64, i64 } { ptr @.str.810, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.811, i64 3, i64 0 })
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = icmp eq ptr %t52, null
|
|
br i1 %t53, label %panic1368, label %ok1369
|
|
panic1368:
|
|
call void @finch_panic(ptr @.str.812, i64 398, ptr @.str.813)
|
|
unreachable
|
|
ok1369:
|
|
%t54 = getelementptr inbounds %S.parser.Parser, ptr %t52, i32 0, i32 2
|
|
%t55 = load i64, ptr %t54
|
|
%t56 = add i64 %t55, 1
|
|
store i64 %t56, ptr %t54
|
|
%t57 = load ptr, ptr %a1
|
|
%t58 = call i1 @finch.parser.at(ptr %t57, { ptr, i64, i64 } { ptr @.str.814, i64 1, i64 0 })
|
|
%t59 = xor i1 %t58, true
|
|
br i1 %t59, label %then1370, label %endif1372
|
|
then1370:
|
|
br label %while.cond1373
|
|
while.cond1373:
|
|
br label %while.body1374
|
|
while.body1374:
|
|
%t60 = load ptr, ptr %a1
|
|
%t61 = call %S.ast.Node @finch.parser.node(ptr %t60, { ptr, i64, i64 } { ptr @.str.815, i64 5, i64 0 })
|
|
store %S.ast.Node %t61, ptr %a62
|
|
%t63 = load ptr, ptr %a1
|
|
%t64 = call %S.ast.Type @finch.parser.parseType(ptr %t63)
|
|
%t65 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 5
|
|
store %S.ast.Type %t64, ptr %t65
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.816, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 16, i64 0 })
|
|
%t68 = extractvalue %S.lexer.Token %t67, 1
|
|
store { ptr, i64, i64 } %t68, ptr %a69
|
|
call void @finch_str_copy(ptr %a70, ptr %a69)
|
|
%t71 = load { ptr, i64, i64 }, ptr %a70
|
|
%t72 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t71, ptr %t72
|
|
%t73 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1
|
|
%t75 = load %S.ast.Node, ptr %a62
|
|
store %S.ast.Node %t75, ptr %a76
|
|
call void @finch.copy.S_ast_Node(ptr %a77, ptr %a76)
|
|
%t78 = load %S.ast.Node, ptr %a77
|
|
%t79 = load i64, ptr %t74
|
|
%t80 = add i64 %t79, 1
|
|
call void @finch_arr_reserve(ptr %t73, i64 %t80, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t81 = load ptr, ptr %t73
|
|
%t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t79
|
|
store %S.ast.Node %t78, ptr %t82
|
|
store i64 %t80, ptr %t74
|
|
%t83 = load ptr, ptr %a1
|
|
%t84 = call i1 @finch.parser.accept(ptr %t83, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 })
|
|
%t85 = xor i1 %t84, true
|
|
br i1 %t85, label %then1376, label %endif1378
|
|
then1376:
|
|
br label %while.end1375
|
|
endif1378:
|
|
br label %while.cond1373
|
|
while.end1375:
|
|
br label %endif1372
|
|
endif1372:
|
|
%t86 = load ptr, ptr %a1
|
|
%t87 = icmp eq ptr %t86, null
|
|
br i1 %t87, label %panic1379, label %ok1380
|
|
panic1379:
|
|
call void @finch_panic(ptr @.str.819, i64 410, ptr @.str.820)
|
|
unreachable
|
|
ok1380:
|
|
%t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 2
|
|
%t89 = load i64, ptr %t88
|
|
%t90 = sub i64 %t89, 1
|
|
store i64 %t90, ptr %t88
|
|
%t91 = load ptr, ptr %a1
|
|
%t92 = call %S.lexer.Token @finch.parser.expect(ptr %t91, { ptr, i64, i64 } { ptr @.str.821, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.822, i64 3, i64 0 })
|
|
%t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.823, i64 4, i64 0 })
|
|
%t94 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5
|
|
store %S.ast.Type %t93, ptr %t94
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = call i1 @finch.parser.accept(ptr %t95, { ptr, i64, i64 } { ptr @.str.824, i64 2, i64 0 })
|
|
br i1 %t96, label %then1381, label %endif1383
|
|
then1381:
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = call i1 @finch.parser.at(ptr %t97, { ptr, i64, i64 } { ptr @.str.825, i64 1, i64 0 })
|
|
%t99 = xor i1 %t98, true
|
|
br i1 %t99, label %then1384, label %endif1386
|
|
then1384:
|
|
%t100 = load ptr, ptr %a1
|
|
%t101 = call %S.ast.Type @finch.parser.parseType(ptr %t100)
|
|
%t102 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5
|
|
store %S.ast.Type %t101, ptr %t102
|
|
br label %endif1386
|
|
endif1386:
|
|
%t103 = load ptr, ptr %a1
|
|
%t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.826, i64 1, i64 0 })
|
|
%t105 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7
|
|
store i1 %t104, ptr %t105
|
|
%t106 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7
|
|
%t107 = load i1, ptr %t106
|
|
%t108 = xor i1 %t107, true
|
|
br label %logic.from1387
|
|
logic.from1387:
|
|
br i1 %t108, label %logic.rhs1388, label %logic.end1389
|
|
logic.rhs1388:
|
|
%t109 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5
|
|
%t110 = getelementptr inbounds %S.ast.Type, ptr %t109, i32 0, i32 0
|
|
%t111 = load { ptr, i64, i64 }, ptr %t110
|
|
store { ptr, i64, i64 } %t111, ptr %a112
|
|
store { ptr, i64, i64 } { ptr @.str.827, i64 4, i64 0 }, ptr %a113
|
|
%t114 = call i32 @finch_str_eq(ptr %a112, ptr %a113)
|
|
%t115 = icmp ne i32 %t114, 0
|
|
br label %logic.rend1390
|
|
logic.rend1390:
|
|
br label %logic.end1389
|
|
logic.end1389:
|
|
%t116 = phi i1 [ false, %logic.from1387 ], [ %t115, %logic.rend1390 ]
|
|
br i1 %t116, label %then1391, label %endif1393
|
|
then1391:
|
|
%t117 = load ptr, ptr %a1
|
|
%t118 = load ptr, ptr %a1
|
|
%t119 = call %S.lexer.Token @finch.parser.cur(ptr %t118)
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = call %S.lexer.Token @finch.parser.cur(ptr %t120)
|
|
%t122 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t121)
|
|
store { ptr, i64, i64 } { ptr @.str.828, i64 11, i64 0 }, ptr %a124
|
|
store { ptr, i64, i64 } %t122, ptr %a125
|
|
call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125)
|
|
%t126 = load { ptr, i64, i64 }, ptr %a123
|
|
store { ptr, i64, i64 } %t126, ptr %a128
|
|
store { ptr, i64, i64 } { ptr @.str.829, i64 61, i64 0 }, ptr %a129
|
|
call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129)
|
|
%t130 = load { ptr, i64, i64 }, ptr %a127
|
|
call void @finch.parser.fail(ptr %t117, %S.lexer.Token %t119, { ptr, i64, i64 } %t130)
|
|
br label %endif1393
|
|
endif1393:
|
|
br label %endif1383
|
|
endif1383:
|
|
%t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = call %S.ast.Node @finch.parser.parseBlock(ptr %t133)
|
|
%t135 = load i64, ptr %t132
|
|
%t136 = add i64 %t135, 1
|
|
call void @finch_arr_reserve(ptr %t131, i64 %t136, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t137 = load ptr, ptr %t131
|
|
%t138 = getelementptr inbounds %S.ast.Node, ptr %t137, i64 %t135
|
|
store %S.ast.Node %t134, ptr %t138
|
|
store i64 %t136, ptr %t132
|
|
%t139 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t139, ptr %a140
|
|
call void @finch.copy.S_ast_Node(ptr %a141, ptr %a140)
|
|
%t142 = load %S.ast.Node, ptr %a141
|
|
ret %S.ast.Node %t142
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a11 = alloca i64, align 16
|
|
%a39 = alloca %S.ast.Node, align 16
|
|
%a40 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.830, i64 5, i64 0 })
|
|
store %S.ast.Node %t3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.831, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 3, i64 0 })
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = icmp eq ptr %t7, null
|
|
br i1 %t8, label %panic1394, label %ok1395
|
|
panic1394:
|
|
call void @finch_panic(ptr @.str.833, i64 431, ptr @.str.834)
|
|
unreachable
|
|
ok1395:
|
|
%t9 = getelementptr inbounds %S.parser.Parser, ptr %t7, i32 0, i32 2
|
|
%t10 = load i64, ptr %t9
|
|
store i64 %t10, ptr %a11
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = icmp eq ptr %t12, null
|
|
br i1 %t13, label %panic1396, label %ok1397
|
|
panic1396:
|
|
call void @finch_panic(ptr @.str.835, i64 432, ptr @.str.836)
|
|
unreachable
|
|
ok1397:
|
|
%t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 2
|
|
store i64 0, ptr %t14
|
|
br label %while.cond1398
|
|
while.cond1398:
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = call i1 @finch.parser.at(ptr %t15, { ptr, i64, i64 } { ptr @.str.837, i64 1, i64 0 })
|
|
%t17 = xor i1 %t16, true
|
|
br i1 %t17, label %while.body1399, label %while.end1400
|
|
while.body1399:
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.838, i64 3, i64 0 })
|
|
br i1 %t19, label %then1401, label %endif1403
|
|
then1401:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = load ptr, ptr %a1
|
|
%t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21)
|
|
call void @finch.parser.fail(ptr %t20, %S.lexer.Token %t22, { ptr, i64, i64 } { ptr @.str.839, i64 35, i64 0 })
|
|
br label %endif1403
|
|
endif1403:
|
|
%t23 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = call %S.ast.Node @finch.parser.parseStatement(ptr %t25)
|
|
%t27 = load i64, ptr %t24
|
|
%t28 = add i64 %t27, 1
|
|
call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t29 = load ptr, ptr %t23
|
|
%t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27
|
|
store %S.ast.Node %t26, ptr %t30
|
|
store i64 %t28, ptr %t24
|
|
%t31 = load ptr, ptr %a1
|
|
call void @finch.parser.endOfStatement(ptr %t31)
|
|
br label %while.cond1398
|
|
while.end1400:
|
|
%t32 = load i64, ptr %a11
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = icmp eq ptr %t33, null
|
|
br i1 %t34, label %panic1404, label %ok1405
|
|
panic1404:
|
|
call void @finch_panic(ptr @.str.840, i64 440, ptr @.str.841)
|
|
unreachable
|
|
ok1405:
|
|
%t35 = getelementptr inbounds %S.parser.Parser, ptr %t33, i32 0, i32 2
|
|
store i64 %t32, ptr %t35
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = call %S.lexer.Token @finch.parser.next(ptr %t36)
|
|
%t38 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t38, ptr %a39
|
|
call void @finch.copy.S_ast_Node(ptr %a40, ptr %a39)
|
|
%t41 = load %S.ast.Node, ptr %a40
|
|
ret %S.ast.Node %t41
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca %S.ast.Node, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca %S.ast.Node, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca %S.ast.Node, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca %S.ast.Node, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca %S.ast.Node, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca %S.ast.Node, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca %S.ast.Node, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca %S.lexer.Token, align 16
|
|
%a282 = alloca %S.ast.Node, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca i64, align 16
|
|
%a301 = alloca i64, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca { ptr, i64, i64 }, align 16
|
|
%a318 = alloca { ptr, i64, i64 }, align 16
|
|
%a319 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca %S.ast.Node, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a355 = alloca { ptr, i64, i64 }, align 16
|
|
%a361 = alloca %S.ast.Node, align 16
|
|
%a362 = alloca %S.ast.Node, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a385 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a399 = alloca { ptr, i64, i64 }, align 16
|
|
%a400 = alloca { ptr, i64, i64 }, align 16
|
|
%a418 = alloca %S.ast.Node, align 16
|
|
%a422 = alloca %S.ast.Node, align 16
|
|
%a423 = alloca %S.ast.Node, align 16
|
|
%a430 = alloca %S.ast.Node, align 16
|
|
%a431 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t2)
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
%t5 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.842, i64 2, i64 0 }, ptr %a7
|
|
%t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7)
|
|
%t9 = icmp ne i32 %t8, 0
|
|
br i1 %t9, label %then1406, label %endif1408
|
|
then1406:
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10)
|
|
ret %S.ast.Node %t11
|
|
endif1408:
|
|
%t12 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.843, i64 5, i64 0 }, ptr %a14
|
|
%t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14)
|
|
%t16 = icmp ne i32 %t15, 0
|
|
br i1 %t16, label %then1409, label %endif1411
|
|
then1409:
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 })
|
|
store %S.ast.Node %t18, ptr %a19
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = call %S.lexer.Token @finch.parser.next(ptr %t20)
|
|
%t22 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = call %S.ast.Node @finch.parser.parseExpr(ptr %t24)
|
|
%t26 = load i64, ptr %t23
|
|
%t27 = add i64 %t26, 1
|
|
call void @finch_arr_reserve(ptr %t22, i64 %t27, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t28 = load ptr, ptr %t22
|
|
%t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 %t26
|
|
store %S.ast.Node %t25, ptr %t29
|
|
store i64 %t27, ptr %t23
|
|
%t30 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = call %S.ast.Node @finch.parser.parseBlock(ptr %t32)
|
|
%t34 = load i64, ptr %t31
|
|
%t35 = add i64 %t34, 1
|
|
call void @finch_arr_reserve(ptr %t30, i64 %t35, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t36 = load ptr, ptr %t30
|
|
%t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 %t34
|
|
store %S.ast.Node %t33, ptr %t37
|
|
store i64 %t35, ptr %t31
|
|
%t38 = load %S.ast.Node, ptr %a19
|
|
ret %S.ast.Node %t38
|
|
endif1411:
|
|
%t39 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t39, ptr %a40
|
|
store { ptr, i64, i64 } { ptr @.str.845, i64 3, i64 0 }, ptr %a41
|
|
%t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41)
|
|
%t43 = icmp ne i32 %t42, 0
|
|
br i1 %t43, label %then1412, label %endif1414
|
|
then1412:
|
|
%t44 = load ptr, ptr %a1
|
|
%t45 = call %S.ast.Node @finch.parser.node(ptr %t44, { ptr, i64, i64 } { ptr @.str.846, i64 3, i64 0 })
|
|
store %S.ast.Node %t45, ptr %a46
|
|
%t47 = load ptr, ptr %a1
|
|
%t48 = call %S.lexer.Token @finch.parser.next(ptr %t47)
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = call %S.lexer.Token @finch.parser.expect(ptr %t49, { ptr, i64, i64 } { ptr @.str.847, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.848, i64 20, i64 0 })
|
|
%t51 = extractvalue %S.lexer.Token %t50, 1
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
call void @finch_str_copy(ptr %a53, ptr %a52)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a53
|
|
%t55 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t54, ptr %t55
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.849, i64 1, i64 0 })
|
|
br i1 %t57, label %then1415, label %endif1417
|
|
then1415:
|
|
%t58 = load ptr, ptr %a1
|
|
%t59 = call %S.lexer.Token @finch.parser.expect(ptr %t58, { ptr, i64, i64 } { ptr @.str.850, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.851, i64 27, i64 0 })
|
|
%t60 = extractvalue %S.lexer.Token %t59, 1
|
|
store { ptr, i64, i64 } %t60, ptr %a61
|
|
call void @finch_str_copy(ptr %a62, ptr %a61)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a62
|
|
%t64 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t63, ptr %t64
|
|
br label %endif1417
|
|
endif1417:
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = call %S.lexer.Token @finch.parser.expect(ptr %t65, { ptr, i64, i64 } { ptr @.str.852, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.853, i64 4, i64 0 })
|
|
%t67 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 9
|
|
%t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1
|
|
%t69 = load ptr, ptr %a1
|
|
%t70 = call %S.ast.Node @finch.parser.parseExpr(ptr %t69)
|
|
%t71 = load i64, ptr %t68
|
|
%t72 = add i64 %t71, 1
|
|
call void @finch_arr_reserve(ptr %t67, i64 %t72, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t73 = load ptr, ptr %t67
|
|
%t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 %t71
|
|
store %S.ast.Node %t70, ptr %t74
|
|
store i64 %t72, ptr %t68
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = call i1 @finch.parser.accept(ptr %t75, { ptr, i64, i64 } { ptr @.str.854, i64 2, i64 0 })
|
|
br i1 %t76, label %then1418, label %else1419
|
|
then1418:
|
|
%t77 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 4
|
|
%t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1
|
|
%t79 = load i64, ptr %t78
|
|
%t80 = icmp sgt i64 %t79, 0
|
|
br i1 %t80, label %then1421, label %endif1423
|
|
then1421:
|
|
%t81 = load ptr, ptr %a1
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = call %S.lexer.Token @finch.parser.cur(ptr %t82)
|
|
call void @finch.parser.fail(ptr %t81, %S.lexer.Token %t83, { ptr, i64, i64 } { ptr @.str.855, i64 55, i64 0 })
|
|
br label %endif1423
|
|
endif1423:
|
|
%t84 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 9
|
|
%t85 = getelementptr inbounds { ptr, i64, i64 }, ptr %t84, i32 0, i32 1
|
|
%t86 = load ptr, ptr %a1
|
|
%t87 = call %S.ast.Node @finch.parser.parseExpr(ptr %t86)
|
|
%t88 = load i64, ptr %t85
|
|
%t89 = add i64 %t88, 1
|
|
call void @finch_arr_reserve(ptr %t84, i64 %t89, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t90 = load ptr, ptr %t84
|
|
%t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 %t88
|
|
store %S.ast.Node %t87, ptr %t91
|
|
store i64 %t89, ptr %t85
|
|
br label %endif1420
|
|
else1419:
|
|
%t92 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.856, i64 4, i64 0 }, ptr %t92
|
|
br label %endif1420
|
|
endif1420:
|
|
%t93 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 9
|
|
%t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = call %S.ast.Node @finch.parser.parseBlock(ptr %t95)
|
|
%t97 = load i64, ptr %t94
|
|
%t98 = add i64 %t97, 1
|
|
call void @finch_arr_reserve(ptr %t93, i64 %t98, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t99 = load ptr, ptr %t93
|
|
%t100 = getelementptr inbounds %S.ast.Node, ptr %t99, i64 %t97
|
|
store %S.ast.Node %t96, ptr %t100
|
|
store i64 %t98, ptr %t94
|
|
%t101 = load %S.ast.Node, ptr %a46
|
|
ret %S.ast.Node %t101
|
|
endif1414:
|
|
%t102 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t102, ptr %a103
|
|
store { ptr, i64, i64 } { ptr @.str.857, i64 5, i64 0 }, ptr %a104
|
|
%t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104)
|
|
%t106 = icmp ne i32 %t105, 0
|
|
br i1 %t106, label %then1424, label %endif1426
|
|
then1424:
|
|
%t107 = load ptr, ptr %a1
|
|
%t108 = call %S.ast.Node @finch.parser.parseMatch(ptr %t107, i1 false)
|
|
ret %S.ast.Node %t108
|
|
endif1426:
|
|
%t109 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t109, ptr %a110
|
|
store { ptr, i64, i64 } { ptr @.str.858, i64 6, i64 0 }, ptr %a111
|
|
%t112 = call i32 @finch_str_eq(ptr %a110, ptr %a111)
|
|
%t113 = icmp ne i32 %t112, 0
|
|
br i1 %t113, label %then1427, label %endif1429
|
|
then1427:
|
|
%t114 = load ptr, ptr %a1
|
|
%t115 = call %S.ast.Node @finch.parser.node(ptr %t114, { ptr, i64, i64 } { ptr @.str.859, i64 6, i64 0 })
|
|
store %S.ast.Node %t115, ptr %a116
|
|
%t117 = load ptr, ptr %a1
|
|
%t118 = call %S.lexer.Token @finch.parser.next(ptr %t117)
|
|
%t119 = load ptr, ptr %a1
|
|
%t120 = call i1 @finch.parser.at(ptr %t119, { ptr, i64, i64 } { ptr @.str.860, i64 1, i64 0 })
|
|
%t121 = xor i1 %t120, true
|
|
br label %logic.from1430
|
|
logic.from1430:
|
|
br i1 %t121, label %logic.rhs1431, label %logic.end1432
|
|
logic.rhs1431:
|
|
%t122 = load ptr, ptr %a1
|
|
%t123 = call %S.lexer.Token @finch.parser.cur(ptr %t122)
|
|
%t124 = extractvalue %S.lexer.Token %t123, 4
|
|
%t125 = xor i1 %t124, true
|
|
br label %logic.rend1433
|
|
logic.rend1433:
|
|
br label %logic.end1432
|
|
logic.end1432:
|
|
%t126 = phi i1 [ false, %logic.from1430 ], [ %t125, %logic.rend1433 ]
|
|
br i1 %t126, label %then1434, label %endif1436
|
|
then1434:
|
|
%t127 = getelementptr inbounds %S.ast.Node, ptr %a116, i32 0, i32 9
|
|
%t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1
|
|
%t129 = load ptr, ptr %a1
|
|
%t130 = call %S.ast.Node @finch.parser.parseExpr(ptr %t129)
|
|
%t131 = load i64, ptr %t128
|
|
%t132 = add i64 %t131, 1
|
|
call void @finch_arr_reserve(ptr %t127, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t133 = load ptr, ptr %t127
|
|
%t134 = getelementptr inbounds %S.ast.Node, ptr %t133, i64 %t131
|
|
store %S.ast.Node %t130, ptr %t134
|
|
store i64 %t132, ptr %t128
|
|
br label %endif1436
|
|
endif1436:
|
|
%t135 = load %S.ast.Node, ptr %a116
|
|
ret %S.ast.Node %t135
|
|
endif1429:
|
|
%t136 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t136, ptr %a137
|
|
store { ptr, i64, i64 } { ptr @.str.861, i64 5, i64 0 }, ptr %a138
|
|
%t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138)
|
|
%t140 = icmp ne i32 %t139, 0
|
|
br label %logic.from1437
|
|
logic.from1437:
|
|
br i1 %t140, label %logic.end1439, label %logic.rhs1438
|
|
logic.rhs1438:
|
|
%t141 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t141, ptr %a142
|
|
store { ptr, i64, i64 } { ptr @.str.862, i64 8, i64 0 }, ptr %a143
|
|
%t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143)
|
|
%t145 = icmp ne i32 %t144, 0
|
|
br label %logic.rend1440
|
|
logic.rend1440:
|
|
br label %logic.end1439
|
|
logic.end1439:
|
|
%t146 = phi i1 [ true, %logic.from1437 ], [ %t145, %logic.rend1440 ]
|
|
br i1 %t146, label %then1441, label %endif1443
|
|
then1441:
|
|
%t147 = load ptr, ptr %a1
|
|
%t148 = load { ptr, i64, i64 }, ptr %a4
|
|
%t149 = call %S.ast.Node @finch.parser.node(ptr %t147, { ptr, i64, i64 } %t148)
|
|
store %S.ast.Node %t149, ptr %a150
|
|
%t151 = load ptr, ptr %a1
|
|
%t152 = call %S.lexer.Token @finch.parser.next(ptr %t151)
|
|
%t153 = load %S.ast.Node, ptr %a150
|
|
ret %S.ast.Node %t153
|
|
endif1443:
|
|
%t154 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t154, ptr %a155
|
|
store { ptr, i64, i64 } { ptr @.str.863, i64 1, i64 0 }, ptr %a156
|
|
%t157 = call i32 @finch_str_eq(ptr %a155, ptr %a156)
|
|
%t158 = icmp ne i32 %t157, 0
|
|
br i1 %t158, label %then1444, label %endif1446
|
|
then1444:
|
|
%t159 = load ptr, ptr %a1
|
|
%t160 = call %S.ast.Node @finch.parser.parseBlock(ptr %t159)
|
|
ret %S.ast.Node %t160
|
|
endif1446:
|
|
%t161 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t161, ptr %a162
|
|
store { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }, ptr %a163
|
|
%t164 = call i32 @finch_str_eq(ptr %a162, ptr %a163)
|
|
%t165 = icmp ne i32 %t164, 0
|
|
br i1 %t165, label %then1447, label %endif1449
|
|
then1447:
|
|
%t166 = load ptr, ptr %a1
|
|
%t167 = call %S.ast.Node @finch.parser.node(ptr %t166, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 })
|
|
store %S.ast.Node %t167, ptr %a168
|
|
%t169 = load ptr, ptr %a1
|
|
%t170 = call %S.lexer.Token @finch.parser.next(ptr %t169)
|
|
%t171 = load ptr, ptr %a1
|
|
%t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.866, i64 5, i64 0 })
|
|
br i1 %t172, label %then1450, label %endif1452
|
|
then1450:
|
|
%t173 = load ptr, ptr %a1
|
|
%t174 = load ptr, ptr %a1
|
|
%t175 = call %S.lexer.Token @finch.parser.cur(ptr %t174)
|
|
call void @finch.parser.fail(ptr %t173, %S.lexer.Token %t175, { ptr, i64, i64 } { ptr @.str.867, i64 33, i64 0 })
|
|
br label %endif1452
|
|
endif1452:
|
|
%t176 = getelementptr inbounds %S.ast.Node, ptr %a168, i32 0, i32 9
|
|
%t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i32 0, i32 1
|
|
%t178 = load ptr, ptr %a1
|
|
%t179 = call %S.ast.Node @finch.parser.parseStatement(ptr %t178)
|
|
%t180 = load i64, ptr %t177
|
|
%t181 = add i64 %t180, 1
|
|
call void @finch_arr_reserve(ptr %t176, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t182 = load ptr, ptr %t176
|
|
%t183 = getelementptr inbounds %S.ast.Node, ptr %t182, i64 %t180
|
|
store %S.ast.Node %t179, ptr %t183
|
|
store i64 %t181, ptr %t177
|
|
%t184 = load %S.ast.Node, ptr %a168
|
|
ret %S.ast.Node %t184
|
|
endif1449:
|
|
%t185 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t185, ptr %a186
|
|
store { ptr, i64, i64 } { ptr @.str.868, i64 2, i64 0 }, ptr %a187
|
|
%t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187)
|
|
%t189 = icmp ne i32 %t188, 0
|
|
br label %logic.from1453
|
|
logic.from1453:
|
|
br i1 %t189, label %logic.end1455, label %logic.rhs1454
|
|
logic.rhs1454:
|
|
%t190 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t190, ptr %a191
|
|
store { ptr, i64, i64 } { ptr @.str.869, i64 6, i64 0 }, ptr %a192
|
|
%t193 = call i32 @finch_str_eq(ptr %a191, ptr %a192)
|
|
%t194 = icmp ne i32 %t193, 0
|
|
br label %logic.rend1456
|
|
logic.rend1456:
|
|
br label %logic.end1455
|
|
logic.end1455:
|
|
%t195 = phi i1 [ true, %logic.from1453 ], [ %t194, %logic.rend1456 ]
|
|
br label %logic.from1457
|
|
logic.from1457:
|
|
br i1 %t195, label %logic.end1459, label %logic.rhs1458
|
|
logic.rhs1458:
|
|
%t196 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t196, ptr %a197
|
|
store { ptr, i64, i64 } { ptr @.str.870, i64 6, i64 0 }, ptr %a198
|
|
%t199 = call i32 @finch_str_eq(ptr %a197, ptr %a198)
|
|
%t200 = icmp ne i32 %t199, 0
|
|
br label %logic.rend1460
|
|
logic.rend1460:
|
|
br label %logic.end1459
|
|
logic.end1459:
|
|
%t201 = phi i1 [ true, %logic.from1457 ], [ %t200, %logic.rend1460 ]
|
|
br label %logic.from1461
|
|
logic.from1461:
|
|
br i1 %t201, label %logic.end1463, label %logic.rhs1462
|
|
logic.rhs1462:
|
|
%t202 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t202, ptr %a203
|
|
store { ptr, i64, i64 } { ptr @.str.871, i64 4, i64 0 }, ptr %a204
|
|
%t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204)
|
|
%t206 = icmp ne i32 %t205, 0
|
|
br label %logic.rend1464
|
|
logic.rend1464:
|
|
br label %logic.end1463
|
|
logic.end1463:
|
|
%t207 = phi i1 [ true, %logic.from1461 ], [ %t206, %logic.rend1464 ]
|
|
br i1 %t207, label %then1465, label %endif1467
|
|
then1465:
|
|
%t208 = load ptr, ptr %a1
|
|
%t209 = load ptr, ptr %a1
|
|
%t210 = call %S.lexer.Token @finch.parser.cur(ptr %t209)
|
|
%t211 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.872, i64 1, i64 0 }, ptr %a213
|
|
store { ptr, i64, i64 } %t211, ptr %a214
|
|
call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214)
|
|
%t215 = load { ptr, i64, i64 }, ptr %a212
|
|
store { ptr, i64, i64 } %t215, ptr %a217
|
|
store { ptr, i64, i64 } { ptr @.str.873, i64 48, i64 0 }, ptr %a218
|
|
call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218)
|
|
%t219 = load { ptr, i64, i64 }, ptr %a216
|
|
call void @finch.parser.fail(ptr %t208, %S.lexer.Token %t210, { ptr, i64, i64 } %t219)
|
|
br label %endif1467
|
|
endif1467:
|
|
%t220 = load ptr, ptr %a1
|
|
%t221 = call i1 @finch.parser.atDeclaration(ptr %t220)
|
|
br i1 %t221, label %then1468, label %endif1470
|
|
then1468:
|
|
%t222 = load ptr, ptr %a1
|
|
%t223 = call %S.ast.Node @finch.parser.node(ptr %t222, { ptr, i64, i64 } { ptr @.str.874, i64 4, i64 0 })
|
|
store %S.ast.Node %t223, ptr %a224
|
|
%t225 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 6
|
|
store i1 true, ptr %t225
|
|
%t226 = load ptr, ptr %a1
|
|
%t227 = call %S.ast.Type @finch.parser.parseType(ptr %t226)
|
|
%t228 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 5
|
|
store %S.ast.Type %t227, ptr %t228
|
|
%t229 = load ptr, ptr %a1
|
|
%t230 = call %S.lexer.Token @finch.parser.expect(ptr %t229, { ptr, i64, i64 } { ptr @.str.875, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.876, i64 15, i64 0 })
|
|
%t231 = extractvalue %S.lexer.Token %t230, 1
|
|
store { ptr, i64, i64 } %t231, ptr %a232
|
|
call void @finch_str_copy(ptr %a233, ptr %a232)
|
|
%t234 = load { ptr, i64, i64 }, ptr %a233
|
|
%t235 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t234, ptr %t235
|
|
%t236 = load ptr, ptr %a1
|
|
%t237 = call i1 @finch.parser.accept(ptr %t236, { ptr, i64, i64 } { ptr @.str.877, i64 1, i64 0 })
|
|
br i1 %t237, label %then1471, label %endif1473
|
|
then1471:
|
|
%t238 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 9
|
|
%t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1
|
|
%t240 = load ptr, ptr %a1
|
|
%t241 = call %S.ast.Node @finch.parser.parseExpr(ptr %t240)
|
|
%t242 = load i64, ptr %t239
|
|
%t243 = add i64 %t242, 1
|
|
call void @finch_arr_reserve(ptr %t238, i64 %t243, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t244 = load ptr, ptr %t238
|
|
%t245 = getelementptr inbounds %S.ast.Node, ptr %t244, i64 %t242
|
|
store %S.ast.Node %t241, ptr %t245
|
|
store i64 %t243, ptr %t239
|
|
br label %endif1473
|
|
endif1473:
|
|
%t246 = load %S.ast.Node, ptr %a224
|
|
ret %S.ast.Node %t246
|
|
endif1470:
|
|
%t247 = load ptr, ptr %a1
|
|
%t248 = call i1 @finch.parser.at(ptr %t247, { ptr, i64, i64 } { ptr @.str.878, i64 5, i64 0 })
|
|
br label %logic.from1474
|
|
logic.from1474:
|
|
br i1 %t248, label %logic.rhs1475, label %logic.end1476
|
|
logic.rhs1475:
|
|
%t249 = load ptr, ptr %a1
|
|
%t250 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t249, i64 1)
|
|
store { ptr, i64, i64 } %t250, ptr %a251
|
|
store { ptr, i64, i64 } { ptr @.str.879, i64 2, i64 0 }, ptr %a252
|
|
%t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252)
|
|
%t254 = icmp ne i32 %t253, 0
|
|
br label %logic.rend1477
|
|
logic.rend1477:
|
|
br label %logic.end1476
|
|
logic.end1476:
|
|
%t255 = phi i1 [ false, %logic.from1474 ], [ %t254, %logic.rend1477 ]
|
|
br i1 %t255, label %then1478, label %endif1480
|
|
then1478:
|
|
%t256 = load ptr, ptr %a1
|
|
%t257 = call %S.ast.Node @finch.parser.node(ptr %t256, { ptr, i64, i64 } { ptr @.str.880, i64 4, i64 0 })
|
|
store %S.ast.Node %t257, ptr %a258
|
|
%t259 = load ptr, ptr %a1
|
|
%t260 = call %S.lexer.Token @finch.parser.next(ptr %t259)
|
|
%t261 = extractvalue %S.lexer.Token %t260, 1
|
|
store { ptr, i64, i64 } %t261, ptr %a262
|
|
call void @finch_str_copy(ptr %a263, ptr %a262)
|
|
%t264 = load { ptr, i64, i64 }, ptr %a263
|
|
%t265 = getelementptr inbounds %S.ast.Node, ptr %a258, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t264, ptr %t265
|
|
%t266 = load ptr, ptr %a1
|
|
%t267 = call %S.lexer.Token @finch.parser.next(ptr %t266)
|
|
%t268 = getelementptr inbounds %S.ast.Node, ptr %a258, i32 0, i32 9
|
|
%t269 = getelementptr inbounds { ptr, i64, i64 }, ptr %t268, i32 0, i32 1
|
|
%t270 = load ptr, ptr %a1
|
|
%t271 = call %S.ast.Node @finch.parser.parseExpr(ptr %t270)
|
|
%t272 = load i64, ptr %t269
|
|
%t273 = add i64 %t272, 1
|
|
call void @finch_arr_reserve(ptr %t268, i64 %t273, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t274 = load ptr, ptr %t268
|
|
%t275 = getelementptr inbounds %S.ast.Node, ptr %t274, i64 %t272
|
|
store %S.ast.Node %t271, ptr %t275
|
|
store i64 %t273, ptr %t269
|
|
%t276 = load %S.ast.Node, ptr %a258
|
|
ret %S.ast.Node %t276
|
|
endif1480:
|
|
%t277 = load ptr, ptr %a1
|
|
%t278 = call %S.lexer.Token @finch.parser.cur(ptr %t277)
|
|
store %S.lexer.Token %t278, ptr %a279
|
|
%t280 = load ptr, ptr %a1
|
|
%t281 = call %S.ast.Node @finch.parser.parseExpr(ptr %t280)
|
|
store %S.ast.Node %t281, ptr %a282
|
|
%t283 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t284 = call ptr @finch_alloc(i64 %t283)
|
|
%t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.881, i64 1, i64 0 }, ptr %t285
|
|
%t286 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.882, i64 2, i64 0 }, ptr %t286
|
|
%t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.883, i64 2, i64 0 }, ptr %t287
|
|
%t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.884, i64 2, i64 0 }, ptr %t288
|
|
%t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.885, i64 2, i64 0 }, ptr %t289
|
|
%t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.886, i64 2, i64 0 }, ptr %t290
|
|
%t291 = insertvalue { ptr, i64, i64 } undef, ptr %t284, 0
|
|
%t292 = insertvalue { ptr, i64, i64 } %t291, i64 6, 1
|
|
%t293 = insertvalue { ptr, i64, i64 } %t292, i64 6, 2
|
|
store { ptr, i64, i64 } %t293, ptr %a294
|
|
%t295 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1
|
|
%t296 = load ptr, ptr %a1
|
|
%t297 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t296)
|
|
store i64 -1, ptr %a298
|
|
%t299 = load i64, ptr %t295
|
|
%t300 = load ptr, ptr %a294
|
|
store i64 0, ptr %a301
|
|
br label %find.cond1481
|
|
find.cond1481:
|
|
%t302 = load i64, ptr %a301
|
|
%t303 = icmp slt i64 %t302, %t299
|
|
br i1 %t303, label %find.body1482, label %find.end1485
|
|
find.body1482:
|
|
%t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t300, i64 %t302
|
|
%t305 = load { ptr, i64, i64 }, ptr %t304
|
|
store { ptr, i64, i64 } %t305, ptr %a306
|
|
store { ptr, i64, i64 } %t297, ptr %a307
|
|
%t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307)
|
|
%t309 = icmp ne i32 %t308, 0
|
|
br i1 %t309, label %find.hit1483, label %find.next1484
|
|
find.hit1483:
|
|
store i64 %t302, ptr %a298
|
|
br label %find.end1485
|
|
find.next1484:
|
|
%t310 = add i64 %t302, 1
|
|
store i64 %t310, ptr %a301
|
|
br label %find.cond1481
|
|
find.end1485:
|
|
%t311 = load i64, ptr %a298
|
|
%t312 = icmp sge i64 %t311, 0
|
|
br label %logic.from1486
|
|
logic.from1486:
|
|
br i1 %t312, label %logic.rhs1487, label %logic.end1488
|
|
logic.rhs1487:
|
|
%t313 = load ptr, ptr %a1
|
|
%t314 = call i1 @finch.parser.sameLine(ptr %t313)
|
|
br label %logic.rend1489
|
|
logic.rend1489:
|
|
br label %logic.end1488
|
|
logic.end1488:
|
|
%t315 = phi i1 [ false, %logic.from1486 ], [ %t314, %logic.rend1489 ]
|
|
br i1 %t315, label %then1490, label %endif1492
|
|
then1490:
|
|
%t316 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0
|
|
%t317 = load { ptr, i64, i64 }, ptr %t316
|
|
store { ptr, i64, i64 } %t317, ptr %a318
|
|
store { ptr, i64, i64 } { ptr @.str.887, i64 3, i64 0 }, ptr %a319
|
|
%t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319)
|
|
%t321 = icmp eq i32 %t320, 0
|
|
br label %logic.from1493
|
|
logic.from1493:
|
|
br i1 %t321, label %logic.rhs1494, label %logic.end1495
|
|
logic.rhs1494:
|
|
%t322 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0
|
|
%t323 = load { ptr, i64, i64 }, ptr %t322
|
|
store { ptr, i64, i64 } %t323, ptr %a324
|
|
store { ptr, i64, i64 } { ptr @.str.888, i64 6, i64 0 }, ptr %a325
|
|
%t326 = call i32 @finch_str_eq(ptr %a324, ptr %a325)
|
|
%t327 = icmp eq i32 %t326, 0
|
|
br label %logic.rend1496
|
|
logic.rend1496:
|
|
br label %logic.end1495
|
|
logic.end1495:
|
|
%t328 = phi i1 [ false, %logic.from1493 ], [ %t327, %logic.rend1496 ]
|
|
br label %logic.from1497
|
|
logic.from1497:
|
|
br i1 %t328, label %logic.rhs1498, label %logic.end1499
|
|
logic.rhs1498:
|
|
%t329 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0
|
|
%t330 = load { ptr, i64, i64 }, ptr %t329
|
|
store { ptr, i64, i64 } %t330, ptr %a331
|
|
store { ptr, i64, i64 } { ptr @.str.889, i64 5, i64 0 }, ptr %a332
|
|
%t333 = call i32 @finch_str_eq(ptr %a331, ptr %a332)
|
|
%t334 = icmp eq i32 %t333, 0
|
|
br label %logic.rend1500
|
|
logic.rend1500:
|
|
br label %logic.end1499
|
|
logic.end1499:
|
|
%t335 = phi i1 [ false, %logic.from1497 ], [ %t334, %logic.rend1500 ]
|
|
br i1 %t335, label %then1501, label %endif1503
|
|
then1501:
|
|
%t336 = load ptr, ptr %a1
|
|
%t337 = load %S.lexer.Token, ptr %a279
|
|
call void @finch.parser.fail(ptr %t336, %S.lexer.Token %t337, { ptr, i64, i64 } { ptr @.str.890, i64 66, i64 0 })
|
|
br label %endif1503
|
|
endif1503:
|
|
%t338 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.891, i64 6, i64 0 }, 0
|
|
%t339 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 2
|
|
%t340 = load i64, ptr %t339
|
|
%t341 = insertvalue %S.ast.Node %t338, i64 %t340, 11
|
|
%t342 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 3
|
|
%t343 = load i64, ptr %t342
|
|
%t344 = insertvalue %S.ast.Node %t341, i64 %t343, 12
|
|
%t345 = load ptr, ptr %a1
|
|
%t346 = icmp eq ptr %t345, null
|
|
br i1 %t346, label %panic1504, label %ok1505
|
|
panic1504:
|
|
call void @finch_panic(ptr @.str.892, i64 534, ptr @.str.893)
|
|
unreachable
|
|
ok1505:
|
|
%t347 = getelementptr inbounds %S.parser.Parser, ptr %t345, i32 0, i32 3
|
|
%t348 = load i64, ptr %t347
|
|
%t349 = insertvalue %S.ast.Node %t344, i64 %t348, 13
|
|
store %S.ast.Node %t349, ptr %a350
|
|
%t351 = load ptr, ptr %a1
|
|
%t352 = call %S.lexer.Token @finch.parser.next(ptr %t351)
|
|
%t353 = extractvalue %S.lexer.Token %t352, 0
|
|
store { ptr, i64, i64 } %t353, ptr %a354
|
|
call void @finch_str_copy(ptr %a355, ptr %a354)
|
|
%t356 = load { ptr, i64, i64 }, ptr %a355
|
|
%t357 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t356, ptr %t357
|
|
%t358 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 9
|
|
%t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1
|
|
%t360 = load %S.ast.Node, ptr %a282
|
|
store %S.ast.Node %t360, ptr %a361
|
|
call void @finch.copy.S_ast_Node(ptr %a362, ptr %a361)
|
|
%t363 = load %S.ast.Node, ptr %a362
|
|
%t364 = load i64, ptr %t359
|
|
%t365 = add i64 %t364, 1
|
|
call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t366 = load ptr, ptr %t358
|
|
%t367 = getelementptr inbounds %S.ast.Node, ptr %t366, i64 %t364
|
|
store %S.ast.Node %t363, ptr %t367
|
|
store i64 %t365, ptr %t359
|
|
%t368 = getelementptr inbounds %S.ast.Node, ptr %a350, i32 0, i32 9
|
|
%t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1
|
|
%t370 = load ptr, ptr %a1
|
|
%t371 = call %S.ast.Node @finch.parser.parseExpr(ptr %t370)
|
|
%t372 = load i64, ptr %t369
|
|
%t373 = add i64 %t372, 1
|
|
call void @finch_arr_reserve(ptr %t368, i64 %t373, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t374 = load ptr, ptr %t368
|
|
%t375 = getelementptr inbounds %S.ast.Node, ptr %t374, i64 %t372
|
|
store %S.ast.Node %t371, ptr %t375
|
|
store i64 %t373, ptr %t369
|
|
%t376 = load %S.ast.Node, ptr %a350
|
|
ret %S.ast.Node %t376
|
|
endif1492:
|
|
%t377 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0
|
|
%t378 = load { ptr, i64, i64 }, ptr %t377
|
|
store { ptr, i64, i64 } %t378, ptr %a379
|
|
store { ptr, i64, i64 } { ptr @.str.894, i64 4, i64 0 }, ptr %a380
|
|
%t381 = call i32 @finch_str_eq(ptr %a379, ptr %a380)
|
|
%t382 = icmp eq i32 %t381, 0
|
|
br label %logic.from1506
|
|
logic.from1506:
|
|
br i1 %t382, label %logic.rhs1507, label %logic.end1508
|
|
logic.rhs1507:
|
|
%t383 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0
|
|
%t384 = load { ptr, i64, i64 }, ptr %t383
|
|
store { ptr, i64, i64 } %t384, ptr %a385
|
|
store { ptr, i64, i64 } { ptr @.str.895, i64 6, i64 0 }, ptr %a386
|
|
%t387 = call i32 @finch_str_eq(ptr %a385, ptr %a386)
|
|
%t388 = icmp eq i32 %t387, 0
|
|
br label %logic.rend1509
|
|
logic.rend1509:
|
|
br label %logic.end1508
|
|
logic.end1508:
|
|
%t389 = phi i1 [ false, %logic.from1506 ], [ %t388, %logic.rend1509 ]
|
|
br label %logic.from1510
|
|
logic.from1510:
|
|
br i1 %t389, label %logic.rhs1511, label %logic.end1512
|
|
logic.rhs1511:
|
|
%t390 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0
|
|
%t391 = load { ptr, i64, i64 }, ptr %t390
|
|
store { ptr, i64, i64 } %t391, ptr %a392
|
|
store { ptr, i64, i64 } { ptr @.str.896, i64 3, i64 0 }, ptr %a393
|
|
%t394 = call i32 @finch_str_eq(ptr %a392, ptr %a393)
|
|
%t395 = icmp eq i32 %t394, 0
|
|
br label %logic.rend1513
|
|
logic.rend1513:
|
|
br label %logic.end1512
|
|
logic.end1512:
|
|
%t396 = phi i1 [ false, %logic.from1510 ], [ %t395, %logic.rend1513 ]
|
|
br label %logic.from1514
|
|
logic.from1514:
|
|
br i1 %t396, label %logic.rhs1515, label %logic.end1516
|
|
logic.rhs1515:
|
|
%t397 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0
|
|
%t398 = load { ptr, i64, i64 }, ptr %t397
|
|
store { ptr, i64, i64 } %t398, ptr %a399
|
|
store { ptr, i64, i64 } { ptr @.str.897, i64 2, i64 0 }, ptr %a400
|
|
%t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400)
|
|
%t402 = icmp eq i32 %t401, 0
|
|
br label %logic.rend1517
|
|
logic.rend1517:
|
|
br label %logic.end1516
|
|
logic.end1516:
|
|
%t403 = phi i1 [ false, %logic.from1514 ], [ %t402, %logic.rend1517 ]
|
|
br i1 %t403, label %then1518, label %endif1520
|
|
then1518:
|
|
%t404 = load ptr, ptr %a1
|
|
%t405 = load %S.lexer.Token, ptr %a279
|
|
call void @finch.parser.fail(ptr %t404, %S.lexer.Token %t405, { ptr, i64, i64 } { ptr @.str.898, i64 37, i64 0 })
|
|
br label %endif1520
|
|
endif1520:
|
|
%t406 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.899, i64 4, i64 0 }, 0
|
|
%t407 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 2
|
|
%t408 = load i64, ptr %t407
|
|
%t409 = insertvalue %S.ast.Node %t406, i64 %t408, 11
|
|
%t410 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 3
|
|
%t411 = load i64, ptr %t410
|
|
%t412 = insertvalue %S.ast.Node %t409, i64 %t411, 12
|
|
%t413 = load ptr, ptr %a1
|
|
%t414 = icmp eq ptr %t413, null
|
|
br i1 %t414, label %panic1521, label %ok1522
|
|
panic1521:
|
|
call void @finch_panic(ptr @.str.900, i64 543, ptr @.str.901)
|
|
unreachable
|
|
ok1522:
|
|
%t415 = getelementptr inbounds %S.parser.Parser, ptr %t413, i32 0, i32 3
|
|
%t416 = load i64, ptr %t415
|
|
%t417 = insertvalue %S.ast.Node %t412, i64 %t416, 13
|
|
store %S.ast.Node %t417, ptr %a418
|
|
%t419 = getelementptr inbounds %S.ast.Node, ptr %a418, i32 0, i32 9
|
|
%t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1
|
|
%t421 = load %S.ast.Node, ptr %a282
|
|
store %S.ast.Node %t421, ptr %a422
|
|
call void @finch.copy.S_ast_Node(ptr %a423, ptr %a422)
|
|
%t424 = load %S.ast.Node, ptr %a423
|
|
%t425 = load i64, ptr %t420
|
|
%t426 = add i64 %t425, 1
|
|
call void @finch_arr_reserve(ptr %t419, i64 %t426, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t427 = load ptr, ptr %t419
|
|
%t428 = getelementptr inbounds %S.ast.Node, ptr %t427, i64 %t425
|
|
store %S.ast.Node %t424, ptr %t428
|
|
store i64 %t426, ptr %t420
|
|
%t429 = load %S.ast.Node, ptr %a418
|
|
store %S.ast.Node %t429, ptr %a430
|
|
call void @finch.copy.S_ast_Node(ptr %a431, ptr %a430)
|
|
%t432 = load %S.ast.Node, ptr %a431
|
|
ret %S.ast.Node %t432
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseIf(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a44 = alloca %S.ast.Node, align 16
|
|
%a45 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.902, i64 2, i64 0 })
|
|
store %S.ast.Node %t3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.903, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.904, i64 4, i64 0 })
|
|
%t7 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = call %S.ast.Node @finch.parser.parseExpr(ptr %t9)
|
|
%t11 = load i64, ptr %t8
|
|
%t12 = add i64 %t11, 1
|
|
call void @finch_arr_reserve(ptr %t7, i64 %t12, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t13 = load ptr, ptr %t7
|
|
%t14 = getelementptr inbounds %S.ast.Node, ptr %t13, i64 %t11
|
|
store %S.ast.Node %t10, ptr %t14
|
|
store i64 %t12, ptr %t8
|
|
%t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i32 0, i32 1
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = call %S.ast.Node @finch.parser.parseBlock(ptr %t17)
|
|
%t19 = load i64, ptr %t16
|
|
%t20 = add i64 %t19, 1
|
|
call void @finch_arr_reserve(ptr %t15, i64 %t20, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t21 = load ptr, ptr %t15
|
|
%t22 = getelementptr inbounds %S.ast.Node, ptr %t21, i64 %t19
|
|
store %S.ast.Node %t18, ptr %t22
|
|
store i64 %t20, ptr %t16
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = call i1 @finch.parser.accept(ptr %t23, { ptr, i64, i64 } { ptr @.str.905, i64 4, i64 0 })
|
|
br i1 %t24, label %then1523, label %endif1525
|
|
then1523:
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = call i1 @finch.parser.at(ptr %t25, { ptr, i64, i64 } { ptr @.str.906, i64 2, i64 0 })
|
|
br i1 %t26, label %then1526, label %else1527
|
|
then1526:
|
|
%t27 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i32 0, i32 1
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = call %S.ast.Node @finch.parser.parseIf(ptr %t29)
|
|
%t31 = load i64, ptr %t28
|
|
%t32 = add i64 %t31, 1
|
|
call void @finch_arr_reserve(ptr %t27, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t33 = load ptr, ptr %t27
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31
|
|
store %S.ast.Node %t30, ptr %t34
|
|
store i64 %t32, ptr %t28
|
|
br label %endif1528
|
|
else1527:
|
|
%t35 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9
|
|
%t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i32 0, i32 1
|
|
%t37 = load ptr, ptr %a1
|
|
%t38 = call %S.ast.Node @finch.parser.parseBlock(ptr %t37)
|
|
%t39 = load i64, ptr %t36
|
|
%t40 = add i64 %t39, 1
|
|
call void @finch_arr_reserve(ptr %t35, i64 %t40, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t41 = load ptr, ptr %t35
|
|
%t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39
|
|
store %S.ast.Node %t38, ptr %t42
|
|
store i64 %t40, ptr %t36
|
|
br label %endif1528
|
|
endif1528:
|
|
br label %endif1525
|
|
endif1525:
|
|
%t43 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t43, ptr %a44
|
|
call void @finch.copy.S_ast_Node(ptr %a45, ptr %a44)
|
|
%t46 = load %S.ast.Node, ptr %a45
|
|
ret %S.ast.Node %t46
|
|
}
|
|
|
|
define internal i64 @finch.parser.binaryLevel({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.907, i64 2, i64 0 }, ptr %a4
|
|
%t5 = call i32 @finch_str_eq(ptr %a3, ptr %a4)
|
|
%t6 = icmp ne i32 %t5, 0
|
|
br i1 %t6, label %then1529, label %endif1531
|
|
then1529:
|
|
ret i64 1
|
|
endif1531:
|
|
%t7 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.908, i64 2, i64 0 }, ptr %a9
|
|
%t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9)
|
|
%t11 = icmp ne i32 %t10, 0
|
|
br i1 %t11, label %then1532, label %endif1534
|
|
then1532:
|
|
ret i64 2
|
|
endif1534:
|
|
%t12 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.909, i64 2, i64 0 }, ptr %a14
|
|
%t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14)
|
|
%t16 = icmp ne i32 %t15, 0
|
|
br label %logic.from1535
|
|
logic.from1535:
|
|
br i1 %t16, label %logic.end1537, label %logic.rhs1536
|
|
logic.rhs1536:
|
|
%t17 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.910, i64 2, i64 0 }, ptr %a19
|
|
%t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19)
|
|
%t21 = icmp ne i32 %t20, 0
|
|
br label %logic.rend1538
|
|
logic.rend1538:
|
|
br label %logic.end1537
|
|
logic.end1537:
|
|
%t22 = phi i1 [ true, %logic.from1535 ], [ %t21, %logic.rend1538 ]
|
|
br label %logic.from1539
|
|
logic.from1539:
|
|
br i1 %t22, label %logic.end1541, label %logic.rhs1540
|
|
logic.rhs1540:
|
|
%t23 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t23, ptr %a24
|
|
store { ptr, i64, i64 } { ptr @.str.911, i64 1, i64 0 }, ptr %a25
|
|
%t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25)
|
|
%t27 = icmp ne i32 %t26, 0
|
|
br label %logic.rend1542
|
|
logic.rend1542:
|
|
br label %logic.end1541
|
|
logic.end1541:
|
|
%t28 = phi i1 [ true, %logic.from1539 ], [ %t27, %logic.rend1542 ]
|
|
br label %logic.from1543
|
|
logic.from1543:
|
|
br i1 %t28, label %logic.end1545, label %logic.rhs1544
|
|
logic.rhs1544:
|
|
%t29 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t29, ptr %a30
|
|
store { ptr, i64, i64 } { ptr @.str.912, i64 2, i64 0 }, ptr %a31
|
|
%t32 = call i32 @finch_str_eq(ptr %a30, ptr %a31)
|
|
%t33 = icmp ne i32 %t32, 0
|
|
br label %logic.rend1546
|
|
logic.rend1546:
|
|
br label %logic.end1545
|
|
logic.end1545:
|
|
%t34 = phi i1 [ true, %logic.from1543 ], [ %t33, %logic.rend1546 ]
|
|
br label %logic.from1547
|
|
logic.from1547:
|
|
br i1 %t34, label %logic.end1549, label %logic.rhs1548
|
|
logic.rhs1548:
|
|
%t35 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.913, i64 1, i64 0 }, ptr %a37
|
|
%t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37)
|
|
%t39 = icmp ne i32 %t38, 0
|
|
br label %logic.rend1550
|
|
logic.rend1550:
|
|
br label %logic.end1549
|
|
logic.end1549:
|
|
%t40 = phi i1 [ true, %logic.from1547 ], [ %t39, %logic.rend1550 ]
|
|
br label %logic.from1551
|
|
logic.from1551:
|
|
br i1 %t40, label %logic.end1553, label %logic.rhs1552
|
|
logic.rhs1552:
|
|
%t41 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t41, ptr %a42
|
|
store { ptr, i64, i64 } { ptr @.str.914, i64 2, i64 0 }, ptr %a43
|
|
%t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43)
|
|
%t45 = icmp ne i32 %t44, 0
|
|
br label %logic.rend1554
|
|
logic.rend1554:
|
|
br label %logic.end1553
|
|
logic.end1553:
|
|
%t46 = phi i1 [ true, %logic.from1551 ], [ %t45, %logic.rend1554 ]
|
|
br i1 %t46, label %then1555, label %endif1557
|
|
then1555:
|
|
ret i64 3
|
|
endif1557:
|
|
%t47 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t47, ptr %a48
|
|
store { ptr, i64, i64 } { ptr @.str.915, i64 1, i64 0 }, ptr %a49
|
|
%t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49)
|
|
%t51 = icmp ne i32 %t50, 0
|
|
br label %logic.from1558
|
|
logic.from1558:
|
|
br i1 %t51, label %logic.end1560, label %logic.rhs1559
|
|
logic.rhs1559:
|
|
%t52 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.916, i64 1, i64 0 }, ptr %a54
|
|
%t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54)
|
|
%t56 = icmp ne i32 %t55, 0
|
|
br label %logic.rend1561
|
|
logic.rend1561:
|
|
br label %logic.end1560
|
|
logic.end1560:
|
|
%t57 = phi i1 [ true, %logic.from1558 ], [ %t56, %logic.rend1561 ]
|
|
br label %logic.from1562
|
|
logic.from1562:
|
|
br i1 %t57, label %logic.end1564, label %logic.rhs1563
|
|
logic.rhs1563:
|
|
%t58 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t58, ptr %a59
|
|
store { ptr, i64, i64 } { ptr @.str.917, i64 1, i64 0 }, ptr %a60
|
|
%t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60)
|
|
%t62 = icmp ne i32 %t61, 0
|
|
br label %logic.rend1565
|
|
logic.rend1565:
|
|
br label %logic.end1564
|
|
logic.end1564:
|
|
%t63 = phi i1 [ true, %logic.from1562 ], [ %t62, %logic.rend1565 ]
|
|
br label %logic.from1566
|
|
logic.from1566:
|
|
br i1 %t63, label %logic.end1568, label %logic.rhs1567
|
|
logic.rhs1567:
|
|
%t64 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t64, ptr %a65
|
|
store { ptr, i64, i64 } { ptr @.str.918, i64 1, i64 0 }, ptr %a66
|
|
%t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66)
|
|
%t68 = icmp ne i32 %t67, 0
|
|
br label %logic.rend1569
|
|
logic.rend1569:
|
|
br label %logic.end1568
|
|
logic.end1568:
|
|
%t69 = phi i1 [ true, %logic.from1566 ], [ %t68, %logic.rend1569 ]
|
|
br i1 %t69, label %then1570, label %endif1572
|
|
then1570:
|
|
ret i64 4
|
|
endif1572:
|
|
%t70 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t70, ptr %a71
|
|
store { ptr, i64, i64 } { ptr @.str.919, i64 1, i64 0 }, ptr %a72
|
|
%t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72)
|
|
%t74 = icmp ne i32 %t73, 0
|
|
br label %logic.from1573
|
|
logic.from1573:
|
|
br i1 %t74, label %logic.end1575, label %logic.rhs1574
|
|
logic.rhs1574:
|
|
%t75 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.920, i64 1, i64 0 }, ptr %a77
|
|
%t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77)
|
|
%t79 = icmp ne i32 %t78, 0
|
|
br label %logic.rend1576
|
|
logic.rend1576:
|
|
br label %logic.end1575
|
|
logic.end1575:
|
|
%t80 = phi i1 [ true, %logic.from1573 ], [ %t79, %logic.rend1576 ]
|
|
br label %logic.from1577
|
|
logic.from1577:
|
|
br i1 %t80, label %logic.end1579, label %logic.rhs1578
|
|
logic.rhs1578:
|
|
%t81 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t81, ptr %a82
|
|
store { ptr, i64, i64 } { ptr @.str.921, i64 1, i64 0 }, ptr %a83
|
|
%t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83)
|
|
%t85 = icmp ne i32 %t84, 0
|
|
br label %logic.rend1580
|
|
logic.rend1580:
|
|
br label %logic.end1579
|
|
logic.end1579:
|
|
%t86 = phi i1 [ true, %logic.from1577 ], [ %t85, %logic.rend1580 ]
|
|
br label %logic.from1581
|
|
logic.from1581:
|
|
br i1 %t86, label %logic.end1583, label %logic.rhs1582
|
|
logic.rhs1582:
|
|
%t87 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
store { ptr, i64, i64 } { ptr @.str.922, i64 2, i64 0 }, ptr %a89
|
|
%t90 = call i32 @finch_str_eq(ptr %a88, ptr %a89)
|
|
%t91 = icmp ne i32 %t90, 0
|
|
br label %logic.rend1584
|
|
logic.rend1584:
|
|
br label %logic.end1583
|
|
logic.end1583:
|
|
%t92 = phi i1 [ true, %logic.from1581 ], [ %t91, %logic.rend1584 ]
|
|
br label %logic.from1585
|
|
logic.from1585:
|
|
br i1 %t92, label %logic.end1587, label %logic.rhs1586
|
|
logic.rhs1586:
|
|
%t93 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t93, ptr %a94
|
|
store { ptr, i64, i64 } { ptr @.str.923, i64 2, i64 0 }, ptr %a95
|
|
%t96 = call i32 @finch_str_eq(ptr %a94, ptr %a95)
|
|
%t97 = icmp ne i32 %t96, 0
|
|
br label %logic.rend1588
|
|
logic.rend1588:
|
|
br label %logic.end1587
|
|
logic.end1587:
|
|
%t98 = phi i1 [ true, %logic.from1585 ], [ %t97, %logic.rend1588 ]
|
|
br label %logic.from1589
|
|
logic.from1589:
|
|
br i1 %t98, label %logic.end1591, label %logic.rhs1590
|
|
logic.rhs1590:
|
|
%t99 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t99, ptr %a100
|
|
store { ptr, i64, i64 } { ptr @.str.924, i64 1, i64 0 }, ptr %a101
|
|
%t102 = call i32 @finch_str_eq(ptr %a100, ptr %a101)
|
|
%t103 = icmp ne i32 %t102, 0
|
|
br label %logic.rend1592
|
|
logic.rend1592:
|
|
br label %logic.end1591
|
|
logic.end1591:
|
|
%t104 = phi i1 [ true, %logic.from1589 ], [ %t103, %logic.rend1592 ]
|
|
br i1 %t104, label %then1593, label %endif1595
|
|
then1593:
|
|
ret i64 5
|
|
endif1595:
|
|
ret i64 0
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseExpr(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a13 = alloca %S.ast.Node, align 16
|
|
%a14 = alloca %S.ast.Node, align 16
|
|
%a18 = alloca %S.ast.Node, align 16
|
|
%a24 = alloca %S.ast.Node, align 16
|
|
%a25 = alloca %S.ast.Node, align 16
|
|
%a51 = alloca %S.ast.Node, align 16
|
|
%a52 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1)
|
|
store %S.ast.Node %t3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call i1 @finch.parser.sameLine(ptr %t5)
|
|
%t7 = xor i1 %t6, true
|
|
br label %logic.from1596
|
|
logic.from1596:
|
|
br i1 %t7, label %logic.end1598, label %logic.rhs1597
|
|
logic.rhs1597:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.925, i64 2, i64 0 })
|
|
%t10 = xor i1 %t9, true
|
|
br label %logic.rend1599
|
|
logic.rend1599:
|
|
br label %logic.end1598
|
|
logic.end1598:
|
|
%t11 = phi i1 [ true, %logic.from1596 ], [ %t10, %logic.rend1599 ]
|
|
br i1 %t11, label %then1600, label %endif1602
|
|
then1600:
|
|
%t12 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t12, ptr %a13
|
|
call void @finch.copy.S_ast_Node(ptr %a14, ptr %a13)
|
|
%t15 = load %S.ast.Node, ptr %a14
|
|
ret %S.ast.Node %t15
|
|
endif1602:
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = call %S.ast.Node @finch.parser.node(ptr %t16, { ptr, i64, i64 } { ptr @.str.926, i64 2, i64 0 })
|
|
store %S.ast.Node %t17, ptr %a18
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = call %S.lexer.Token @finch.parser.next(ptr %t19)
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1
|
|
%t23 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t23, ptr %a24
|
|
call void @finch.copy.S_ast_Node(ptr %a25, ptr %a24)
|
|
%t26 = load %S.ast.Node, ptr %a25
|
|
%t27 = load i64, ptr %t22
|
|
%t28 = add i64 %t27, 1
|
|
call void @finch_arr_reserve(ptr %t21, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t29 = load ptr, ptr %t21
|
|
%t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27
|
|
store %S.ast.Node %t26, ptr %t30
|
|
store i64 %t28, ptr %t22
|
|
%t31 = load ptr, ptr %a1
|
|
%t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.927, i64 1, i64 0 })
|
|
br i1 %t32, label %then1603, label %else1604
|
|
then1603:
|
|
%t33 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 6
|
|
store i1 true, ptr %t33
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9
|
|
%t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = call %S.ast.Node @finch.parser.parseBlock(ptr %t36)
|
|
%t38 = load i64, ptr %t35
|
|
%t39 = add i64 %t38, 1
|
|
call void @finch_arr_reserve(ptr %t34, i64 %t39, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t40 = load ptr, ptr %t34
|
|
%t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t38
|
|
store %S.ast.Node %t37, ptr %t41
|
|
store i64 %t39, ptr %t35
|
|
br label %endif1605
|
|
else1604:
|
|
%t42 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9
|
|
%t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1
|
|
%t44 = load ptr, ptr %a1
|
|
%t45 = call %S.ast.Node @finch.parser.parseExpr(ptr %t44)
|
|
%t46 = load i64, ptr %t43
|
|
%t47 = add i64 %t46, 1
|
|
call void @finch_arr_reserve(ptr %t42, i64 %t47, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t48 = load ptr, ptr %t42
|
|
%t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46
|
|
store %S.ast.Node %t45, ptr %t49
|
|
store i64 %t47, ptr %t43
|
|
br label %endif1605
|
|
endif1605:
|
|
%t50 = load %S.ast.Node, ptr %a18
|
|
store %S.ast.Node %t50, ptr %a51
|
|
call void @finch.copy.S_ast_Node(ptr %a52, ptr %a51)
|
|
%t53 = load %S.ast.Node, ptr %a52
|
|
ret %S.ast.Node %t53
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a11 = alloca %S.ast.Node, align 16
|
|
%a22 = alloca %S.ast.Node, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca %S.ast.Node, align 16
|
|
%a34 = alloca %S.ast.Node, align 16
|
|
%a51 = alloca %S.ast.Node, align 16
|
|
%a52 = alloca %S.ast.Node, align 16
|
|
%a55 = alloca %S.ast.Node, align 16
|
|
%a56 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = load i64, ptr %a2
|
|
%t4 = icmp sgt i64 %t3, 5
|
|
br i1 %t4, label %then1606, label %endif1608
|
|
then1606:
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5)
|
|
ret %S.ast.Node %t6
|
|
endif1608:
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = load i64, ptr %a2
|
|
%t9 = add i64 %t8, 1
|
|
%t10 = call %S.ast.Node @finch.parser.parseBinary(ptr %t7, i64 %t9)
|
|
store %S.ast.Node %t10, ptr %a11
|
|
br label %while.cond1609
|
|
while.cond1609:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = call i1 @finch.parser.sameLine(ptr %t12)
|
|
br label %logic.from1612
|
|
logic.from1612:
|
|
br i1 %t13, label %logic.rhs1613, label %logic.end1614
|
|
logic.rhs1613:
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t14)
|
|
%t16 = call i64 @finch.parser.binaryLevel({ ptr, i64, i64 } %t15)
|
|
%t17 = load i64, ptr %a2
|
|
%t18 = icmp eq i64 %t16, %t17
|
|
br label %logic.rend1615
|
|
logic.rend1615:
|
|
br label %logic.end1614
|
|
logic.end1614:
|
|
%t19 = phi i1 [ false, %logic.from1612 ], [ %t18, %logic.rend1615 ]
|
|
br i1 %t19, label %while.body1610, label %while.end1611
|
|
while.body1610:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = call %S.ast.Node @finch.parser.node(ptr %t20, { ptr, i64, i64 } { ptr @.str.928, i64 6, i64 0 })
|
|
store %S.ast.Node %t21, ptr %a22
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = call %S.lexer.Token @finch.parser.next(ptr %t23)
|
|
%t25 = extractvalue %S.lexer.Token %t24, 0
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
call void @finch_str_copy(ptr %a27, ptr %a26)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a27
|
|
%t29 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t28, ptr %t29
|
|
%t30 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 9
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1
|
|
%t32 = load %S.ast.Node, ptr %a11
|
|
store %S.ast.Node %t32, ptr %a33
|
|
call void @finch.copy.S_ast_Node(ptr %a34, ptr %a33)
|
|
%t35 = load %S.ast.Node, ptr %a34
|
|
%t36 = load i64, ptr %t31
|
|
%t37 = add i64 %t36, 1
|
|
call void @finch_arr_reserve(ptr %t30, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t38 = load ptr, ptr %t30
|
|
%t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36
|
|
store %S.ast.Node %t35, ptr %t39
|
|
store i64 %t37, ptr %t31
|
|
%t40 = getelementptr inbounds %S.ast.Node, ptr %a22, i32 0, i32 9
|
|
%t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = load i64, ptr %a2
|
|
%t44 = add i64 %t43, 1
|
|
%t45 = call %S.ast.Node @finch.parser.parseBinary(ptr %t42, i64 %t44)
|
|
%t46 = load i64, ptr %t41
|
|
%t47 = add i64 %t46, 1
|
|
call void @finch_arr_reserve(ptr %t40, i64 %t47, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t48 = load ptr, ptr %t40
|
|
%t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46
|
|
store %S.ast.Node %t45, ptr %t49
|
|
store i64 %t47, ptr %t41
|
|
%t50 = load %S.ast.Node, ptr %a22
|
|
store %S.ast.Node %t50, ptr %a51
|
|
call void @finch.copy.S_ast_Node(ptr %a52, ptr %a51)
|
|
%t53 = load %S.ast.Node, ptr %a52
|
|
store %S.ast.Node %t53, ptr %a11
|
|
br label %while.cond1609
|
|
while.end1611:
|
|
%t54 = load %S.ast.Node, ptr %a11
|
|
store %S.ast.Node %t54, ptr %a55
|
|
call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55)
|
|
%t57 = load %S.ast.Node, ptr %a56
|
|
ret %S.ast.Node %t57
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parseUnary(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a6 = alloca %S.ast.Node, align 16
|
|
%a28 = alloca %S.ast.Node, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.929, i64 3, i64 0 })
|
|
br i1 %t3, label %then1616, label %endif1618
|
|
then1616:
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.930, i64 3, i64 0 })
|
|
store %S.ast.Node %t5, ptr %a6
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = call %S.lexer.Token @finch.parser.next(ptr %t7)
|
|
%t9 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t11)
|
|
%t13 = load i64, ptr %t10
|
|
%t14 = add i64 %t13, 1
|
|
call void @finch_arr_reserve(ptr %t9, i64 %t14, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t15 = load ptr, ptr %t9
|
|
%t16 = getelementptr inbounds %S.ast.Node, ptr %t15, i64 %t13
|
|
store %S.ast.Node %t12, ptr %t16
|
|
store i64 %t14, ptr %t10
|
|
%t17 = load %S.ast.Node, ptr %a6
|
|
ret %S.ast.Node %t17
|
|
endif1618:
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.931, i64 1, i64 0 })
|
|
br label %logic.from1619
|
|
logic.from1619:
|
|
br i1 %t19, label %logic.end1621, label %logic.rhs1620
|
|
logic.rhs1620:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = call i1 @finch.parser.at(ptr %t20, { ptr, i64, i64 } { ptr @.str.932, i64 1, i64 0 })
|
|
br label %logic.rend1622
|
|
logic.rend1622:
|
|
br label %logic.end1621
|
|
logic.end1621:
|
|
%t22 = phi i1 [ true, %logic.from1619 ], [ %t21, %logic.rend1622 ]
|
|
br label %logic.from1623
|
|
logic.from1623:
|
|
br i1 %t22, label %logic.end1625, label %logic.rhs1624
|
|
logic.rhs1624:
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = call i1 @finch.parser.at(ptr %t23, { ptr, i64, i64 } { ptr @.str.933, i64 1, i64 0 })
|
|
br label %logic.rend1626
|
|
logic.rend1626:
|
|
br label %logic.end1625
|
|
logic.end1625:
|
|
%t25 = phi i1 [ true, %logic.from1623 ], [ %t24, %logic.rend1626 ]
|
|
br i1 %t25, label %then1627, label %endif1629
|
|
then1627:
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = call %S.ast.Node @finch.parser.node(ptr %t26, { ptr, i64, i64 } { ptr @.str.934, i64 5, i64 0 })
|
|
store %S.ast.Node %t27, ptr %a28
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = call %S.lexer.Token @finch.parser.next(ptr %t29)
|
|
%t31 = extractvalue %S.lexer.Token %t30, 0
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
call void @finch_str_copy(ptr %a33, ptr %a32)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a33
|
|
%t35 = getelementptr inbounds %S.ast.Node, ptr %a28, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t34, ptr %t35
|
|
%t36 = getelementptr inbounds %S.ast.Node, ptr %a28, i32 0, i32 9
|
|
%t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1
|
|
%t38 = load ptr, ptr %a1
|
|
%t39 = call %S.ast.Node @finch.parser.parseUnary(ptr %t38)
|
|
%t40 = load i64, ptr %t37
|
|
%t41 = add i64 %t40, 1
|
|
call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t42 = load ptr, ptr %t36
|
|
%t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40
|
|
store %S.ast.Node %t39, ptr %t43
|
|
store i64 %t41, ptr %t37
|
|
%t44 = load %S.ast.Node, ptr %a28
|
|
ret %S.ast.Node %t44
|
|
endif1629:
|
|
%t45 = load ptr, ptr %a1
|
|
%t46 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t45)
|
|
ret %S.ast.Node %t46
|
|
}
|
|
|
|
define internal void @finch.parser.parseArgs(ptr %p0, ptr %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca ptr, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store ptr %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.935, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.936, i64 3, i64 0 })
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = icmp eq ptr %t5, null
|
|
br i1 %t6, label %panic1630, label %ok1631
|
|
panic1630:
|
|
call void @finch_panic(ptr @.str.937, i64 636, ptr @.str.938)
|
|
unreachable
|
|
ok1631:
|
|
%t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 2
|
|
%t8 = load i64, ptr %t7
|
|
%t9 = add i64 %t8, 1
|
|
store i64 %t9, ptr %t7
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = call i1 @finch.parser.at(ptr %t10, { ptr, i64, i64 } { ptr @.str.939, i64 1, i64 0 })
|
|
%t12 = xor i1 %t11, true
|
|
br i1 %t12, label %then1632, label %endif1634
|
|
then1632:
|
|
br label %while.cond1635
|
|
while.cond1635:
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.940, i64 1, i64 0 })
|
|
%t15 = xor i1 %t14, true
|
|
br i1 %t15, label %while.body1636, label %while.end1637
|
|
while.body1636:
|
|
store { ptr, i64, i64 } { ptr @.str.941, i64 0, i64 0 }, ptr %a16
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = call i1 @finch.parser.at(ptr %t17, { ptr, i64, i64 } { ptr @.str.942, i64 5, i64 0 })
|
|
br label %logic.from1638
|
|
logic.from1638:
|
|
br i1 %t18, label %logic.rhs1639, label %logic.end1640
|
|
logic.rhs1639:
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t19, i64 1)
|
|
store { ptr, i64, i64 } %t20, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.943, i64 1, i64 0 }, ptr %a22
|
|
%t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22)
|
|
%t24 = icmp ne i32 %t23, 0
|
|
br label %logic.rend1641
|
|
logic.rend1641:
|
|
br label %logic.end1640
|
|
logic.end1640:
|
|
%t25 = phi i1 [ false, %logic.from1638 ], [ %t24, %logic.rend1641 ]
|
|
br i1 %t25, label %then1642, label %endif1644
|
|
then1642:
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = call %S.lexer.Token @finch.parser.next(ptr %t26)
|
|
%t28 = extractvalue %S.lexer.Token %t27, 1
|
|
store { ptr, i64, i64 } %t28, ptr %a29
|
|
call void @finch_str_copy(ptr %a30, ptr %a29)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a30
|
|
store { ptr, i64, i64 } %t31, ptr %a16
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = call %S.lexer.Token @finch.parser.next(ptr %t32)
|
|
br label %endif1644
|
|
endif1644:
|
|
%t34 = load ptr, ptr %a2
|
|
%t35 = icmp eq ptr %t34, null
|
|
br i1 %t35, label %panic1645, label %ok1646
|
|
panic1645:
|
|
call void @finch_panic(ptr @.str.944, i64 644, ptr @.str.945)
|
|
unreachable
|
|
ok1646:
|
|
%t36 = getelementptr inbounds %S.ast.Node, ptr %t34, i32 0, i32 10
|
|
%t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1
|
|
%t38 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t38, ptr %a39
|
|
call void @finch_str_copy(ptr %a40, ptr %a39)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a40
|
|
%t42 = load i64, ptr %t37
|
|
%t43 = add i64 %t42, 1
|
|
call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t44 = load ptr, ptr %t36
|
|
%t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42
|
|
store { ptr, i64, i64 } %t41, ptr %t45
|
|
store i64 %t43, ptr %t37
|
|
%t46 = load ptr, ptr %a2
|
|
%t47 = icmp eq ptr %t46, null
|
|
br i1 %t47, label %panic1647, label %ok1648
|
|
panic1647:
|
|
call void @finch_panic(ptr @.str.946, i64 645, ptr @.str.947)
|
|
unreachable
|
|
ok1648:
|
|
%t48 = getelementptr inbounds %S.ast.Node, ptr %t46, i32 0, i32 9
|
|
%t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1
|
|
%t50 = load ptr, ptr %a1
|
|
%t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50)
|
|
%t52 = load i64, ptr %t49
|
|
%t53 = add i64 %t52, 1
|
|
call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t54 = load ptr, ptr %t48
|
|
%t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52
|
|
store %S.ast.Node %t51, ptr %t55
|
|
store i64 %t53, ptr %t49
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.948, i64 1, i64 0 })
|
|
%t58 = xor i1 %t57, true
|
|
br i1 %t58, label %then1649, label %endif1651
|
|
then1649:
|
|
br label %while.end1637
|
|
endif1651:
|
|
br label %while.cond1635
|
|
while.end1637:
|
|
br label %endif1634
|
|
endif1634:
|
|
%t59 = load ptr, ptr %a1
|
|
%t60 = icmp eq ptr %t59, null
|
|
br i1 %t60, label %panic1652, label %ok1653
|
|
panic1652:
|
|
call void @finch_panic(ptr @.str.949, i64 651, ptr @.str.950)
|
|
unreachable
|
|
ok1653:
|
|
%t61 = getelementptr inbounds %S.parser.Parser, ptr %t59, i32 0, i32 2
|
|
%t62 = load i64, ptr %t61
|
|
%t63 = sub i64 %t62, 1
|
|
store i64 %t63, ptr %t61
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.951, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.952, i64 3, i64 0 })
|
|
ret void
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parsePostfix(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a11 = alloca %S.ast.Node, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca %S.ast.Node, align 16
|
|
%a25 = alloca %S.ast.Node, align 16
|
|
%a41 = alloca %S.ast.Node, align 16
|
|
%a42 = alloca %S.ast.Node, align 16
|
|
%a48 = alloca %S.ast.Node, align 16
|
|
%a59 = alloca %S.ast.Node, align 16
|
|
%a60 = alloca %S.ast.Node, align 16
|
|
%a82 = alloca %S.ast.Node, align 16
|
|
%a83 = alloca %S.ast.Node, align 16
|
|
%a86 = alloca %S.ast.Node, align 16
|
|
%a87 = alloca %S.ast.Node, align 16
|
|
%a90 = alloca %S.ast.Node, align 16
|
|
%a91 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call %S.ast.Node @finch.parser.parsePrimary(ptr %t2)
|
|
store %S.ast.Node %t3, ptr %a4
|
|
br label %while.cond1654
|
|
while.cond1654:
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call i1 @finch.parser.sameLine(ptr %t5)
|
|
br i1 %t6, label %while.body1655, label %while.end1656
|
|
while.body1655:
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.953, i64 1, i64 0 })
|
|
br i1 %t8, label %then1657, label %else1658
|
|
then1657:
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.954, i64 6, i64 0 })
|
|
store %S.ast.Node %t10, ptr %a11
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = call %S.lexer.Token @finch.parser.next(ptr %t12)
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = call %S.lexer.Token @finch.parser.expect(ptr %t14, { ptr, i64, i64 } { ptr @.str.955, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.956, i64 16, i64 0 })
|
|
%t16 = extractvalue %S.lexer.Token %t15, 1
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
call void @finch_str_copy(ptr %a18, ptr %a17)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a18
|
|
%t20 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t19, ptr %t20
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1
|
|
%t23 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t23, ptr %a24
|
|
call void @finch.copy.S_ast_Node(ptr %a25, ptr %a24)
|
|
%t26 = load %S.ast.Node, ptr %a25
|
|
%t27 = load i64, ptr %t22
|
|
%t28 = add i64 %t27, 1
|
|
call void @finch_arr_reserve(ptr %t21, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t29 = load ptr, ptr %t21
|
|
%t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27
|
|
store %S.ast.Node %t26, ptr %t30
|
|
store i64 %t28, ptr %t22
|
|
%t31 = load ptr, ptr %a1
|
|
%t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.957, i64 1, i64 0 })
|
|
br label %logic.from1660
|
|
logic.from1660:
|
|
br i1 %t32, label %logic.rhs1661, label %logic.end1662
|
|
logic.rhs1661:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = call %S.lexer.Token @finch.parser.cur(ptr %t33)
|
|
%t35 = extractvalue %S.lexer.Token %t34, 4
|
|
%t36 = xor i1 %t35, true
|
|
br label %logic.rend1663
|
|
logic.rend1663:
|
|
br label %logic.end1662
|
|
logic.end1662:
|
|
%t37 = phi i1 [ false, %logic.from1660 ], [ %t36, %logic.rend1663 ]
|
|
br i1 %t37, label %then1664, label %endif1666
|
|
then1664:
|
|
%t38 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.958, i64 6, i64 0 }, ptr %t38
|
|
%t39 = load ptr, ptr %a1
|
|
call void @finch.parser.parseArgs(ptr %t39, ptr %a11)
|
|
br label %endif1666
|
|
endif1666:
|
|
%t40 = load %S.ast.Node, ptr %a11
|
|
store %S.ast.Node %t40, ptr %a41
|
|
call void @finch.copy.S_ast_Node(ptr %a42, ptr %a41)
|
|
%t43 = load %S.ast.Node, ptr %a42
|
|
store %S.ast.Node %t43, ptr %a4
|
|
br label %endif1659
|
|
else1658:
|
|
%t44 = load ptr, ptr %a1
|
|
%t45 = call i1 @finch.parser.at(ptr %t44, { ptr, i64, i64 } { ptr @.str.959, i64 1, i64 0 })
|
|
br i1 %t45, label %then1667, label %else1668
|
|
then1667:
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = call %S.ast.Node @finch.parser.node(ptr %t46, { ptr, i64, i64 } { ptr @.str.960, i64 5, i64 0 })
|
|
store %S.ast.Node %t47, ptr %a48
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = call %S.lexer.Token @finch.parser.next(ptr %t49)
|
|
%t51 = load ptr, ptr %a1
|
|
%t52 = icmp eq ptr %t51, null
|
|
br i1 %t52, label %panic1670, label %ok1671
|
|
panic1670:
|
|
call void @finch_panic(ptr @.str.961, i64 671, ptr @.str.962)
|
|
unreachable
|
|
ok1671:
|
|
%t53 = getelementptr inbounds %S.parser.Parser, ptr %t51, i32 0, i32 2
|
|
%t54 = load i64, ptr %t53
|
|
%t55 = add i64 %t54, 1
|
|
store i64 %t55, ptr %t53
|
|
%t56 = getelementptr inbounds %S.ast.Node, ptr %a48, i32 0, i32 9
|
|
%t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i32 0, i32 1
|
|
%t58 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t58, ptr %a59
|
|
call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59)
|
|
%t61 = load %S.ast.Node, ptr %a60
|
|
%t62 = load i64, ptr %t57
|
|
%t63 = add i64 %t62, 1
|
|
call void @finch_arr_reserve(ptr %t56, i64 %t63, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t64 = load ptr, ptr %t56
|
|
%t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 %t62
|
|
store %S.ast.Node %t61, ptr %t65
|
|
store i64 %t63, ptr %t57
|
|
%t66 = getelementptr inbounds %S.ast.Node, ptr %a48, i32 0, i32 9
|
|
%t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = call %S.ast.Node @finch.parser.parseExpr(ptr %t68)
|
|
%t70 = load i64, ptr %t67
|
|
%t71 = add i64 %t70, 1
|
|
call void @finch_arr_reserve(ptr %t66, i64 %t71, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t72 = load ptr, ptr %t66
|
|
%t73 = getelementptr inbounds %S.ast.Node, ptr %t72, i64 %t70
|
|
store %S.ast.Node %t69, ptr %t73
|
|
store i64 %t71, ptr %t67
|
|
%t74 = load ptr, ptr %a1
|
|
%t75 = icmp eq ptr %t74, null
|
|
br i1 %t75, label %panic1672, label %ok1673
|
|
panic1672:
|
|
call void @finch_panic(ptr @.str.963, i64 674, ptr @.str.964)
|
|
unreachable
|
|
ok1673:
|
|
%t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 2
|
|
%t77 = load i64, ptr %t76
|
|
%t78 = sub i64 %t77, 1
|
|
store i64 %t78, ptr %t76
|
|
%t79 = load ptr, ptr %a1
|
|
%t80 = call %S.lexer.Token @finch.parser.expect(ptr %t79, { ptr, i64, i64 } { ptr @.str.965, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.966, i64 3, i64 0 })
|
|
%t81 = load %S.ast.Node, ptr %a48
|
|
store %S.ast.Node %t81, ptr %a82
|
|
call void @finch.copy.S_ast_Node(ptr %a83, ptr %a82)
|
|
%t84 = load %S.ast.Node, ptr %a83
|
|
store %S.ast.Node %t84, ptr %a4
|
|
br label %endif1669
|
|
else1668:
|
|
%t85 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t85, ptr %a86
|
|
call void @finch.copy.S_ast_Node(ptr %a87, ptr %a86)
|
|
%t88 = load %S.ast.Node, ptr %a87
|
|
ret %S.ast.Node %t88
|
|
endif1669:
|
|
br label %endif1659
|
|
endif1659:
|
|
br label %while.cond1654
|
|
while.end1656:
|
|
%t89 = load %S.ast.Node, ptr %a4
|
|
store %S.ast.Node %t89, ptr %a90
|
|
call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90)
|
|
%t92 = load %S.ast.Node, ptr %a91
|
|
ret %S.ast.Node %t92
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.parser.parsePrimary(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a4 = alloca %S.lexer.Token, align 16
|
|
%a7 = alloca %S.ast.Node, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca %S.ast.Node, align 16
|
|
%a46 = alloca %S.ast.Node, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca %S.ast.Node, align 16
|
|
%a64 = alloca %S.ast.Node, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca %S.ast.Node, align 16
|
|
%a87 = alloca %S.ast.Node, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca %S.ast.Node, align 16
|
|
%a99 = alloca %S.ast.Node, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca %S.ast.Node, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca %S.ast.Node, align 16
|
|
%a203 = alloca %S.ast.Node, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca %S.ast.Node, align 16
|
|
%a265 = alloca %S.ast.Node, align 16
|
|
%a277 = alloca %S.ast.Node, align 16
|
|
%a278 = alloca %S.ast.Node, align 16
|
|
%a282 = alloca %S.ast.Node, align 16
|
|
%a283 = alloca %S.ast.Node, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca %S.ast.Node, align 16
|
|
%a299 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call %S.lexer.Token @finch.parser.cur(ptr %t2)
|
|
store %S.lexer.Token %t3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.967, 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.968, i64 3, i64 0 }, ptr %a16
|
|
%t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16)
|
|
%t18 = icmp ne i32 %t17, 0
|
|
br label %logic.from1674
|
|
logic.from1674:
|
|
br i1 %t18, label %logic.end1676, label %logic.rhs1675
|
|
logic.rhs1675:
|
|
%t19 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t19, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.969, i64 5, i64 0 }, ptr %a21
|
|
%t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21)
|
|
%t23 = icmp ne i32 %t22, 0
|
|
br label %logic.rend1677
|
|
logic.rend1677:
|
|
br label %logic.end1676
|
|
logic.end1676:
|
|
%t24 = phi i1 [ true, %logic.from1674 ], [ %t23, %logic.rend1677 ]
|
|
br label %logic.from1678
|
|
logic.from1678:
|
|
br i1 %t24, label %logic.end1680, label %logic.rhs1679
|
|
logic.rhs1679:
|
|
%t25 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.970, i64 4, i64 0 }, ptr %a27
|
|
%t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27)
|
|
%t29 = icmp ne i32 %t28, 0
|
|
br label %logic.rend1681
|
|
logic.rend1681:
|
|
br label %logic.end1680
|
|
logic.end1680:
|
|
%t30 = phi i1 [ true, %logic.from1678 ], [ %t29, %logic.rend1681 ]
|
|
br i1 %t30, label %then1682, label %endif1684
|
|
then1682:
|
|
%t31 = load ptr, ptr %a1
|
|
%t32 = call %S.lexer.Token @finch.parser.next(ptr %t31)
|
|
%t33 = load { ptr, i64, i64 }, ptr %a13
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } %t33, ptr %a35
|
|
call void @finch_str_copy(ptr %a36, ptr %a35)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a36
|
|
store { ptr, i64, i64 } %t37, ptr %t34
|
|
%t38 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1
|
|
%t39 = load { ptr, i64, i64 }, ptr %t38
|
|
%t40 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t39, ptr %a41
|
|
call void @finch_str_copy(ptr %a42, ptr %a41)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a42
|
|
store { ptr, i64, i64 } %t43, ptr %t40
|
|
%t44 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t44, ptr %a45
|
|
call void @finch.copy.S_ast_Node(ptr %a46, ptr %a45)
|
|
%t47 = load %S.ast.Node, ptr %a46
|
|
ret %S.ast.Node %t47
|
|
endif1684:
|
|
%t48 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
store { ptr, i64, i64 } { ptr @.str.971, i64 6, i64 0 }, ptr %a50
|
|
%t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50)
|
|
%t52 = icmp ne i32 %t51, 0
|
|
br i1 %t52, label %then1685, label %endif1687
|
|
then1685:
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = call %S.lexer.Token @finch.parser.next(ptr %t53)
|
|
%t55 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.972, i64 3, i64 0 }, ptr %t55
|
|
%t56 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1
|
|
%t57 = load { ptr, i64, i64 }, ptr %t56
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t57, ptr %a59
|
|
call void @finch_str_copy(ptr %a60, ptr %a59)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a60
|
|
store { ptr, i64, i64 } %t61, ptr %t58
|
|
%t62 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t62, ptr %a63
|
|
call void @finch.copy.S_ast_Node(ptr %a64, ptr %a63)
|
|
%t65 = load %S.ast.Node, ptr %a64
|
|
ret %S.ast.Node %t65
|
|
endif1687:
|
|
%t66 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t66, ptr %a67
|
|
store { ptr, i64, i64 } { ptr @.str.973, i64 4, i64 0 }, ptr %a68
|
|
%t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68)
|
|
%t70 = icmp ne i32 %t69, 0
|
|
br label %logic.from1688
|
|
logic.from1688:
|
|
br i1 %t70, label %logic.end1690, label %logic.rhs1689
|
|
logic.rhs1689:
|
|
%t71 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t71, ptr %a72
|
|
store { ptr, i64, i64 } { ptr @.str.974, i64 5, i64 0 }, ptr %a73
|
|
%t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73)
|
|
%t75 = icmp ne i32 %t74, 0
|
|
br label %logic.rend1691
|
|
logic.rend1691:
|
|
br label %logic.end1690
|
|
logic.end1690:
|
|
%t76 = phi i1 [ true, %logic.from1688 ], [ %t75, %logic.rend1691 ]
|
|
br i1 %t76, label %then1692, label %endif1694
|
|
then1692:
|
|
%t77 = load ptr, ptr %a1
|
|
%t78 = call %S.lexer.Token @finch.parser.next(ptr %t77)
|
|
%t79 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.975, i64 4, i64 0 }, ptr %t79
|
|
%t80 = load { ptr, i64, i64 }, ptr %a13
|
|
%t81 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t80, ptr %a82
|
|
call void @finch_str_copy(ptr %a83, ptr %a82)
|
|
%t84 = load { ptr, i64, i64 }, ptr %a83
|
|
store { ptr, i64, i64 } %t84, ptr %t81
|
|
%t85 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t85, ptr %a86
|
|
call void @finch.copy.S_ast_Node(ptr %a87, ptr %a86)
|
|
%t88 = load %S.ast.Node, ptr %a87
|
|
ret %S.ast.Node %t88
|
|
endif1694:
|
|
%t89 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t89, ptr %a90
|
|
store { ptr, i64, i64 } { ptr @.str.976, i64 4, i64 0 }, ptr %a91
|
|
%t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91)
|
|
%t93 = icmp ne i32 %t92, 0
|
|
br i1 %t93, label %then1695, label %endif1697
|
|
then1695:
|
|
%t94 = load ptr, ptr %a1
|
|
%t95 = call %S.lexer.Token @finch.parser.next(ptr %t94)
|
|
%t96 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.977, i64 4, i64 0 }, ptr %t96
|
|
%t97 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t97, ptr %a98
|
|
call void @finch.copy.S_ast_Node(ptr %a99, ptr %a98)
|
|
%t100 = load %S.ast.Node, ptr %a99
|
|
ret %S.ast.Node %t100
|
|
endif1697:
|
|
%t101 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t101, ptr %a102
|
|
store { ptr, i64, i64 } { ptr @.str.978, i64 1, i64 0 }, ptr %a103
|
|
%t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103)
|
|
%t105 = icmp ne i32 %t104, 0
|
|
br i1 %t105, label %then1698, label %endif1700
|
|
then1698:
|
|
%t106 = load ptr, ptr %a1
|
|
%t107 = call %S.lexer.Token @finch.parser.next(ptr %t106)
|
|
%t108 = load ptr, ptr %a1
|
|
%t109 = icmp eq ptr %t108, null
|
|
br i1 %t109, label %panic1701, label %ok1702
|
|
panic1701:
|
|
call void @finch_panic(ptr @.str.979, i64 713, ptr @.str.980)
|
|
unreachable
|
|
ok1702:
|
|
%t110 = getelementptr inbounds %S.parser.Parser, ptr %t108, i32 0, i32 2
|
|
%t111 = load i64, ptr %t110
|
|
%t112 = add i64 %t111, 1
|
|
store i64 %t112, ptr %t110
|
|
%t113 = load ptr, ptr %a1
|
|
%t114 = call %S.ast.Node @finch.parser.parseExpr(ptr %t113)
|
|
store %S.ast.Node %t114, ptr %a115
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = icmp eq ptr %t116, null
|
|
br i1 %t117, label %panic1703, label %ok1704
|
|
panic1703:
|
|
call void @finch_panic(ptr @.str.981, i64 715, ptr @.str.982)
|
|
unreachable
|
|
ok1704:
|
|
%t118 = getelementptr inbounds %S.parser.Parser, ptr %t116, i32 0, i32 2
|
|
%t119 = load i64, ptr %t118
|
|
%t120 = sub i64 %t119, 1
|
|
store i64 %t120, ptr %t118
|
|
%t121 = load ptr, ptr %a1
|
|
%t122 = call %S.lexer.Token @finch.parser.expect(ptr %t121, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.984, i64 3, i64 0 })
|
|
%t123 = load %S.ast.Node, ptr %a115
|
|
ret %S.ast.Node %t123
|
|
endif1700:
|
|
%t124 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t124, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.985, i64 5, i64 0 }, ptr %a126
|
|
%t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126)
|
|
%t128 = icmp ne i32 %t127, 0
|
|
br i1 %t128, label %then1705, label %endif1707
|
|
then1705:
|
|
%t129 = load ptr, ptr %a1
|
|
%t130 = call %S.ast.Node @finch.parser.parseMatch(ptr %t129, i1 true)
|
|
ret %S.ast.Node %t130
|
|
endif1707:
|
|
%t131 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t131, ptr %a132
|
|
store { ptr, i64, i64 } { ptr @.str.986, i64 1, i64 0 }, ptr %a133
|
|
%t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133)
|
|
%t135 = icmp ne i32 %t134, 0
|
|
br i1 %t135, label %then1708, label %endif1710
|
|
then1708:
|
|
%t136 = load ptr, ptr %a1
|
|
%t137 = call %S.lexer.Token @finch.parser.next(ptr %t136)
|
|
%t138 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.987, i64 5, i64 0 }, ptr %t138
|
|
%t139 = load ptr, ptr %a1
|
|
%t140 = icmp eq ptr %t139, null
|
|
br i1 %t140, label %panic1711, label %ok1712
|
|
panic1711:
|
|
call void @finch_panic(ptr @.str.988, i64 725, ptr @.str.989)
|
|
unreachable
|
|
ok1712:
|
|
%t141 = getelementptr inbounds %S.parser.Parser, ptr %t139, i32 0, i32 2
|
|
%t142 = load i64, ptr %t141
|
|
%t143 = add i64 %t142, 1
|
|
store i64 %t143, ptr %t141
|
|
%t144 = load ptr, ptr %a1
|
|
%t145 = call i1 @finch.parser.at(ptr %t144, { ptr, i64, i64 } { ptr @.str.990, i64 1, i64 0 })
|
|
br label %logic.from1713
|
|
logic.from1713:
|
|
br i1 %t145, label %logic.rhs1714, label %logic.end1715
|
|
logic.rhs1714:
|
|
%t146 = load ptr, ptr %a1
|
|
%t147 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t146, i64 1)
|
|
store { ptr, i64, i64 } %t147, ptr %a148
|
|
store { ptr, i64, i64 } { ptr @.str.991, i64 1, i64 0 }, ptr %a149
|
|
%t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149)
|
|
%t151 = icmp ne i32 %t150, 0
|
|
br label %logic.rend1716
|
|
logic.rend1716:
|
|
br label %logic.end1715
|
|
logic.end1715:
|
|
%t152 = phi i1 [ false, %logic.from1713 ], [ %t151, %logic.rend1716 ]
|
|
br i1 %t152, label %then1717, label %endif1719
|
|
then1717:
|
|
%t153 = load ptr, ptr %a1
|
|
%t154 = call %S.lexer.Token @finch.parser.next(ptr %t153)
|
|
%t155 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.992, i64 3, i64 0 }, ptr %t155
|
|
br label %endif1719
|
|
endif1719:
|
|
br label %while.cond1720
|
|
while.cond1720:
|
|
%t156 = load ptr, ptr %a1
|
|
%t157 = call i1 @finch.parser.at(ptr %t156, { ptr, i64, i64 } { ptr @.str.993, i64 1, i64 0 })
|
|
%t158 = xor i1 %t157, true
|
|
br i1 %t158, label %while.body1721, label %while.end1722
|
|
while.body1721:
|
|
%t159 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9
|
|
%t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %t159, i32 0, i32 1
|
|
%t161 = load ptr, ptr %a1
|
|
%t162 = call %S.ast.Node @finch.parser.parseExpr(ptr %t161)
|
|
%t163 = load i64, ptr %t160
|
|
%t164 = add i64 %t163, 1
|
|
call void @finch_arr_reserve(ptr %t159, i64 %t164, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t165 = load ptr, ptr %t159
|
|
%t166 = getelementptr inbounds %S.ast.Node, ptr %t165, i64 %t163
|
|
store %S.ast.Node %t162, ptr %t166
|
|
store i64 %t164, ptr %t160
|
|
%t167 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9
|
|
%t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1
|
|
%t169 = load i64, ptr %t168
|
|
%t170 = icmp eq i64 %t169, 1
|
|
br label %logic.from1723
|
|
logic.from1723:
|
|
br i1 %t170, label %logic.rhs1724, label %logic.end1725
|
|
logic.rhs1724:
|
|
%t171 = load ptr, ptr %a1
|
|
%t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.994, i64 1, i64 0 })
|
|
br label %logic.rend1726
|
|
logic.rend1726:
|
|
br label %logic.end1725
|
|
logic.end1725:
|
|
%t173 = phi i1 [ false, %logic.from1723 ], [ %t172, %logic.rend1726 ]
|
|
br i1 %t173, label %then1727, label %endif1729
|
|
then1727:
|
|
%t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.995, i64 3, i64 0 }, ptr %t174
|
|
br label %endif1729
|
|
endif1729:
|
|
%t175 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
%t176 = load { ptr, i64, i64 }, ptr %t175
|
|
store { ptr, i64, i64 } %t176, ptr %a177
|
|
store { ptr, i64, i64 } { ptr @.str.996, i64 3, i64 0 }, ptr %a178
|
|
%t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178)
|
|
%t180 = icmp ne i32 %t179, 0
|
|
br i1 %t180, label %then1730, label %endif1732
|
|
then1730:
|
|
%t181 = load ptr, ptr %a1
|
|
%t182 = call %S.lexer.Token @finch.parser.expect(ptr %t181, { ptr, i64, i64 } { ptr @.str.997, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.998, i64 41, i64 0 })
|
|
%t183 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9
|
|
%t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = call %S.ast.Node @finch.parser.parseExpr(ptr %t185)
|
|
%t187 = load i64, ptr %t184
|
|
%t188 = add i64 %t187, 1
|
|
call void @finch_arr_reserve(ptr %t183, i64 %t188, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t189 = load ptr, ptr %t183
|
|
%t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187
|
|
store %S.ast.Node %t186, ptr %t190
|
|
store i64 %t188, ptr %t184
|
|
br label %endif1732
|
|
endif1732:
|
|
%t191 = load ptr, ptr %a1
|
|
%t192 = call i1 @finch.parser.accept(ptr %t191, { ptr, i64, i64 } { ptr @.str.999, i64 1, i64 0 })
|
|
%t193 = xor i1 %t192, true
|
|
br i1 %t193, label %then1733, label %endif1735
|
|
then1733:
|
|
br label %while.end1722
|
|
endif1735:
|
|
br label %while.cond1720
|
|
while.end1722:
|
|
%t194 = load ptr, ptr %a1
|
|
%t195 = icmp eq ptr %t194, null
|
|
br i1 %t195, label %panic1736, label %ok1737
|
|
panic1736:
|
|
call void @finch_panic(ptr @.str.1000, i64 743, ptr @.str.1001)
|
|
unreachable
|
|
ok1737:
|
|
%t196 = getelementptr inbounds %S.parser.Parser, ptr %t194, i32 0, i32 2
|
|
%t197 = load i64, ptr %t196
|
|
%t198 = sub i64 %t197, 1
|
|
store i64 %t198, ptr %t196
|
|
%t199 = load ptr, ptr %a1
|
|
%t200 = call %S.lexer.Token @finch.parser.expect(ptr %t199, { ptr, i64, i64 } { ptr @.str.1002, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1003, i64 3, i64 0 })
|
|
%t201 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t201, ptr %a202
|
|
call void @finch.copy.S_ast_Node(ptr %a203, ptr %a202)
|
|
%t204 = load %S.ast.Node, ptr %a203
|
|
ret %S.ast.Node %t204
|
|
endif1710:
|
|
%t205 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t205, ptr %a206
|
|
store { ptr, i64, i64 } { ptr @.str.1004, i64 5, i64 0 }, ptr %a207
|
|
%t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207)
|
|
%t209 = icmp ne i32 %t208, 0
|
|
br i1 %t209, label %then1738, label %endif1740
|
|
then1738:
|
|
%t210 = load ptr, ptr %a1
|
|
%t211 = call %S.lexer.Token @finch.parser.next(ptr %t210)
|
|
%t212 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1
|
|
%t213 = load { ptr, i64, i64 }, ptr %t212
|
|
%t214 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t213, ptr %a215
|
|
call void @finch_str_copy(ptr %a216, ptr %a215)
|
|
%t217 = load { ptr, i64, i64 }, ptr %a216
|
|
store { ptr, i64, i64 } %t217, ptr %t214
|
|
%t218 = load ptr, ptr %a1
|
|
%t219 = call i1 @finch.parser.at(ptr %t218, { ptr, i64, i64 } { ptr @.str.1005, i64 1, i64 0 })
|
|
br label %logic.from1741
|
|
logic.from1741:
|
|
br i1 %t219, label %logic.rhs1742, label %logic.end1743
|
|
logic.rhs1742:
|
|
%t220 = load ptr, ptr %a1
|
|
%t221 = icmp eq ptr %t220, null
|
|
br i1 %t221, label %panic1744, label %ok1745
|
|
panic1744:
|
|
call void @finch_panic(ptr @.str.1006, i64 750, ptr @.str.1007)
|
|
unreachable
|
|
ok1745:
|
|
%t222 = getelementptr inbounds %S.parser.Parser, ptr %t220, i32 0, i32 0
|
|
%t223 = load ptr, ptr %a1
|
|
%t224 = icmp eq ptr %t223, null
|
|
br i1 %t224, label %panic1746, label %ok1747
|
|
panic1746:
|
|
call void @finch_panic(ptr @.str.1008, i64 750, ptr @.str.1009)
|
|
unreachable
|
|
ok1747:
|
|
%t225 = getelementptr inbounds %S.parser.Parser, ptr %t223, i32 0, i32 1
|
|
%t226 = load i64, ptr %t225
|
|
%t227 = sub i64 %t226, 1
|
|
%t228 = load { ptr, i64, i64 }, ptr %t222
|
|
%t229 = extractvalue { ptr, i64, i64 } %t228, 1
|
|
%t230 = icmp uge i64 %t227, %t229
|
|
br i1 %t230, label %range1748, label %inrange1749
|
|
range1748:
|
|
call void @finch_panic_index(ptr @.str.1010, i64 750, i64 %t227, i64 %t229)
|
|
unreachable
|
|
inrange1749:
|
|
%t231 = extractvalue { ptr, i64, i64 } %t228, 0
|
|
%t232 = getelementptr inbounds %S.lexer.Token, ptr %t231, i64 %t227
|
|
%t233 = getelementptr inbounds %S.lexer.Token, ptr %t232, i32 0, i32 0
|
|
%t234 = load { ptr, i64, i64 }, ptr %t233
|
|
store { ptr, i64, i64 } %t234, ptr %a235
|
|
store { ptr, i64, i64 } { ptr @.str.1011, i64 5, i64 0 }, ptr %a236
|
|
%t237 = call i32 @finch_str_eq(ptr %a235, ptr %a236)
|
|
%t238 = icmp ne i32 %t237, 0
|
|
br label %logic.rend1750
|
|
logic.rend1750:
|
|
br label %logic.end1743
|
|
logic.end1743:
|
|
%t239 = phi i1 [ false, %logic.from1741 ], [ %t238, %logic.rend1750 ]
|
|
br label %logic.from1751
|
|
logic.from1751:
|
|
br i1 %t239, label %logic.rhs1752, label %logic.end1753
|
|
logic.rhs1752:
|
|
%t240 = load ptr, ptr %a1
|
|
%t241 = call i1 @finch.parser.genericCallAheadFrom(ptr %t240)
|
|
br label %logic.rend1754
|
|
logic.rend1754:
|
|
br label %logic.end1753
|
|
logic.end1753:
|
|
%t242 = phi i1 [ false, %logic.from1751 ], [ %t241, %logic.rend1754 ]
|
|
br i1 %t242, label %then1755, label %endif1757
|
|
then1755:
|
|
%t243 = load ptr, ptr %a1
|
|
%t244 = call %S.lexer.Token @finch.parser.next(ptr %t243)
|
|
%t245 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1012, i64 5, i64 0 }, 0
|
|
%t246 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5
|
|
store %S.ast.Type %t245, ptr %t246
|
|
br label %while.cond1758
|
|
while.cond1758:
|
|
br label %while.body1759
|
|
while.body1759:
|
|
%t247 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5
|
|
%t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i32 0, i32 1
|
|
%t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1
|
|
%t250 = load ptr, ptr %a1
|
|
%t251 = call %S.ast.Type @finch.parser.parseType(ptr %t250)
|
|
%t252 = load i64, ptr %t249
|
|
%t253 = add i64 %t252, 1
|
|
call void @finch_arr_reserve(ptr %t248, i64 %t253, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t254 = load ptr, ptr %t248
|
|
%t255 = getelementptr inbounds %S.ast.Type, ptr %t254, i64 %t252
|
|
store %S.ast.Type %t251, ptr %t255
|
|
store i64 %t253, ptr %t249
|
|
%t256 = load ptr, ptr %a1
|
|
%t257 = call i1 @finch.parser.accept(ptr %t256, { ptr, i64, i64 } { ptr @.str.1013, i64 1, i64 0 })
|
|
%t258 = xor i1 %t257, true
|
|
br i1 %t258, label %then1761, label %endif1763
|
|
then1761:
|
|
br label %while.end1760
|
|
endif1763:
|
|
br label %while.cond1758
|
|
while.end1760:
|
|
%t259 = load ptr, ptr %a1
|
|
%t260 = call %S.lexer.Token @finch.parser.expect(ptr %t259, { ptr, i64, i64 } { ptr @.str.1014, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1015, i64 28, i64 0 })
|
|
%t261 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.1016, i64 4, i64 0 }, ptr %t261
|
|
%t262 = load ptr, ptr %a1
|
|
call void @finch.parser.parseArgs(ptr %t262, ptr %a7)
|
|
%t263 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t263, ptr %a264
|
|
call void @finch.copy.S_ast_Node(ptr %a265, ptr %a264)
|
|
%t266 = load %S.ast.Node, ptr %a265
|
|
ret %S.ast.Node %t266
|
|
endif1757:
|
|
%t267 = load ptr, ptr %a1
|
|
%t268 = call i1 @finch.parser.at(ptr %t267, { ptr, i64, i64 } { ptr @.str.1017, i64 1, i64 0 })
|
|
br label %logic.from1764
|
|
logic.from1764:
|
|
br i1 %t268, label %logic.rhs1765, label %logic.end1766
|
|
logic.rhs1765:
|
|
%t269 = load ptr, ptr %a1
|
|
%t270 = call %S.lexer.Token @finch.parser.cur(ptr %t269)
|
|
%t271 = extractvalue %S.lexer.Token %t270, 4
|
|
%t272 = xor i1 %t271, true
|
|
br label %logic.rend1767
|
|
logic.rend1767:
|
|
br label %logic.end1766
|
|
logic.end1766:
|
|
%t273 = phi i1 [ false, %logic.from1764 ], [ %t272, %logic.rend1767 ]
|
|
br i1 %t273, label %then1768, label %endif1770
|
|
then1768:
|
|
%t274 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.1018, i64 4, i64 0 }, ptr %t274
|
|
%t275 = load ptr, ptr %a1
|
|
call void @finch.parser.parseArgs(ptr %t275, ptr %a7)
|
|
%t276 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t276, ptr %a277
|
|
call void @finch.copy.S_ast_Node(ptr %a278, ptr %a277)
|
|
%t279 = load %S.ast.Node, ptr %a278
|
|
ret %S.ast.Node %t279
|
|
endif1770:
|
|
%t280 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.1019, i64 3, i64 0 }, ptr %t280
|
|
%t281 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t281, ptr %a282
|
|
call void @finch.copy.S_ast_Node(ptr %a283, ptr %a282)
|
|
%t284 = load %S.ast.Node, ptr %a283
|
|
ret %S.ast.Node %t284
|
|
endif1740:
|
|
%t285 = load ptr, ptr %a1
|
|
%t286 = load %S.lexer.Token, ptr %a4
|
|
%t287 = load %S.lexer.Token, ptr %a4
|
|
%t288 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t287)
|
|
store { ptr, i64, i64 } { ptr @.str.1020, i64 11, i64 0 }, ptr %a290
|
|
store { ptr, i64, i64 } %t288, ptr %a291
|
|
call void @finch_str_concat(ptr %a289, ptr %a290, ptr %a291)
|
|
%t292 = load { ptr, i64, i64 }, ptr %a289
|
|
store { ptr, i64, i64 } %t292, ptr %a294
|
|
store { ptr, i64, i64 } { ptr @.str.1021, i64 19, i64 0 }, ptr %a295
|
|
call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295)
|
|
%t296 = load { ptr, i64, i64 }, ptr %a293
|
|
call void @finch.parser.fail(ptr %t285, %S.lexer.Token %t286, { ptr, i64, i64 } %t296)
|
|
%t297 = load %S.ast.Node, ptr %a7
|
|
store %S.ast.Node %t297, ptr %a298
|
|
call void @finch.copy.S_ast_Node(ptr %a299, ptr %a298)
|
|
%t300 = load %S.ast.Node, ptr %a299
|
|
ret %S.ast.Node %t300
|
|
}
|
|
|
|
define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca %S.parser.Parser, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
call void @finch.copy.arr_S_lexer_Token(ptr %a6, ptr %a5)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
%t8 = insertvalue %S.parser.Parser zeroinitializer, { ptr, i64, i64 } %t7, 0
|
|
%t9 = insertvalue %S.parser.Parser %t8, i64 0, 1
|
|
%t10 = insertvalue %S.parser.Parser %t9, i64 0, 2
|
|
%t11 = load i64, ptr %a2
|
|
%t12 = insertvalue %S.parser.Parser %t10, i64 %t11, 3
|
|
%t13 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
call void @finch_str_copy(ptr %a15, ptr %a14)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a15
|
|
%t17 = insertvalue %S.parser.Parser %t12, { ptr, i64, i64 } %t16, 4
|
|
store %S.parser.Parser %t17, ptr %a18
|
|
%t19 = call %S.ast.Program @finch.parser.parseProgram(ptr %a18)
|
|
ret %S.ast.Program %t19
|
|
}
|
|
|
|
define internal void @finch.gen.fail(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = icmp eq ptr %t4, null
|
|
br i1 %t5, label %panic1771, label %ok1772
|
|
panic1771:
|
|
call void @finch_panic(ptr @.str.1022, i64 172, ptr @.str.1023)
|
|
unreachable
|
|
ok1772:
|
|
%t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 1
|
|
%t7 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t8 = load i64, ptr %t7
|
|
%t9 = load { ptr, i64, i64 }, ptr %t6
|
|
%t10 = extractvalue { ptr, i64, i64 } %t9, 1
|
|
%t11 = icmp uge i64 %t8, %t10
|
|
br i1 %t11, label %range1773, label %inrange1774
|
|
range1773:
|
|
call void @finch_panic_index(ptr @.str.1024, i64 172, i64 %t8, i64 %t10)
|
|
unreachable
|
|
inrange1774:
|
|
%t12 = extractvalue { ptr, i64, i64 } %t9, 0
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i64 %t8
|
|
%t14 = load { ptr, i64, i64 }, ptr %t13
|
|
store { ptr, i64, i64 } %t14, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.1025, i64 1, i64 0 }, ptr %a17
|
|
call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a15
|
|
%t19 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t20 = load i64, ptr %t19
|
|
call void @finch_str_from_int(ptr %a21, i64 %t20)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a21
|
|
store { ptr, i64, i64 } %t18, ptr %a24
|
|
store { ptr, i64, i64 } %t22, ptr %a25
|
|
call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t26, ptr %a28
|
|
store { ptr, i64, i64 } { ptr @.str.1026, i64 1, i64 0 }, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
%t31 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12
|
|
%t32 = load i64, ptr %t31
|
|
call void @finch_str_from_int(ptr %a33, i64 %t32)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } %t30, ptr %a36
|
|
store { ptr, i64, i64 } %t34, ptr %a37
|
|
call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } %t38, ptr %a40
|
|
store { ptr, i64, i64 } { ptr @.str.1027, i64 9, i64 0 }, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
%t43 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t42, ptr %a45
|
|
store { ptr, i64, i64 } %t43, ptr %a46
|
|
call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46)
|
|
%t47 = load { ptr, i64, i64 }, ptr %a44
|
|
%t48 = load ptr, ptr %a1
|
|
%t49 = icmp eq ptr %t48, null
|
|
br i1 %t49, label %panic1775, label %ok1776
|
|
panic1775:
|
|
call void @finch_panic(ptr @.str.1028, i64 172, ptr @.str.1029)
|
|
unreachable
|
|
ok1776:
|
|
%t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 19
|
|
%t51 = load { ptr, i64, i64 }, ptr %t50
|
|
store { ptr, i64, i64 } %t47, ptr %a53
|
|
store { ptr, i64, i64 } %t51, ptr %a54
|
|
call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a52
|
|
%t56 = extractvalue { ptr, i64, i64 } %t55, 1
|
|
%t57 = trunc i64 %t56 to i32
|
|
%t58 = extractvalue { ptr, i64, i64 } %t55, 0
|
|
%t59 = icmp eq ptr %t58, null
|
|
%t60 = select i1 %t59, ptr @.str.1030, ptr %t58
|
|
%t61 = call i32 (ptr, ...) @printf(ptr @.str.1031, i32 %t57, ptr %t60)
|
|
%t62 = call i32 (ptr, ...) @printf(ptr @.str.1032)
|
|
%t63 = trunc i64 1 to i32
|
|
%t64 = call i32 @fflush(ptr null)
|
|
call void @exit(i32 %t63)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.emit(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic1777, label %ok1778
|
|
panic1777:
|
|
call void @finch_panic(ptr @.str.1033, i64 178, ptr @.str.1034)
|
|
unreachable
|
|
ok1778:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 32
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = icmp sge i64 %t6, 0
|
|
br label %logic.from1779
|
|
logic.from1779:
|
|
br i1 %t7, label %logic.rhs1780, label %logic.end1781
|
|
logic.rhs1780:
|
|
%t8 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.1036, i64 5, i64 0 }, ptr %a11
|
|
%t12 = call i64 @finch_str_find(ptr %a9, ptr %a11)
|
|
%t13 = icmp sge i64 %t12, 0
|
|
br label %logic.rend1782
|
|
logic.rend1782:
|
|
br label %logic.end1781
|
|
logic.end1781:
|
|
%t14 = phi i1 [ false, %logic.from1779 ], [ %t13, %logic.rend1782 ]
|
|
br i1 %t14, label %then1783, label %endif1785
|
|
then1783:
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = icmp eq ptr %t15, null
|
|
br i1 %t16, label %panic1786, label %ok1787
|
|
panic1786:
|
|
call void @finch_panic(ptr @.str.1037, i64 179, ptr @.str.1038)
|
|
unreachable
|
|
ok1787:
|
|
%t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 4
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1
|
|
%t19 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1039, i64 2, i64 0 }, ptr %a21
|
|
store { ptr, i64, i64 } %t19, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } %t23, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.1040, i64 8, i64 0 }, ptr %a26
|
|
call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a24
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = call i64 @finch.gen.dbgLocation(ptr %t28)
|
|
call void @finch_str_from_int(ptr %a30, i64 %t29)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a30
|
|
store { ptr, i64, i64 } %t27, ptr %a33
|
|
store { ptr, i64, i64 } %t31, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
%t36 = load i64, ptr %t18
|
|
%t37 = add i64 %t36, 1
|
|
call void @finch_arr_reserve(ptr %t17, i64 %t37, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t38 = load ptr, ptr %t17
|
|
%t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t36
|
|
store { ptr, i64, i64 } %t35, ptr %t39
|
|
store i64 %t37, ptr %t18
|
|
ret void
|
|
endif1785:
|
|
%t40 = load ptr, ptr %a1
|
|
%t41 = icmp eq ptr %t40, null
|
|
br i1 %t41, label %panic1788, label %ok1789
|
|
panic1788:
|
|
call void @finch_panic(ptr @.str.1041, i64 182, ptr @.str.1042)
|
|
unreachable
|
|
ok1789:
|
|
%t42 = getelementptr inbounds %S.gen.Gen, ptr %t40, i32 0, i32 4
|
|
%t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1
|
|
%t44 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1043, i64 2, i64 0 }, ptr %a46
|
|
store { ptr, i64, i64 } %t44, ptr %a47
|
|
call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a45
|
|
%t49 = load i64, ptr %t43
|
|
%t50 = add i64 %t49, 1
|
|
call void @finch_arr_reserve(ptr %t42, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t51 = load ptr, ptr %t42
|
|
%t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49
|
|
store { ptr, i64, i64 } %t48, ptr %t52
|
|
store i64 %t50, ptr %t43
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.tmpName(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic1790, label %ok1791
|
|
panic1790:
|
|
call void @finch_panic(ptr @.str.1044, i64 186, ptr @.str.1045)
|
|
unreachable
|
|
ok1791:
|
|
%t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 6
|
|
%t5 = load i64, ptr %t4
|
|
%t6 = add i64 %t5, 1
|
|
store i64 %t6, ptr %t4
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = icmp eq ptr %t7, null
|
|
br i1 %t8, label %panic1792, label %ok1793
|
|
panic1792:
|
|
call void @finch_panic(ptr @.str.1047, i64 187, ptr @.str.1048)
|
|
unreachable
|
|
ok1793:
|
|
%t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 6
|
|
%t10 = load i64, ptr %t9
|
|
call void @finch_str_from_int(ptr %a11, i64 %t10)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.1046, i64 2, i64 0 }, ptr %a14
|
|
store { ptr, i64, i64 } %t12, ptr %a15
|
|
call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a13
|
|
ret { ptr, i64, i64 } %t16
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.newLabel(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic1794, label %ok1795
|
|
panic1794:
|
|
call void @finch_panic(ptr @.str.1049, i64 191, ptr @.str.1050)
|
|
unreachable
|
|
ok1795:
|
|
%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 %panic1796, label %ok1797
|
|
panic1796:
|
|
call void @finch_panic(ptr @.str.1051, i64 192, ptr @.str.1052)
|
|
unreachable
|
|
ok1797:
|
|
%t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 7
|
|
%t12 = load i64, ptr %t11
|
|
call void @finch_str_from_int(ptr %a13, i64 %t12)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t8, ptr %a16
|
|
store { ptr, i64, i64 } %t14, ptr %a17
|
|
call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a15
|
|
ret { ptr, i64, i64 } %t18
|
|
}
|
|
|
|
define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic1798, label %ok1799
|
|
panic1798:
|
|
call void @finch_panic(ptr @.str.1053, i64 196, ptr @.str.1054)
|
|
unreachable
|
|
ok1799:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 4
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1
|
|
%t7 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t7, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.1055, i64 1, i64 0 }, ptr %a10
|
|
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 %panic1800, label %ok1801
|
|
panic1800:
|
|
call void @finch_panic(ptr @.str.1056, i64 197, ptr @.str.1057)
|
|
unreachable
|
|
ok1801:
|
|
%t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9
|
|
store i1 false, ptr %t18
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.br(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic1802, label %ok1803
|
|
panic1802:
|
|
call void @finch_panic(ptr @.str.1058, i64 201, ptr @.str.1059)
|
|
unreachable
|
|
ok1803:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 9
|
|
%t6 = load i1, ptr %t5
|
|
%t7 = xor i1 %t6, true
|
|
br i1 %t7, label %then1804, label %endif1806
|
|
then1804:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1060, i64 10, i64 0 }, ptr %a11
|
|
store { ptr, i64, i64 } %t9, ptr %a12
|
|
call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a10
|
|
call void @finch.gen.emit(ptr %t8, { ptr, i64, i64 } %t13)
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = icmp eq ptr %t14, null
|
|
br i1 %t15, label %panic1807, label %ok1808
|
|
panic1807:
|
|
call void @finch_panic(ptr @.str.1061, i64 203, ptr @.str.1062)
|
|
unreachable
|
|
ok1808:
|
|
%t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 9
|
|
store i1 true, ptr %t16
|
|
br label %endif1806
|
|
endif1806:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.condBr(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1063, i64 6, i64 0 }, ptr %a8
|
|
store { ptr, i64, i64 } %t6, ptr %a9
|
|
call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9)
|
|
%t10 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t10, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.1064, i64 9, i64 0 }, ptr %a13
|
|
call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
%t15 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t14, ptr %a17
|
|
store { ptr, i64, i64 } %t15, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t19, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.1065, i64 9, i64 0 }, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
%t24 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t23, ptr %a26
|
|
store { ptr, i64, i64 } %t24, ptr %a27
|
|
call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a25
|
|
call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t28)
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = icmp eq ptr %t29, null
|
|
br i1 %t30, label %panic1809, label %ok1810
|
|
panic1809:
|
|
call void @finch_panic(ptr @.str.1066, i64 209, ptr @.str.1067)
|
|
unreachable
|
|
ok1810:
|
|
%t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 9
|
|
store i1 true, ptr %t31
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.alloca(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic1811, label %ok1812
|
|
panic1811:
|
|
call void @finch_panic(ptr @.str.1068, i64 213, ptr @.str.1069)
|
|
unreachable
|
|
ok1812:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 6
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = add i64 %t6, 1
|
|
store i64 %t7, ptr %t5
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = icmp eq ptr %t8, null
|
|
br i1 %t9, label %panic1813, label %ok1814
|
|
panic1813:
|
|
call void @finch_panic(ptr @.str.1071, i64 214, ptr @.str.1072)
|
|
unreachable
|
|
ok1814:
|
|
%t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 6
|
|
%t11 = load i64, ptr %t10
|
|
call void @finch_str_from_int(ptr %a12, i64 %t11)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.1070, i64 2, i64 0 }, ptr %a15
|
|
store { ptr, i64, i64 } %t13, ptr %a16
|
|
call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = icmp eq ptr %t19, null
|
|
br i1 %t20, label %panic1815, label %ok1816
|
|
panic1815:
|
|
call void @finch_panic(ptr @.str.1073, i64 215, ptr @.str.1074)
|
|
unreachable
|
|
ok1816:
|
|
%t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 5
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1
|
|
%t23 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.1075, i64 2, i64 0 }, ptr %a25
|
|
store { ptr, i64, i64 } %t23, ptr %a26
|
|
call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } %t27, ptr %a29
|
|
store { ptr, i64, i64 } { ptr @.str.1076, i64 10, i64 0 }, ptr %a30
|
|
call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a28
|
|
%t32 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t31, ptr %a34
|
|
store { ptr, i64, i64 } %t32, ptr %a35
|
|
call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35)
|
|
%t36 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } %t36, ptr %a38
|
|
store { ptr, i64, i64 } { ptr @.str.1077, i64 10, i64 0 }, ptr %a39
|
|
call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a37
|
|
%t41 = load i64, ptr %t22
|
|
%t42 = add i64 %t41, 1
|
|
call void @finch_arr_reserve(ptr %t21, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t43 = load ptr, ptr %t21
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41
|
|
store { ptr, i64, i64 } %t40, ptr %t44
|
|
store i64 %t42, ptr %t22
|
|
%t45 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t45, ptr %a46
|
|
call void @finch_str_copy(ptr %a47, ptr %a46)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a47
|
|
ret { ptr, i64, i64 } %t48
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = call { ptr, i64, i64 } @finch.gen.tmpName(ptr %t4)
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t8, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.1078, i64 8, i64 0 }, ptr %a11
|
|
call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a9
|
|
%t13 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t12, ptr %a15
|
|
store { ptr, i64, i64 } %t13, ptr %a16
|
|
call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t17, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.1079, i64 6, i64 0 }, ptr %a20
|
|
call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a18
|
|
%t22 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
store { ptr, i64, i64 } %t22, ptr %a25
|
|
call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
call void @finch_str_copy(ptr %a29, ptr %a28)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a29
|
|
ret { ptr, i64, i64 } %t30
|
|
}
|
|
|
|
define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1080, i64 6, i64 0 }, ptr %a8
|
|
store { ptr, i64, i64 } %t6, ptr %a9
|
|
call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9)
|
|
%t10 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t10, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.1081, i64 1, i64 0 }, ptr %a13
|
|
call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
%t15 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t14, ptr %a17
|
|
store { ptr, i64, i64 } %t15, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t19, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.1082, i64 6, i64 0 }, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
%t24 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t23, ptr %a26
|
|
store { ptr, i64, i64 } %t24, ptr %a27
|
|
call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a25
|
|
call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t28)
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.spill(ptr %p0, %S.gen.Val %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.gen.Val, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.gen.Val %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t6 = load %S.ast.Type, ptr %t5
|
|
%t7 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t4, %S.ast.Type %t6)
|
|
%t8 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } %t7)
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t13 = load %S.ast.Type, ptr %t12
|
|
%t14 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t11, %S.ast.Type %t13)
|
|
%t15 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t16 = load { ptr, i64, i64 }, ptr %t15
|
|
%t17 = load { ptr, i64, i64 }, ptr %a9
|
|
call void @finch.gen.store(ptr %t10, { ptr, i64, i64 } %t14, { ptr, i64, i64 } %t16, { ptr, i64, i64 } %t17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t18, ptr %a19
|
|
call void @finch_str_copy(ptr %a20, ptr %a19)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a20
|
|
ret { ptr, i64, i64 } %t21
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = call { ptr, i64, i64 } @finch.gen.tmpName(ptr %t3)
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t7, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.1083, i64 3, i64 0 }, ptr %a10
|
|
call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a8
|
|
%t12 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t11, ptr %a14
|
|
store { ptr, i64, i64 } %t12, ptr %a15
|
|
call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a13
|
|
call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
call void @finch_str_copy(ptr %a19, ptr %a18)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a19
|
|
ret { ptr, i64, i64 } %t20
|
|
}
|
|
|
|
define internal i1 @finch.gen.has({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca i64, align 16
|
|
%a8 = alloca i64, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t4 = load { ptr, i64, i64 }, ptr %a2
|
|
store i64 -1, ptr %a5
|
|
%t6 = load i64, ptr %t3
|
|
%t7 = load ptr, ptr %a1
|
|
store i64 0, ptr %a8
|
|
br label %find.cond1817
|
|
find.cond1817:
|
|
%t9 = load i64, ptr %a8
|
|
%t10 = icmp slt i64 %t9, %t6
|
|
br i1 %t10, label %find.body1818, label %find.end1821
|
|
find.body1818:
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i64 %t9
|
|
%t12 = load { ptr, i64, i64 }, ptr %t11
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
store { ptr, i64, i64 } %t4, ptr %a14
|
|
%t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14)
|
|
%t16 = icmp ne i32 %t15, 0
|
|
br i1 %t16, label %find.hit1819, label %find.next1820
|
|
find.hit1819:
|
|
store i64 %t9, ptr %a5
|
|
br label %find.end1821
|
|
find.next1820:
|
|
%t17 = add i64 %t9, 1
|
|
store i64 %t17, ptr %a8
|
|
br label %find.cond1817
|
|
find.end1821:
|
|
%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.1084, i64 3, i64 0 }, ptr %a10
|
|
%t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10)
|
|
%t12 = icmp ne i32 %t11, 0
|
|
br label %logic.from1822
|
|
logic.from1822:
|
|
br i1 %t12, label %logic.end1824, label %logic.rhs1823
|
|
logic.rhs1823:
|
|
%t13 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.1085, i64 2, i64 0 }, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp ne i32 %t16, 0
|
|
br label %logic.rend1825
|
|
logic.rend1825:
|
|
br label %logic.end1824
|
|
logic.end1824:
|
|
%t18 = phi i1 [ true, %logic.from1822 ], [ %t17, %logic.rend1825 ]
|
|
br label %logic.from1826
|
|
logic.from1826:
|
|
br i1 %t18, label %logic.end1828, label %logic.rhs1827
|
|
logic.rhs1827:
|
|
%t19 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t19, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.1086, i64 3, i64 0 }, ptr %a21
|
|
%t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21)
|
|
%t23 = icmp ne i32 %t22, 0
|
|
br label %logic.rend1829
|
|
logic.rend1829:
|
|
br label %logic.end1828
|
|
logic.end1828:
|
|
%t24 = phi i1 [ true, %logic.from1826 ], [ %t23, %logic.rend1829 ]
|
|
br label %logic.from1830
|
|
logic.from1830:
|
|
br i1 %t24, label %logic.end1832, label %logic.rhs1831
|
|
logic.rhs1831:
|
|
%t25 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.1087, i64 3, i64 0 }, ptr %a27
|
|
%t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27)
|
|
%t29 = icmp ne i32 %t28, 0
|
|
br label %logic.rend1833
|
|
logic.rend1833:
|
|
br label %logic.end1832
|
|
logic.end1832:
|
|
%t30 = phi i1 [ true, %logic.from1830 ], [ %t29, %logic.rend1833 ]
|
|
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.1088, i64 2, i64 0 }, ptr %a10
|
|
%t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10)
|
|
%t12 = icmp ne i32 %t11, 0
|
|
br label %logic.from1834
|
|
logic.from1834:
|
|
br i1 %t12, label %logic.end1836, label %logic.rhs1835
|
|
logic.rhs1835:
|
|
%t13 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.1089, i64 3, i64 0 }, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp ne i32 %t16, 0
|
|
br label %logic.rend1837
|
|
logic.rend1837:
|
|
br label %logic.end1836
|
|
logic.end1836:
|
|
%t18 = phi i1 [ true, %logic.from1834 ], [ %t17, %logic.rend1837 ]
|
|
br label %logic.from1838
|
|
logic.from1838:
|
|
br i1 %t18, label %logic.end1840, label %logic.rhs1839
|
|
logic.rhs1839:
|
|
%t19 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t19, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.1090, i64 3, i64 0 }, ptr %a21
|
|
%t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21)
|
|
%t23 = icmp ne i32 %t22, 0
|
|
br label %logic.rend1841
|
|
logic.rend1841:
|
|
br label %logic.end1840
|
|
logic.end1840:
|
|
%t24 = phi i1 [ true, %logic.from1838 ], [ %t23, %logic.rend1841 ]
|
|
br label %logic.from1842
|
|
logic.from1842:
|
|
br i1 %t24, label %logic.end1844, label %logic.rhs1843
|
|
logic.rhs1843:
|
|
%t25 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.1091, i64 3, i64 0 }, ptr %a27
|
|
%t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27)
|
|
%t29 = icmp ne i32 %t28, 0
|
|
br label %logic.rend1845
|
|
logic.rend1845:
|
|
br label %logic.end1844
|
|
logic.end1844:
|
|
%t30 = phi i1 [ true, %logic.from1842 ], [ %t29, %logic.rend1845 ]
|
|
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.from1846
|
|
logic.from1846:
|
|
br i1 %t3, label %logic.end1848, label %logic.rhs1847
|
|
logic.rhs1847:
|
|
%t4 = load %S.ast.Type, ptr %a1
|
|
%t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4)
|
|
br label %logic.rend1849
|
|
logic.rend1849:
|
|
br label %logic.end1848
|
|
logic.end1848:
|
|
%t6 = phi i1 [ true, %logic.from1846 ], [ %t5, %logic.rend1849 ]
|
|
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.1092, i64 5, i64 0 }, ptr %a5
|
|
%t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5)
|
|
%t7 = icmp ne i32 %t6, 0
|
|
br label %logic.from1850
|
|
logic.from1850:
|
|
br i1 %t7, label %logic.end1852, label %logic.rhs1851
|
|
logic.rhs1851:
|
|
%t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t9 = load { ptr, i64, i64 }, ptr %t8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.1093, i64 3, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br label %logic.rend1853
|
|
logic.rend1853:
|
|
br label %logic.end1852
|
|
logic.end1852:
|
|
%t14 = phi i1 [ true, %logic.from1850 ], [ %t13, %logic.rend1853 ]
|
|
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.from1854
|
|
logic.from1854:
|
|
br i1 %t3, label %logic.end1856, label %logic.rhs1855
|
|
logic.rhs1855:
|
|
%t4 = load %S.ast.Type, ptr %a1
|
|
%t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4)
|
|
br label %logic.rend1857
|
|
logic.rend1857:
|
|
br label %logic.end1856
|
|
logic.end1856:
|
|
%t6 = phi i1 [ true, %logic.from1854 ], [ %t5, %logic.rend1857 ]
|
|
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.1094, i64 4, i64 0 }, ptr %a10
|
|
%t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10)
|
|
%t12 = icmp ne i32 %t11, 0
|
|
br i1 %t12, label %then1858, label %endif1860
|
|
then1858:
|
|
ret i64 1
|
|
endif1860:
|
|
%t13 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.1095, i64 4, i64 0 }, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp ne i32 %t16, 0
|
|
br label %logic.from1861
|
|
logic.from1861:
|
|
br i1 %t17, label %logic.end1863, label %logic.rhs1862
|
|
logic.rhs1862:
|
|
%t18 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t18, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.1096, i64 2, i64 0 }, ptr %a20
|
|
%t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20)
|
|
%t22 = icmp ne i32 %t21, 0
|
|
br label %logic.rend1864
|
|
logic.rend1864:
|
|
br label %logic.end1863
|
|
logic.end1863:
|
|
%t23 = phi i1 [ true, %logic.from1861 ], [ %t22, %logic.rend1864 ]
|
|
br label %logic.from1865
|
|
logic.from1865:
|
|
br i1 %t23, label %logic.end1867, label %logic.rhs1866
|
|
logic.rhs1866:
|
|
%t24 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t24, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.1097, i64 2, i64 0 }, ptr %a26
|
|
%t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26)
|
|
%t28 = icmp ne i32 %t27, 0
|
|
br label %logic.rend1868
|
|
logic.rend1868:
|
|
br label %logic.end1867
|
|
logic.end1867:
|
|
%t29 = phi i1 [ true, %logic.from1865 ], [ %t28, %logic.rend1868 ]
|
|
br i1 %t29, label %then1869, label %endif1871
|
|
then1869:
|
|
ret i64 8
|
|
endif1871:
|
|
%t30 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t30, ptr %a31
|
|
store { ptr, i64, i64 } { ptr @.str.1098, i64 3, i64 0 }, ptr %a32
|
|
%t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32)
|
|
%t34 = icmp ne i32 %t33, 0
|
|
br label %logic.from1872
|
|
logic.from1872:
|
|
br i1 %t34, label %logic.end1874, label %logic.rhs1873
|
|
logic.rhs1873:
|
|
%t35 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.1099, i64 3, i64 0 }, ptr %a37
|
|
%t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37)
|
|
%t39 = icmp ne i32 %t38, 0
|
|
br label %logic.rend1875
|
|
logic.rend1875:
|
|
br label %logic.end1874
|
|
logic.end1874:
|
|
%t40 = phi i1 [ true, %logic.from1872 ], [ %t39, %logic.rend1875 ]
|
|
br i1 %t40, label %then1876, label %endif1878
|
|
then1876:
|
|
ret i64 16
|
|
endif1878:
|
|
%t41 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t41, ptr %a42
|
|
store { ptr, i64, i64 } { ptr @.str.1100, i64 3, i64 0 }, ptr %a43
|
|
%t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43)
|
|
%t45 = icmp ne i32 %t44, 0
|
|
br label %logic.from1879
|
|
logic.from1879:
|
|
br i1 %t45, label %logic.end1881, label %logic.rhs1880
|
|
logic.rhs1880:
|
|
%t46 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t46, ptr %a47
|
|
store { ptr, i64, i64 } { ptr @.str.1101, i64 3, i64 0 }, ptr %a48
|
|
%t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48)
|
|
%t50 = icmp ne i32 %t49, 0
|
|
br label %logic.rend1882
|
|
logic.rend1882:
|
|
br label %logic.end1881
|
|
logic.end1881:
|
|
%t51 = phi i1 [ true, %logic.from1879 ], [ %t50, %logic.rend1882 ]
|
|
br label %logic.from1883
|
|
logic.from1883:
|
|
br i1 %t51, label %logic.end1885, label %logic.rhs1884
|
|
logic.rhs1884:
|
|
%t52 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.1102, i64 3, i64 0 }, ptr %a54
|
|
%t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54)
|
|
%t56 = icmp ne i32 %t55, 0
|
|
br label %logic.rend1886
|
|
logic.rend1886:
|
|
br label %logic.end1885
|
|
logic.end1885:
|
|
%t57 = phi i1 [ true, %logic.from1883 ], [ %t56, %logic.rend1886 ]
|
|
br i1 %t57, label %then1887, label %endif1889
|
|
then1887:
|
|
ret i64 32
|
|
endif1889:
|
|
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.from1890
|
|
logic.from1890:
|
|
br i1 %t5, label %logic.end1892, label %logic.rhs1891
|
|
logic.rhs1891:
|
|
%t6 = load %S.ast.Type, ptr %a2
|
|
%t7 = call i1 @finch.gen.isInt(%S.ast.Type %t6)
|
|
%t8 = xor i1 %t7, true
|
|
br label %logic.rend1893
|
|
logic.rend1893:
|
|
br label %logic.end1892
|
|
logic.end1892:
|
|
%t9 = phi i1 [ true, %logic.from1890 ], [ %t8, %logic.rend1893 ]
|
|
br i1 %t9, label %then1894, label %endif1896
|
|
then1894:
|
|
ret i1 false
|
|
endif1896:
|
|
%t10 = load %S.ast.Type, ptr %a1
|
|
%t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10)
|
|
br label %logic.from1897
|
|
logic.from1897:
|
|
br i1 %t11, label %logic.rhs1898, label %logic.end1899
|
|
logic.rhs1898:
|
|
%t12 = load %S.ast.Type, ptr %a2
|
|
%t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12)
|
|
br label %logic.rend1900
|
|
logic.rend1900:
|
|
br label %logic.end1899
|
|
logic.end1899:
|
|
%t14 = phi i1 [ false, %logic.from1897 ], [ %t13, %logic.rend1900 ]
|
|
br i1 %t14, label %then1901, label %endif1903
|
|
then1901:
|
|
ret i1 false
|
|
endif1903:
|
|
%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 %then1904, label %endif1906
|
|
then1904:
|
|
ret i1 false
|
|
endif1906:
|
|
%t7 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
%t9 = call i64 @finch_str_to_int(ptr %a8, ptr @.str.1103, i64 308)
|
|
store i64 %t9, ptr %a10
|
|
%t11 = load %S.ast.Type, ptr %a3
|
|
%t12 = call i64 @finch.gen.bitsOf(%S.ast.Type %t11)
|
|
store i64 %t12, ptr %a13
|
|
%t14 = load i64, ptr %a10
|
|
%t15 = icmp slt i64 %t14, 0
|
|
br i1 %t15, label %then1907, label %endif1909
|
|
then1907:
|
|
%t16 = load %S.ast.Type, ptr %a3
|
|
%t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16)
|
|
br i1 %t17, label %then1910, label %endif1912
|
|
then1910:
|
|
ret i1 false
|
|
endif1912:
|
|
%t18 = load i64, ptr %a13
|
|
%t19 = icmp eq i64 %t18, 64
|
|
br i1 %t19, label %then1913, label %endif1915
|
|
then1913:
|
|
ret i1 true
|
|
endif1915:
|
|
%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
|
|
endif1909:
|
|
%t26 = load i64, ptr %a13
|
|
%t27 = icmp eq i64 %t26, 64
|
|
br i1 %t27, label %then1916, label %endif1918
|
|
then1916:
|
|
ret i1 true
|
|
endif1918:
|
|
%t28 = load i64, ptr %a13
|
|
%t29 = shl i64 1, %t28
|
|
%t30 = sub i64 %t29, 1
|
|
store i64 %t30, ptr %a31
|
|
%t32 = load %S.ast.Type, ptr %a3
|
|
%t33 = call i1 @finch.gen.isSigned(%S.ast.Type %t32)
|
|
br i1 %t33, label %then1919, label %endif1921
|
|
then1919:
|
|
%t34 = load i64, ptr %a13
|
|
%t35 = sub i64 %t34, 1
|
|
%t36 = shl i64 1, %t35
|
|
%t37 = sub i64 %t36, 1
|
|
store i64 %t37, ptr %a31
|
|
br label %endif1921
|
|
endif1921:
|
|
%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 %panic1922, label %ok1923
|
|
panic1922:
|
|
call void @finch_panic(ptr @.str.1104, i64 330, ptr @.str.1105)
|
|
unreachable
|
|
ok1923:
|
|
%t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1
|
|
%t8 = load i64, ptr %t7
|
|
store i64 0, ptr %a9
|
|
br label %for.cond1924
|
|
for.cond1924:
|
|
%t10 = load i64, ptr %a9
|
|
%t11 = icmp slt i64 %t10, %t8
|
|
br i1 %t11, label %for.body1925, label %for.end1927
|
|
for.body1925:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = icmp eq ptr %t12, null
|
|
br i1 %t13, label %panic1928, label %ok1929
|
|
panic1928:
|
|
call void @finch_panic(ptr @.str.1106, i64 331, ptr @.str.1107)
|
|
unreachable
|
|
ok1929:
|
|
%t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15
|
|
%t15 = load i64, ptr %a9
|
|
%t16 = load { ptr, i64, i64 }, ptr %t14
|
|
%t17 = extractvalue { ptr, i64, i64 } %t16, 1
|
|
%t18 = icmp uge i64 %t15, %t17
|
|
br i1 %t18, label %range1930, label %inrange1931
|
|
range1930:
|
|
call void @finch_panic_index(ptr @.str.1108, i64 331, i64 %t15, i64 %t17)
|
|
unreachable
|
|
inrange1931:
|
|
%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.from1932
|
|
logic.from1932:
|
|
br i1 %t27, label %logic.rhs1933, label %logic.end1934
|
|
logic.rhs1933:
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = icmp eq ptr %t28, null
|
|
br i1 %t29, label %panic1935, label %ok1936
|
|
panic1935:
|
|
call void @finch_panic(ptr @.str.1109, i64 331, ptr @.str.1110)
|
|
unreachable
|
|
ok1936:
|
|
%t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15
|
|
%t31 = load i64, ptr %a9
|
|
%t32 = load { ptr, i64, i64 }, ptr %t30
|
|
%t33 = extractvalue { ptr, i64, i64 } %t32, 1
|
|
%t34 = icmp uge i64 %t31, %t33
|
|
br i1 %t34, label %range1937, label %inrange1938
|
|
range1937:
|
|
call void @finch_panic_index(ptr @.str.1111, i64 331, i64 %t31, i64 %t33)
|
|
unreachable
|
|
inrange1938:
|
|
%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.rend1939
|
|
logic.rend1939:
|
|
br label %logic.end1934
|
|
logic.end1934:
|
|
%t44 = phi i1 [ false, %logic.from1932 ], [ %t43, %logic.rend1939 ]
|
|
br i1 %t44, label %then1940, label %endif1942
|
|
then1940:
|
|
%t45 = load i64, ptr %a9
|
|
ret i64 %t45
|
|
endif1942:
|
|
br label %for.step1926
|
|
for.step1926:
|
|
%t46 = load i64, ptr %a9
|
|
%t47 = add i64 %t46, 1
|
|
store i64 %t47, ptr %a9
|
|
br label %for.cond1924
|
|
for.end1927:
|
|
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 %panic1943, label %ok1944
|
|
panic1943:
|
|
call void @finch_panic(ptr @.str.1112, i64 339, ptr @.str.1113)
|
|
unreachable
|
|
ok1944:
|
|
%t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1
|
|
%t8 = load i64, ptr %t7
|
|
store i64 0, ptr %a9
|
|
br label %for.cond1945
|
|
for.cond1945:
|
|
%t10 = load i64, ptr %a9
|
|
%t11 = icmp slt i64 %t10, %t8
|
|
br i1 %t11, label %for.body1946, label %for.end1948
|
|
for.body1946:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = icmp eq ptr %t12, null
|
|
br i1 %t13, label %panic1949, label %ok1950
|
|
panic1949:
|
|
call void @finch_panic(ptr @.str.1114, i64 340, ptr @.str.1115)
|
|
unreachable
|
|
ok1950:
|
|
%t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 20
|
|
%t15 = load i64, ptr %a9
|
|
%t16 = load { ptr, i64, i64 }, ptr %t14
|
|
%t17 = extractvalue { ptr, i64, i64 } %t16, 1
|
|
%t18 = icmp uge i64 %t15, %t17
|
|
br i1 %t18, label %range1951, label %inrange1952
|
|
range1951:
|
|
call void @finch_panic_index(ptr @.str.1116, i64 340, i64 %t15, i64 %t17)
|
|
unreachable
|
|
inrange1952:
|
|
%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.from1953
|
|
logic.from1953:
|
|
br i1 %t27, label %logic.rhs1954, label %logic.end1955
|
|
logic.rhs1954:
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = icmp eq ptr %t28, null
|
|
br i1 %t29, label %panic1956, label %ok1957
|
|
panic1956:
|
|
call void @finch_panic(ptr @.str.1117, i64 340, ptr @.str.1118)
|
|
unreachable
|
|
ok1957:
|
|
%t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 20
|
|
%t31 = load i64, ptr %a9
|
|
%t32 = load { ptr, i64, i64 }, ptr %t30
|
|
%t33 = extractvalue { ptr, i64, i64 } %t32, 1
|
|
%t34 = icmp uge i64 %t31, %t33
|
|
br i1 %t34, label %range1958, label %inrange1959
|
|
range1958:
|
|
call void @finch_panic_index(ptr @.str.1119, i64 340, i64 %t31, i64 %t33)
|
|
unreachable
|
|
inrange1959:
|
|
%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.rend1960
|
|
logic.rend1960:
|
|
br label %logic.end1955
|
|
logic.end1955:
|
|
%t44 = phi i1 [ false, %logic.from1953 ], [ %t43, %logic.rend1960 ]
|
|
br i1 %t44, label %then1961, label %endif1963
|
|
then1961:
|
|
%t45 = load i64, ptr %a9
|
|
ret i64 %t45
|
|
endif1963:
|
|
br label %for.step1947
|
|
for.step1947:
|
|
%t46 = load i64, ptr %a9
|
|
%t47 = add i64 %t46, 1
|
|
store i64 %t47, ptr %a9
|
|
br label %for.cond1945
|
|
for.end1948:
|
|
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 %panic1964, label %ok1965
|
|
panic1964:
|
|
call void @finch_panic(ptr @.str.1120, i64 348, ptr @.str.1121)
|
|
unreachable
|
|
ok1965:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1
|
|
%t7 = load i64, ptr %t6
|
|
store i64 0, ptr %a8
|
|
br label %for.cond1966
|
|
for.cond1966:
|
|
%t9 = load i64, ptr %a8
|
|
%t10 = icmp slt i64 %t9, %t7
|
|
br i1 %t10, label %for.body1967, label %for.end1969
|
|
for.body1967:
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = icmp eq ptr %t11, null
|
|
br i1 %t12, label %panic1970, label %ok1971
|
|
panic1970:
|
|
call void @finch_panic(ptr @.str.1122, i64 349, ptr @.str.1123)
|
|
unreachable
|
|
ok1971:
|
|
%t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 0
|
|
%t14 = load i64, ptr %a8
|
|
%t15 = load { ptr, i64, i64 }, ptr %t13
|
|
%t16 = extractvalue { ptr, i64, i64 } %t15, 1
|
|
%t17 = icmp uge i64 %t14, %t16
|
|
br i1 %t17, label %range1972, label %inrange1973
|
|
range1972:
|
|
call void @finch_panic_index(ptr @.str.1124, i64 349, i64 %t14, i64 %t16)
|
|
unreachable
|
|
inrange1973:
|
|
%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 %then1974, label %endif1976
|
|
then1974:
|
|
%t27 = load i64, ptr %a8
|
|
ret i64 %t27
|
|
endif1976:
|
|
br label %for.step1968
|
|
for.step1968:
|
|
%t28 = load i64, ptr %a8
|
|
%t29 = add i64 %t28, 1
|
|
store i64 %t29, ptr %a8
|
|
br label %for.cond1966
|
|
for.end1969:
|
|
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 %panic1977, label %ok1978
|
|
panic1977:
|
|
call void @finch_panic(ptr @.str.1125, i64 357, ptr @.str.1126)
|
|
unreachable
|
|
ok1978:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = icmp eq ptr %t7, null
|
|
br i1 %t8, label %panic1979, label %ok1980
|
|
panic1979:
|
|
call void @finch_panic(ptr @.str.1127, i64 357, ptr @.str.1128)
|
|
unreachable
|
|
ok1980:
|
|
%t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 13
|
|
%t10 = load { ptr, i64, i64 }, ptr %t9
|
|
%t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10)
|
|
%t12 = load { ptr, i64, i64 }, ptr %t5
|
|
%t13 = extractvalue { ptr, i64, i64 } %t12, 1
|
|
%t14 = icmp uge i64 %t11, %t13
|
|
br i1 %t14, label %range1981, label %inrange1982
|
|
range1981:
|
|
call void @finch_panic_index(ptr @.str.1129, i64 357, i64 %t11, i64 %t13)
|
|
unreachable
|
|
inrange1982:
|
|
%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.cond1983
|
|
find.cond1983:
|
|
%t24 = load i64, ptr %a23
|
|
%t25 = icmp slt i64 %t24, %t21
|
|
br i1 %t25, label %find.body1984, label %find.end1987
|
|
find.body1984:
|
|
%t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t24
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
store { ptr, i64, i64 } %t19, ptr %a29
|
|
%t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29)
|
|
%t31 = icmp ne i32 %t30, 0
|
|
br i1 %t31, label %find.hit1985, label %find.next1986
|
|
find.hit1985:
|
|
store i64 %t24, ptr %a20
|
|
br label %find.end1987
|
|
find.next1986:
|
|
%t32 = add i64 %t24, 1
|
|
store i64 %t32, ptr %a23
|
|
br label %find.cond1983
|
|
find.end1987:
|
|
%t33 = load i64, ptr %a20
|
|
%t34 = icmp sge i64 %t33, 0
|
|
ret i1 %t34
|
|
}
|
|
|
|
define internal %S.ast.Type @finch.gen.resolve(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca %S.ast.Node, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca %S.ast.Type, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca %S.ast.Type, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca %S.ast.Type, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca %S.ast.Type, align 16
|
|
%a139 = alloca %S.ast.Type, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca %S.ast.Type, align 16
|
|
%a160 = alloca %S.ast.Type, align 16
|
|
%a177 = alloca i64, align 16
|
|
%a180 = alloca i64, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca i64, align 16
|
|
%a205 = alloca i64, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca %S.ast.Type, align 16
|
|
%a223 = alloca %S.ast.Type, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a231 = alloca i64, align 16
|
|
%a239 = alloca %S.ast.Type, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a304 = alloca { ptr, i64, i64 }, align 16
|
|
%a305 = alloca { ptr, i64, i64 }, align 16
|
|
%a317 = alloca { ptr, i64, i64 }, align 16
|
|
%a318 = alloca { ptr, i64, i64 }, align 16
|
|
%a319 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca { ptr, i64, i64 }, align 16
|
|
%a328 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a337 = alloca { ptr, i64, i64 }, align 16
|
|
%a338 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a355 = alloca { ptr, i64, i64 }, align 16
|
|
%a356 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = alloca { ptr, i64, i64 }, align 16
|
|
%a359 = alloca { ptr, i64, i64 }, align 16
|
|
%a360 = alloca { ptr, i64, i64 }, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a368 = alloca { ptr, i64, i64 }, align 16
|
|
%a369 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a374 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a391 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a414 = alloca { ptr, i64, i64 }, align 16
|
|
%a415 = alloca { ptr, i64, i64 }, align 16
|
|
%a423 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a428 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a434 = alloca { ptr, i64, i64 }, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a439 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
store %S.ast.Node %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.1130, i64 5, i64 0 }, ptr %a7
|
|
%t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7)
|
|
%t9 = icmp ne i32 %t8, 0
|
|
br i1 %t9, label %then1988, label %endif1990
|
|
then1988:
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t12 = load { ptr, i64, i64 }, ptr %t11
|
|
%t13 = extractvalue { ptr, i64, i64 } %t12, 1
|
|
%t14 = icmp uge i64 0, %t13
|
|
br i1 %t14, label %range1991, label %inrange1992
|
|
range1991:
|
|
call void @finch_panic_index(ptr @.str.1131, i64 362, i64 0, i64 %t13)
|
|
unreachable
|
|
inrange1992:
|
|
%t15 = extractvalue { ptr, i64, i64 } %t12, 0
|
|
%t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0
|
|
%t17 = load %S.ast.Type, ptr %t16
|
|
%t18 = load %S.ast.Node, ptr %a3
|
|
%t19 = call %S.ast.Type @finch.gen.resolve(ptr %t10, %S.ast.Type %t17, %S.ast.Node %t18)
|
|
%t20 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t19)
|
|
ret %S.ast.Type %t20
|
|
endif1990:
|
|
%t21 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.1132, i64 3, i64 0 }, ptr %a24
|
|
%t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24)
|
|
%t26 = icmp ne i32 %t25, 0
|
|
br i1 %t26, label %then1993, label %endif1995
|
|
then1993:
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t29 = load { ptr, i64, i64 }, ptr %t28
|
|
%t30 = extractvalue { ptr, i64, i64 } %t29, 1
|
|
%t31 = icmp uge i64 0, %t30
|
|
br i1 %t31, label %range1996, label %inrange1997
|
|
range1996:
|
|
call void @finch_panic_index(ptr @.str.1133, i64 365, i64 0, i64 %t30)
|
|
unreachable
|
|
inrange1997:
|
|
%t32 = extractvalue { ptr, i64, i64 } %t29, 0
|
|
%t33 = getelementptr inbounds %S.ast.Type, ptr %t32, i64 0
|
|
%t34 = load %S.ast.Type, ptr %t33
|
|
%t35 = load %S.ast.Node, ptr %a3
|
|
%t36 = call %S.ast.Type @finch.gen.resolve(ptr %t27, %S.ast.Type %t34, %S.ast.Node %t35)
|
|
store %S.ast.Type %t36, ptr %a37
|
|
%t38 = load %S.ast.Type, ptr %a37
|
|
%t39 = call i1 @finch.gen.isInt(%S.ast.Type %t38)
|
|
%t40 = xor i1 %t39, true
|
|
br label %logic.from1998
|
|
logic.from1998:
|
|
br i1 %t40, label %logic.rhs1999, label %logic.end2000
|
|
logic.rhs1999:
|
|
%t41 = getelementptr inbounds %S.ast.Type, ptr %a37, i32 0, i32 0
|
|
%t42 = load { ptr, i64, i64 }, ptr %t41
|
|
store { ptr, i64, i64 } %t42, ptr %a43
|
|
store { ptr, i64, i64 } { ptr @.str.1134, i64 4, i64 0 }, ptr %a44
|
|
%t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44)
|
|
%t46 = icmp eq i32 %t45, 0
|
|
br label %logic.rend2001
|
|
logic.rend2001:
|
|
br label %logic.end2000
|
|
logic.end2000:
|
|
%t47 = phi i1 [ false, %logic.from1998 ], [ %t46, %logic.rend2001 ]
|
|
br label %logic.from2002
|
|
logic.from2002:
|
|
br i1 %t47, label %logic.rhs2003, label %logic.end2004
|
|
logic.rhs2003:
|
|
%t48 = getelementptr inbounds %S.ast.Type, ptr %a37, i32 0, i32 0
|
|
%t49 = load { ptr, i64, i64 }, ptr %t48
|
|
store { ptr, i64, i64 } %t49, ptr %a50
|
|
store { ptr, i64, i64 } { ptr @.str.1135, i64 4, i64 0 }, ptr %a51
|
|
%t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51)
|
|
%t53 = icmp eq i32 %t52, 0
|
|
br label %logic.rend2005
|
|
logic.rend2005:
|
|
br label %logic.end2004
|
|
logic.end2004:
|
|
%t54 = phi i1 [ false, %logic.from2002 ], [ %t53, %logic.rend2005 ]
|
|
br label %logic.from2006
|
|
logic.from2006:
|
|
br i1 %t54, label %logic.rhs2007, label %logic.end2008
|
|
logic.rhs2007:
|
|
%t55 = getelementptr inbounds %S.ast.Type, ptr %a37, i32 0, i32 0
|
|
%t56 = load { ptr, i64, i64 }, ptr %t55
|
|
store { ptr, i64, i64 } %t56, ptr %a57
|
|
store { ptr, i64, i64 } { ptr @.str.1136, i64 3, i64 0 }, ptr %a58
|
|
%t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58)
|
|
%t60 = icmp eq i32 %t59, 0
|
|
br label %logic.rend2009
|
|
logic.rend2009:
|
|
br label %logic.end2008
|
|
logic.end2008:
|
|
%t61 = phi i1 [ false, %logic.from2006 ], [ %t60, %logic.rend2009 ]
|
|
br label %logic.from2010
|
|
logic.from2010:
|
|
br i1 %t61, label %logic.rhs2011, label %logic.end2012
|
|
logic.rhs2011:
|
|
%t62 = getelementptr inbounds %S.ast.Type, ptr %a37, i32 0, i32 0
|
|
%t63 = load { ptr, i64, i64 }, ptr %t62
|
|
store { ptr, i64, i64 } %t63, ptr %a64
|
|
store { ptr, i64, i64 } { ptr @.str.1137, i64 4, i64 0 }, ptr %a65
|
|
%t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65)
|
|
%t67 = icmp eq i32 %t66, 0
|
|
br label %logic.rend2013
|
|
logic.rend2013:
|
|
br label %logic.end2012
|
|
logic.end2012:
|
|
%t68 = phi i1 [ false, %logic.from2010 ], [ %t67, %logic.rend2013 ]
|
|
br i1 %t68, label %then2014, label %endif2016
|
|
then2014:
|
|
%t69 = load ptr, ptr %a1
|
|
%t70 = load %S.ast.Node, ptr %a3
|
|
%t71 = load %S.ast.Type, ptr %a37
|
|
%t72 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t71)
|
|
store { ptr, i64, i64 } { ptr @.str.1138, i64 63, i64 0 }, ptr %a74
|
|
store { ptr, i64, i64 } %t72, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
call void @finch.gen.fail(ptr %t69, %S.ast.Node %t70, { ptr, i64, i64 } %t76)
|
|
br label %endif2016
|
|
endif2016:
|
|
%t77 = load ptr, ptr %a1
|
|
%t78 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t79 = load { ptr, i64, i64 }, ptr %t78
|
|
%t80 = extractvalue { ptr, i64, i64 } %t79, 1
|
|
%t81 = icmp uge i64 1, %t80
|
|
br i1 %t81, label %range2017, label %inrange2018
|
|
range2017:
|
|
call void @finch_panic_index(ptr @.str.1139, i64 369, i64 1, i64 %t80)
|
|
unreachable
|
|
inrange2018:
|
|
%t82 = extractvalue { ptr, i64, i64 } %t79, 0
|
|
%t83 = getelementptr inbounds %S.ast.Type, ptr %t82, i64 1
|
|
%t84 = load %S.ast.Type, ptr %t83
|
|
%t85 = load %S.ast.Node, ptr %a3
|
|
%t86 = call %S.ast.Type @finch.gen.resolve(ptr %t77, %S.ast.Type %t84, %S.ast.Node %t85)
|
|
store %S.ast.Type %t86, ptr %a87
|
|
%t88 = getelementptr inbounds %S.ast.Type, ptr %a87, i32 0, i32 0
|
|
%t89 = load { ptr, i64, i64 }, ptr %t88
|
|
store { ptr, i64, i64 } %t89, ptr %a90
|
|
store { ptr, i64, i64 } { ptr @.str.1140, i64 4, i64 0 }, ptr %a91
|
|
%t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91)
|
|
%t93 = icmp ne i32 %t92, 0
|
|
br i1 %t93, label %then2019, label %endif2021
|
|
then2019:
|
|
%t94 = load ptr, ptr %a1
|
|
%t95 = load %S.ast.Node, ptr %a3
|
|
call void @finch.gen.fail(ptr %t94, %S.ast.Node %t95, { ptr, i64, i64 } { ptr @.str.1141, i64 41, i64 0 })
|
|
br label %endif2021
|
|
endif2021:
|
|
%t96 = load %S.ast.Type, ptr %a37
|
|
%t97 = load %S.ast.Type, ptr %a87
|
|
%t98 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t96, %S.ast.Type %t97)
|
|
ret %S.ast.Type %t98
|
|
endif1995:
|
|
%t99 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t100 = load { ptr, i64, i64 }, ptr %t99
|
|
store { ptr, i64, i64 } %t100, ptr %a101
|
|
store { ptr, i64, i64 } { ptr @.str.1142, i64 5, i64 0 }, ptr %a102
|
|
%t103 = call i32 @finch_str_eq(ptr %a101, ptr %a102)
|
|
%t104 = icmp ne i32 %t103, 0
|
|
br i1 %t104, label %then2022, label %endif2024
|
|
then2022:
|
|
%t105 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1143, i64 5, i64 0 }, 0
|
|
%t106 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4
|
|
%t107 = load i64, ptr %t106
|
|
%t108 = insertvalue %S.ast.Type %t105, i64 %t107, 4
|
|
store %S.ast.Type %t108, ptr %a109
|
|
%t110 = getelementptr inbounds %S.ast.Type, ptr %a109, i32 0, i32 1
|
|
%t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1
|
|
%t112 = load ptr, ptr %a1
|
|
%t113 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t114 = load { ptr, i64, i64 }, ptr %t113
|
|
%t115 = extractvalue { ptr, i64, i64 } %t114, 1
|
|
%t116 = icmp uge i64 0, %t115
|
|
br i1 %t116, label %range2025, label %inrange2026
|
|
range2025:
|
|
call void @finch_panic_index(ptr @.str.1144, i64 377, i64 0, i64 %t115)
|
|
unreachable
|
|
inrange2026:
|
|
%t117 = extractvalue { ptr, i64, i64 } %t114, 0
|
|
%t118 = getelementptr inbounds %S.ast.Type, ptr %t117, i64 0
|
|
%t119 = load %S.ast.Type, ptr %t118
|
|
%t120 = load %S.ast.Node, ptr %a3
|
|
%t121 = call %S.ast.Type @finch.gen.resolve(ptr %t112, %S.ast.Type %t119, %S.ast.Node %t120)
|
|
%t122 = load i64, ptr %t111
|
|
%t123 = add i64 %t122, 1
|
|
call void @finch_arr_reserve(ptr %t110, i64 %t123, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t124 = load ptr, ptr %t110
|
|
%t125 = getelementptr inbounds %S.ast.Type, ptr %t124, i64 %t122
|
|
store %S.ast.Type %t121, ptr %t125
|
|
store i64 %t123, ptr %t111
|
|
%t126 = load %S.ast.Type, ptr %a109
|
|
ret %S.ast.Type %t126
|
|
endif2024:
|
|
%t127 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t128 = load { ptr, i64, i64 }, ptr %t127
|
|
store { ptr, i64, i64 } %t128, ptr %a129
|
|
store { ptr, i64, i64 } { ptr @.str.1145, i64 3, i64 0 }, ptr %a130
|
|
%t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130)
|
|
%t132 = icmp ne i32 %t131, 0
|
|
br i1 %t132, label %then2027, label %endif2029
|
|
then2027:
|
|
%t133 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1
|
|
%t135 = load i64, ptr %t134
|
|
%t136 = icmp eq i64 %t135, 0
|
|
br i1 %t136, label %then2030, label %endif2032
|
|
then2030:
|
|
%t137 = load %S.ast.Type, ptr %a2
|
|
store %S.ast.Type %t137, ptr %a138
|
|
call void @finch.copy.S_ast_Type(ptr %a139, ptr %a138)
|
|
%t140 = load %S.ast.Type, ptr %a139
|
|
ret %S.ast.Type %t140
|
|
endif2032:
|
|
%t141 = load ptr, ptr %a1
|
|
%t142 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t143 = load { ptr, i64, i64 }, ptr %t142
|
|
%t144 = extractvalue { ptr, i64, i64 } %t143, 1
|
|
%t145 = icmp uge i64 0, %t144
|
|
br i1 %t145, label %range2033, label %inrange2034
|
|
range2033:
|
|
call void @finch_panic_index(ptr @.str.1146, i64 384, i64 0, i64 %t144)
|
|
unreachable
|
|
inrange2034:
|
|
%t146 = extractvalue { ptr, i64, i64 } %t143, 0
|
|
%t147 = getelementptr inbounds %S.ast.Type, ptr %t146, i64 0
|
|
%t148 = load %S.ast.Type, ptr %t147
|
|
%t149 = load %S.ast.Node, ptr %a3
|
|
%t150 = call %S.ast.Type @finch.gen.resolve(ptr %t141, %S.ast.Type %t148, %S.ast.Node %t149)
|
|
%t151 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t150)
|
|
ret %S.ast.Type %t151
|
|
endif2029:
|
|
%t152 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t153 = load { ptr, i64, i64 }, ptr %t152
|
|
store { ptr, i64, i64 } %t153, ptr %a154
|
|
store { ptr, i64, i64 } { ptr @.str.1147, i64 5, i64 0 }, ptr %a155
|
|
%t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155)
|
|
%t157 = icmp eq i32 %t156, 0
|
|
br i1 %t157, label %then2035, label %endif2037
|
|
then2035:
|
|
%t158 = load %S.ast.Type, ptr %a2
|
|
store %S.ast.Type %t158, ptr %a159
|
|
call void @finch.copy.S_ast_Type(ptr %a160, ptr %a159)
|
|
%t161 = load %S.ast.Type, ptr %a160
|
|
ret %S.ast.Type %t161
|
|
endif2037:
|
|
%t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1
|
|
%t164 = load i64, ptr %t163
|
|
%t165 = icmp eq i64 %t164, 0
|
|
br label %logic.from2038
|
|
logic.from2038:
|
|
br i1 %t165, label %logic.rhs2039, label %logic.end2040
|
|
logic.rhs2039:
|
|
%t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1
|
|
%t168 = load i64, ptr %t167
|
|
%t169 = icmp eq i64 %t168, 0
|
|
br label %logic.rend2041
|
|
logic.rend2041:
|
|
br label %logic.end2040
|
|
logic.end2040:
|
|
%t170 = phi i1 [ false, %logic.from2038 ], [ %t169, %logic.rend2041 ]
|
|
br label %logic.from2042
|
|
logic.from2042:
|
|
br i1 %t170, label %logic.rhs2043, label %logic.end2044
|
|
logic.rhs2043:
|
|
%t171 = load ptr, ptr %a1
|
|
%t172 = icmp eq ptr %t171, null
|
|
br i1 %t172, label %panic2045, label %ok2046
|
|
panic2045:
|
|
call void @finch_panic(ptr @.str.1148, i64 390, ptr @.str.1149)
|
|
unreachable
|
|
ok2046:
|
|
%t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 17
|
|
%t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1
|
|
%t175 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t176 = load { ptr, i64, i64 }, ptr %t175
|
|
store i64 -1, ptr %a177
|
|
%t178 = load i64, ptr %t174
|
|
%t179 = load ptr, ptr %t173
|
|
store i64 0, ptr %a180
|
|
br label %find.cond2047
|
|
find.cond2047:
|
|
%t181 = load i64, ptr %a180
|
|
%t182 = icmp slt i64 %t181, %t178
|
|
br i1 %t182, label %find.body2048, label %find.end2051
|
|
find.body2048:
|
|
%t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t181
|
|
%t184 = load { ptr, i64, i64 }, ptr %t183
|
|
store { ptr, i64, i64 } %t184, ptr %a185
|
|
store { ptr, i64, i64 } %t176, ptr %a186
|
|
%t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186)
|
|
%t188 = icmp ne i32 %t187, 0
|
|
br i1 %t188, label %find.hit2049, label %find.next2050
|
|
find.hit2049:
|
|
store i64 %t181, ptr %a177
|
|
br label %find.end2051
|
|
find.next2050:
|
|
%t189 = add i64 %t181, 1
|
|
store i64 %t189, ptr %a180
|
|
br label %find.cond2047
|
|
find.end2051:
|
|
%t190 = load i64, ptr %a177
|
|
%t191 = icmp sge i64 %t190, 0
|
|
br label %logic.rend2052
|
|
logic.rend2052:
|
|
br label %logic.end2044
|
|
logic.end2044:
|
|
%t192 = phi i1 [ false, %logic.from2042 ], [ %t191, %logic.rend2052 ]
|
|
br i1 %t192, label %then2053, label %endif2055
|
|
then2053:
|
|
%t193 = load ptr, ptr %a1
|
|
%t194 = icmp eq ptr %t193, null
|
|
br i1 %t194, label %panic2056, label %ok2057
|
|
panic2056:
|
|
call void @finch_panic(ptr @.str.1150, i64 391, ptr @.str.1151)
|
|
unreachable
|
|
ok2057:
|
|
%t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 18
|
|
%t196 = load ptr, ptr %a1
|
|
%t197 = icmp eq ptr %t196, null
|
|
br i1 %t197, label %panic2058, label %ok2059
|
|
panic2058:
|
|
call void @finch_panic(ptr @.str.1152, i64 391, ptr @.str.1153)
|
|
unreachable
|
|
ok2059:
|
|
%t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 17
|
|
%t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1
|
|
%t200 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t201 = load { ptr, i64, i64 }, ptr %t200
|
|
store i64 -1, ptr %a202
|
|
%t203 = load i64, ptr %t199
|
|
%t204 = load ptr, ptr %t198
|
|
store i64 0, ptr %a205
|
|
br label %find.cond2060
|
|
find.cond2060:
|
|
%t206 = load i64, ptr %a205
|
|
%t207 = icmp slt i64 %t206, %t203
|
|
br i1 %t207, label %find.body2061, label %find.end2064
|
|
find.body2061:
|
|
%t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t204, i64 %t206
|
|
%t209 = load { ptr, i64, i64 }, ptr %t208
|
|
store { ptr, i64, i64 } %t209, ptr %a210
|
|
store { ptr, i64, i64 } %t201, ptr %a211
|
|
%t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211)
|
|
%t213 = icmp ne i32 %t212, 0
|
|
br i1 %t213, label %find.hit2062, label %find.next2063
|
|
find.hit2062:
|
|
store i64 %t206, ptr %a202
|
|
br label %find.end2064
|
|
find.next2063:
|
|
%t214 = add i64 %t206, 1
|
|
store i64 %t214, ptr %a205
|
|
br label %find.cond2060
|
|
find.end2064:
|
|
%t215 = load i64, ptr %a202
|
|
%t216 = load { ptr, i64, i64 }, ptr %t195
|
|
%t217 = extractvalue { ptr, i64, i64 } %t216, 1
|
|
%t218 = icmp uge i64 %t215, %t217
|
|
br i1 %t218, label %range2065, label %inrange2066
|
|
range2065:
|
|
call void @finch_panic_index(ptr @.str.1154, i64 391, i64 %t215, i64 %t217)
|
|
unreachable
|
|
inrange2066:
|
|
%t219 = extractvalue { ptr, i64, i64 } %t216, 0
|
|
%t220 = getelementptr inbounds %S.ast.Type, ptr %t219, i64 %t215
|
|
%t221 = load %S.ast.Type, ptr %t220
|
|
store %S.ast.Type %t221, ptr %a222
|
|
call void @finch.copy.S_ast_Type(ptr %a223, ptr %a222)
|
|
%t224 = load %S.ast.Type, ptr %a223
|
|
ret %S.ast.Type %t224
|
|
endif2055:
|
|
%t225 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t225, i32 0, i32 1
|
|
%t227 = load i64, ptr %t226
|
|
%t228 = icmp sgt i64 %t227, 0
|
|
br i1 %t228, label %then2067, label %endif2069
|
|
then2067:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a229
|
|
%t230 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
store i64 0, ptr %a231
|
|
br label %each.cond2070
|
|
each.cond2070:
|
|
%t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t230, i32 0, i32 1
|
|
%t233 = load i64, ptr %t232
|
|
%t234 = load i64, ptr %a231
|
|
%t235 = icmp slt i64 %t234, %t233
|
|
br i1 %t235, label %each.body2071, label %each.end2073
|
|
each.body2071:
|
|
%t236 = load ptr, ptr %t230
|
|
%t237 = getelementptr inbounds %S.ast.Type, ptr %t236, i64 %t234
|
|
%t238 = load %S.ast.Type, ptr %t237
|
|
store %S.ast.Type %t238, ptr %a239
|
|
%t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %a229, i32 0, i32 1
|
|
%t241 = load ptr, ptr %a1
|
|
%t242 = load %S.ast.Type, ptr %a239
|
|
%t243 = load %S.ast.Node, ptr %a3
|
|
%t244 = call %S.ast.Type @finch.gen.resolve(ptr %t241, %S.ast.Type %t242, %S.ast.Node %t243)
|
|
%t245 = load i64, ptr %t240
|
|
%t246 = add i64 %t245, 1
|
|
call void @finch_arr_reserve(ptr %a229, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t247 = load ptr, ptr %a229
|
|
%t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i64 %t245
|
|
store %S.ast.Type %t244, ptr %t248
|
|
store i64 %t246, ptr %t240
|
|
br label %each.step2072
|
|
each.step2072:
|
|
%t249 = load i64, ptr %a231
|
|
%t250 = add i64 %t249, 1
|
|
store i64 %t250, ptr %a231
|
|
br label %each.cond2070
|
|
each.end2073:
|
|
%t251 = load ptr, ptr %a1
|
|
%t252 = icmp eq ptr %t251, null
|
|
br i1 %t252, label %panic2074, label %ok2075
|
|
panic2074:
|
|
call void @finch_panic(ptr @.str.1155, i64 399, ptr @.str.1156)
|
|
unreachable
|
|
ok2075:
|
|
%t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 13
|
|
%t254 = load { ptr, i64, i64 }, ptr %t253
|
|
store { ptr, i64, i64 } %t254, ptr %a255
|
|
call void @finch_str_copy(ptr %a256, ptr %a255)
|
|
%t257 = load { ptr, i64, i64 }, ptr %a256
|
|
store { ptr, i64, i64 } %t257, ptr %a258
|
|
%t259 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i32 0, i32 1
|
|
%t261 = load i64, ptr %t260
|
|
%t262 = icmp sgt i64 %t261, 0
|
|
br i1 %t262, label %then2076, label %endif2078
|
|
then2076:
|
|
%t263 = load ptr, ptr %a1
|
|
%t264 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t265 = load { ptr, i64, i64 }, ptr %t264
|
|
%t266 = call i1 @finch.gen.imports(ptr %t263, { ptr, i64, i64 } %t265)
|
|
%t267 = xor i1 %t266, true
|
|
br i1 %t267, label %then2079, label %endif2081
|
|
then2079:
|
|
%t268 = load ptr, ptr %a1
|
|
%t269 = load %S.ast.Node, ptr %a3
|
|
%t270 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t271 = load { ptr, i64, i64 }, ptr %t270
|
|
store { ptr, i64, i64 } { ptr @.str.1157, i64 1, i64 0 }, ptr %a273
|
|
store { ptr, i64, i64 } %t271, ptr %a274
|
|
call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274)
|
|
%t275 = load { ptr, i64, i64 }, ptr %a272
|
|
store { ptr, i64, i64 } %t275, ptr %a277
|
|
store { ptr, i64, i64 } { ptr @.str.1158, i64 36, i64 0 }, ptr %a278
|
|
call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278)
|
|
%t279 = load { ptr, i64, i64 }, ptr %a276
|
|
%t280 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t281 = load { ptr, i64, i64 }, ptr %t280
|
|
store { ptr, i64, i64 } %t279, ptr %a283
|
|
store { ptr, i64, i64 } %t281, ptr %a284
|
|
call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284)
|
|
%t285 = load { ptr, i64, i64 }, ptr %a282
|
|
store { ptr, i64, i64 } %t285, ptr %a287
|
|
store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a288
|
|
call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288)
|
|
%t289 = load { ptr, i64, i64 }, ptr %a286
|
|
call void @finch.gen.fail(ptr %t268, %S.ast.Node %t269, { ptr, i64, i64 } %t289)
|
|
br label %endif2081
|
|
endif2081:
|
|
%t290 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t291 = load { ptr, i64, i64 }, ptr %t290
|
|
store { ptr, i64, i64 } %t291, ptr %a292
|
|
call void @finch_str_copy(ptr %a293, ptr %a292)
|
|
%t294 = load { ptr, i64, i64 }, ptr %a293
|
|
store { ptr, i64, i64 } %t294, ptr %a258
|
|
br label %endif2078
|
|
endif2078:
|
|
%t295 = load ptr, ptr %a1
|
|
%t296 = load { ptr, i64, i64 }, ptr %a258
|
|
%t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t298 = load { ptr, i64, i64 }, ptr %t297
|
|
%t299 = load { ptr, i64, i64 }, ptr %a229
|
|
%t300 = load %S.ast.Node, ptr %a3
|
|
%t301 = call %S.ast.Type @finch.gen.instStruct(ptr %t295, { ptr, i64, i64 } %t296, { ptr, i64, i64 } %t298, { ptr, i64, i64 } %t299, %S.ast.Node %t300)
|
|
ret %S.ast.Type %t301
|
|
endif2069:
|
|
%t302 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t303 = load { ptr, i64, i64 }, ptr %t302
|
|
store { ptr, i64, i64 } %t303, ptr %a304
|
|
store { ptr, i64, i64 } { ptr @.str.1160, i64 1, i64 0 }, ptr %a305
|
|
%t306 = call i32 @finch_str_eq(ptr %a304, ptr %a305)
|
|
%t307 = icmp ne i32 %t306, 0
|
|
br i1 %t307, label %then2082, label %endif2084
|
|
then2082:
|
|
%t308 = load ptr, ptr %a1
|
|
%t309 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t310 = load { ptr, i64, i64 }, ptr %t309
|
|
%t311 = call i64 @finch.gen.findStruct(ptr %t308, { ptr, i64, i64 } { ptr @.str.1161, i64 1, i64 0 }, { ptr, i64, i64 } %t310)
|
|
%t312 = icmp slt i64 %t311, 0
|
|
br i1 %t312, label %then2085, label %endif2087
|
|
then2085:
|
|
%t313 = load ptr, ptr %a1
|
|
%t314 = load %S.ast.Node, ptr %a3
|
|
%t315 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t316 = load { ptr, i64, i64 }, ptr %t315
|
|
store { ptr, i64, i64 } { ptr @.str.1162, i64 28, i64 0 }, ptr %a318
|
|
store { ptr, i64, i64 } %t316, ptr %a319
|
|
call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319)
|
|
%t320 = load { ptr, i64, i64 }, ptr %a317
|
|
store { ptr, i64, i64 } %t320, ptr %a322
|
|
store { ptr, i64, i64 } { ptr @.str.1163, i64 1, i64 0 }, ptr %a323
|
|
call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323)
|
|
%t324 = load { ptr, i64, i64 }, ptr %a321
|
|
call void @finch.gen.fail(ptr %t313, %S.ast.Node %t314, { ptr, i64, i64 } %t324)
|
|
br label %endif2087
|
|
endif2087:
|
|
%t325 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1164, i64 6, i64 0 }, 0
|
|
%t326 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t327 = load { ptr, i64, i64 }, ptr %t326
|
|
store { ptr, i64, i64 } %t327, ptr %a328
|
|
call void @finch_str_copy(ptr %a329, ptr %a328)
|
|
%t330 = load { ptr, i64, i64 }, ptr %a329
|
|
%t331 = insertvalue %S.ast.Type %t325, { ptr, i64, i64 } %t330, 2
|
|
%t332 = insertvalue %S.ast.Type %t331, { ptr, i64, i64 } { ptr @.str.1165, i64 1, i64 0 }, 3
|
|
ret %S.ast.Type %t332
|
|
endif2084:
|
|
%t333 = load ptr, ptr %a1
|
|
%t334 = icmp eq ptr %t333, null
|
|
br i1 %t334, label %panic2088, label %ok2089
|
|
panic2088:
|
|
call void @finch_panic(ptr @.str.1166, i64 414, ptr @.str.1167)
|
|
unreachable
|
|
ok2089:
|
|
%t335 = getelementptr inbounds %S.gen.Gen, ptr %t333, i32 0, i32 13
|
|
%t336 = load { ptr, i64, i64 }, ptr %t335
|
|
store { ptr, i64, i64 } %t336, ptr %a337
|
|
call void @finch_str_copy(ptr %a338, ptr %a337)
|
|
%t339 = load { ptr, i64, i64 }, ptr %a338
|
|
store { ptr, i64, i64 } %t339, ptr %a340
|
|
%t341 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i32 0, i32 1
|
|
%t343 = load i64, ptr %t342
|
|
%t344 = icmp sgt i64 %t343, 0
|
|
br i1 %t344, label %then2090, label %endif2092
|
|
then2090:
|
|
%t345 = load ptr, ptr %a1
|
|
%t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t347 = load { ptr, i64, i64 }, ptr %t346
|
|
%t348 = call i1 @finch.gen.imports(ptr %t345, { ptr, i64, i64 } %t347)
|
|
%t349 = xor i1 %t348, true
|
|
br i1 %t349, label %then2093, label %endif2095
|
|
then2093:
|
|
%t350 = load ptr, ptr %a1
|
|
%t351 = load %S.ast.Node, ptr %a3
|
|
%t352 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t353 = load { ptr, i64, i64 }, ptr %t352
|
|
store { ptr, i64, i64 } { ptr @.str.1168, i64 1, i64 0 }, ptr %a355
|
|
store { ptr, i64, i64 } %t353, ptr %a356
|
|
call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356)
|
|
%t357 = load { ptr, i64, i64 }, ptr %a354
|
|
store { ptr, i64, i64 } %t357, ptr %a359
|
|
store { ptr, i64, i64 } { ptr @.str.1169, i64 36, i64 0 }, ptr %a360
|
|
call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360)
|
|
%t361 = load { ptr, i64, i64 }, ptr %a358
|
|
%t362 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t363 = load { ptr, i64, i64 }, ptr %t362
|
|
store { ptr, i64, i64 } %t361, ptr %a365
|
|
store { ptr, i64, i64 } %t363, ptr %a366
|
|
call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366)
|
|
%t367 = load { ptr, i64, i64 }, ptr %a364
|
|
store { ptr, i64, i64 } %t367, ptr %a369
|
|
store { ptr, i64, i64 } { ptr @.str.1170, i64 1, i64 0 }, ptr %a370
|
|
call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370)
|
|
%t371 = load { ptr, i64, i64 }, ptr %a368
|
|
call void @finch.gen.fail(ptr %t350, %S.ast.Node %t351, { ptr, i64, i64 } %t371)
|
|
br label %endif2095
|
|
endif2095:
|
|
%t372 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t373 = load { ptr, i64, i64 }, ptr %t372
|
|
store { ptr, i64, i64 } %t373, ptr %a374
|
|
call void @finch_str_copy(ptr %a375, ptr %a374)
|
|
%t376 = load { ptr, i64, i64 }, ptr %a375
|
|
store { ptr, i64, i64 } %t376, ptr %a340
|
|
br label %endif2092
|
|
endif2092:
|
|
%t377 = load ptr, ptr %a1
|
|
%t378 = load { ptr, i64, i64 }, ptr %a340
|
|
%t379 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t380 = load { ptr, i64, i64 }, ptr %t379
|
|
%t381 = call i64 @finch.gen.findEnum(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t380)
|
|
%t382 = icmp sge i64 %t381, 0
|
|
br i1 %t382, label %then2096, label %endif2098
|
|
then2096:
|
|
%t383 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1171, i64 4, i64 0 }, 0
|
|
%t384 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t385 = load { ptr, i64, i64 }, ptr %t384
|
|
store { ptr, i64, i64 } %t385, ptr %a386
|
|
call void @finch_str_copy(ptr %a387, ptr %a386)
|
|
%t388 = load { ptr, i64, i64 }, ptr %a387
|
|
%t389 = insertvalue %S.ast.Type %t383, { ptr, i64, i64 } %t388, 2
|
|
%t390 = load { ptr, i64, i64 }, ptr %a340
|
|
store { ptr, i64, i64 } %t390, ptr %a391
|
|
call void @finch_str_copy(ptr %a392, ptr %a391)
|
|
%t393 = load { ptr, i64, i64 }, ptr %a392
|
|
%t394 = insertvalue %S.ast.Type %t389, { ptr, i64, i64 } %t393, 3
|
|
ret %S.ast.Type %t394
|
|
endif2098:
|
|
%t395 = load ptr, ptr %a1
|
|
%t396 = load { ptr, i64, i64 }, ptr %a340
|
|
%t397 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t398 = load { ptr, i64, i64 }, ptr %t397
|
|
%t399 = call i64 @finch.gen.findStruct(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398)
|
|
%t400 = icmp slt i64 %t399, 0
|
|
br i1 %t400, label %then2099, label %endif2101
|
|
then2099:
|
|
%t401 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t402 = getelementptr inbounds { ptr, i64, i64 }, ptr %t401, i32 0, i32 1
|
|
%t403 = load i64, ptr %t402
|
|
%t404 = icmp eq i64 %t403, 0
|
|
br label %logic.from2102
|
|
logic.from2102:
|
|
br i1 %t404, label %logic.rhs2103, label %logic.end2104
|
|
logic.rhs2103:
|
|
%t405 = load ptr, ptr %a1
|
|
%t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t407 = load { ptr, i64, i64 }, ptr %t406
|
|
%t408 = call i64 @finch.gen.findStruct(ptr %t405, { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, { ptr, i64, i64 } %t407)
|
|
%t409 = icmp sge i64 %t408, 0
|
|
br label %logic.rend2105
|
|
logic.rend2105:
|
|
br label %logic.end2104
|
|
logic.end2104:
|
|
%t410 = phi i1 [ false, %logic.from2102 ], [ %t409, %logic.rend2105 ]
|
|
br i1 %t410, label %then2106, label %endif2108
|
|
then2106:
|
|
%t411 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1173, i64 6, i64 0 }, 0
|
|
%t412 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t413 = load { ptr, i64, i64 }, ptr %t412
|
|
store { ptr, i64, i64 } %t413, ptr %a414
|
|
call void @finch_str_copy(ptr %a415, ptr %a414)
|
|
%t416 = load { ptr, i64, i64 }, ptr %a415
|
|
%t417 = insertvalue %S.ast.Type %t411, { ptr, i64, i64 } %t416, 2
|
|
%t418 = insertvalue %S.ast.Type %t417, { ptr, i64, i64 } { ptr @.str.1174, i64 1, i64 0 }, 3
|
|
ret %S.ast.Type %t418
|
|
endif2108:
|
|
%t419 = load ptr, ptr %a1
|
|
%t420 = load %S.ast.Node, ptr %a3
|
|
%t421 = load %S.ast.Type, ptr %a2
|
|
%t422 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t421)
|
|
store { ptr, i64, i64 } { ptr @.str.1175, i64 24, i64 0 }, ptr %a424
|
|
store { ptr, i64, i64 } %t422, ptr %a425
|
|
call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425)
|
|
%t426 = load { ptr, i64, i64 }, ptr %a423
|
|
store { ptr, i64, i64 } %t426, ptr %a428
|
|
store { ptr, i64, i64 } { ptr @.str.1176, i64 1, i64 0 }, ptr %a429
|
|
call void @finch_str_concat(ptr %a427, ptr %a428, ptr %a429)
|
|
%t430 = load { ptr, i64, i64 }, ptr %a427
|
|
call void @finch.gen.fail(ptr %t419, %S.ast.Node %t420, { ptr, i64, i64 } %t430)
|
|
br label %endif2101
|
|
endif2101:
|
|
%t431 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1177, i64 6, i64 0 }, 0
|
|
%t432 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t433 = load { ptr, i64, i64 }, ptr %t432
|
|
store { ptr, i64, i64 } %t433, ptr %a434
|
|
call void @finch_str_copy(ptr %a435, ptr %a434)
|
|
%t436 = load { ptr, i64, i64 }, ptr %a435
|
|
%t437 = insertvalue %S.ast.Type %t431, { ptr, i64, i64 } %t436, 2
|
|
%t438 = load { ptr, i64, i64 }, ptr %a340
|
|
store { ptr, i64, i64 } %t438, ptr %a439
|
|
call void @finch_str_copy(ptr %a440, ptr %a439)
|
|
%t441 = load { ptr, i64, i64 }, ptr %a440
|
|
%t442 = insertvalue %S.ast.Type %t437, { ptr, i64, i64 } %t441, 3
|
|
ret %S.ast.Type %t442
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.1179, i64 1, i64 0 }, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.1180, i64 1, i64 0 }, ptr %a6
|
|
call void @finch_str_replace(ptr %a4, ptr %a3, ptr %a5, ptr %a6)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.1183, i64 0, i64 0 }, ptr %a11
|
|
call void @finch_str_replace(ptr %a9, ptr %a8, ptr %a10, ptr %a11)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.1185, i64 1, i64 0 }, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.1186, i64 1, i64 0 }, ptr %a16
|
|
call void @finch_str_replace(ptr %a14, ptr %a13, ptr %a15, ptr %a16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.1189, i64 0, i64 0 }, ptr %a21
|
|
call void @finch_str_replace(ptr %a19, ptr %a18, ptr %a20, ptr %a21)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a19
|
|
ret { ptr, i64, i64 } %t22
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t3 = load i64, ptr %t2
|
|
%t4 = icmp eq i64 %t3, 0
|
|
br i1 %t4, label %then2109, label %endif2111
|
|
then2109:
|
|
ret { ptr, i64, i64 } { ptr @.str.1190, i64 4, i64 0 }
|
|
endif2111:
|
|
%t5 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
call void @finch_str_copy(ptr %a7, ptr %a6)
|
|
%t8 = load { ptr, i64, i64 }, ptr %a7
|
|
ret { ptr, i64, i64 } %t8
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.llty(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
call void @finch_str_copy(ptr %a6, ptr %a5)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
%t9 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.1191, i64 4, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br i1 %t13, label %then2112, label %endif2114
|
|
then2112:
|
|
ret { ptr, i64, i64 } { ptr @.str.1192, i64 2, i64 0 }
|
|
endif2114:
|
|
%t14 = load %S.ast.Type, ptr %a2
|
|
%t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14)
|
|
br label %logic.from2115
|
|
logic.from2115:
|
|
br i1 %t15, label %logic.end2117, label %logic.rhs2116
|
|
logic.rhs2116:
|
|
%t16 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.1193, i64 4, i64 0 }, ptr %a18
|
|
%t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18)
|
|
%t20 = icmp ne i32 %t19, 0
|
|
br label %logic.rend2118
|
|
logic.rend2118:
|
|
br label %logic.end2117
|
|
logic.end2117:
|
|
%t21 = phi i1 [ true, %logic.from2115 ], [ %t20, %logic.rend2118 ]
|
|
br i1 %t21, label %then2119, label %endif2121
|
|
then2119:
|
|
%t22 = load %S.ast.Type, ptr %a2
|
|
%t23 = call i64 @finch.gen.bitsOf(%S.ast.Type %t22)
|
|
call void @finch_str_from_int(ptr %a24, i64 %t23)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } { ptr @.str.1194, i64 1, i64 0 }, ptr %a27
|
|
store { ptr, i64, i64 } %t25, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
ret { ptr, i64, i64 } %t29
|
|
endif2121:
|
|
%t30 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t30, ptr %a31
|
|
store { ptr, i64, i64 } { ptr @.str.1195, i64 5, i64 0 }, ptr %a32
|
|
%t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32)
|
|
%t34 = icmp ne i32 %t33, 0
|
|
br i1 %t34, label %then2122, label %endif2124
|
|
then2122:
|
|
ret { ptr, i64, i64 } { ptr @.str.1196, i64 6, i64 0 }
|
|
endif2124:
|
|
%t35 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.1197, i64 3, i64 0 }, ptr %a37
|
|
%t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37)
|
|
%t39 = icmp ne i32 %t38, 0
|
|
br i1 %t39, label %then2125, label %endif2127
|
|
then2125:
|
|
ret { ptr, i64, i64 } { ptr @.str.1198, i64 5, i64 0 }
|
|
endif2127:
|
|
%t40 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t40, ptr %a41
|
|
store { ptr, i64, i64 } { ptr @.str.1199, i64 3, i64 0 }, ptr %a42
|
|
%t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42)
|
|
%t44 = icmp ne i32 %t43, 0
|
|
br label %logic.from2128
|
|
logic.from2128:
|
|
br i1 %t44, label %logic.end2130, label %logic.rhs2129
|
|
logic.rhs2129:
|
|
%t45 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t45, ptr %a46
|
|
store { ptr, i64, i64 } { ptr @.str.1200, i64 5, i64 0 }, ptr %a47
|
|
%t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47)
|
|
%t49 = icmp ne i32 %t48, 0
|
|
br label %logic.rend2131
|
|
logic.rend2131:
|
|
br label %logic.end2130
|
|
logic.end2130:
|
|
%t50 = phi i1 [ true, %logic.from2128 ], [ %t49, %logic.rend2131 ]
|
|
br i1 %t50, label %then2132, label %endif2134
|
|
then2132:
|
|
ret { ptr, i64, i64 } { ptr @.str.1201, i64 17, i64 0 }
|
|
endif2134:
|
|
%t51 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
store { ptr, i64, i64 } { ptr @.str.1202, i64 3, i64 0 }, ptr %a53
|
|
%t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53)
|
|
%t55 = icmp ne i32 %t54, 0
|
|
br i1 %t55, label %then2135, label %endif2137
|
|
then2135:
|
|
ret { ptr, i64, i64 } { ptr @.str.1203, i64 37, i64 0 }
|
|
endif2137:
|
|
%t56 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t56, ptr %a57
|
|
store { ptr, i64, i64 } { ptr @.str.1204, i64 5, i64 0 }, ptr %a58
|
|
%t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58)
|
|
%t60 = icmp ne i32 %t59, 0
|
|
br i1 %t60, label %then2138, label %endif2140
|
|
then2138:
|
|
%t61 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4
|
|
%t62 = load i64, ptr %t61
|
|
call void @finch_str_from_int(ptr %a63, i64 %t62)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.1205, i64 1, i64 0 }, ptr %a66
|
|
store { ptr, i64, i64 } %t64, ptr %a67
|
|
call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t68, ptr %a70
|
|
store { ptr, i64, i64 } { ptr @.str.1206, i64 3, i64 0 }, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
%t73 = load ptr, ptr %a1
|
|
%t74 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t75 = load { ptr, i64, i64 }, ptr %t74
|
|
%t76 = extractvalue { ptr, i64, i64 } %t75, 1
|
|
%t77 = icmp uge i64 0, %t76
|
|
br i1 %t77, label %range2141, label %inrange2142
|
|
range2141:
|
|
call void @finch_panic_index(ptr @.str.1207, i64 467, i64 0, i64 %t76)
|
|
unreachable
|
|
inrange2142:
|
|
%t78 = extractvalue { ptr, i64, i64 } %t75, 0
|
|
%t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 0
|
|
%t80 = load %S.ast.Type, ptr %t79
|
|
%t81 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t73, %S.ast.Type %t80)
|
|
store { ptr, i64, i64 } %t72, ptr %a83
|
|
store { ptr, i64, i64 } %t81, ptr %a84
|
|
call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } %t85, ptr %a87
|
|
store { ptr, i64, i64 } { ptr @.str.1208, i64 1, i64 0 }, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
ret { ptr, i64, i64 } %t89
|
|
endif2140:
|
|
%t90 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t90, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.1209, i64 4, i64 0 }, ptr %a92
|
|
%t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92)
|
|
%t94 = icmp ne i32 %t93, 0
|
|
br i1 %t94, label %then2143, label %endif2145
|
|
then2143:
|
|
ret { ptr, i64, i64 } { ptr @.str.1210, i64 3, i64 0 }
|
|
endif2145:
|
|
%t95 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t95, ptr %a96
|
|
store { ptr, i64, i64 } { ptr @.str.1211, i64 3, i64 0 }, ptr %a97
|
|
%t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97)
|
|
%t99 = icmp ne i32 %t98, 0
|
|
br label %logic.from2146
|
|
logic.from2146:
|
|
br i1 %t99, label %logic.end2148, label %logic.rhs2147
|
|
logic.rhs2147:
|
|
%t100 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t100, ptr %a101
|
|
store { ptr, i64, i64 } { ptr @.str.1212, i64 4, i64 0 }, ptr %a102
|
|
%t103 = call i32 @finch_str_eq(ptr %a101, ptr %a102)
|
|
%t104 = icmp ne i32 %t103, 0
|
|
br label %logic.rend2149
|
|
logic.rend2149:
|
|
br label %logic.end2148
|
|
logic.end2148:
|
|
%t105 = phi i1 [ true, %logic.from2146 ], [ %t104, %logic.rend2149 ]
|
|
br i1 %t105, label %then2150, label %endif2152
|
|
then2150:
|
|
ret { ptr, i64, i64 } { ptr @.str.1213, i64 3, i64 0 }
|
|
endif2152:
|
|
%t106 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t106, ptr %a107
|
|
store { ptr, i64, i64 } { ptr @.str.1214, i64 4, i64 0 }, ptr %a108
|
|
%t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108)
|
|
%t110 = icmp ne i32 %t109, 0
|
|
br i1 %t110, label %then2153, label %endif2155
|
|
then2153:
|
|
ret { ptr, i64, i64 } { ptr @.str.1215, i64 4, i64 0 }
|
|
endif2155:
|
|
%t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t112 = load { ptr, i64, i64 }, ptr %t111
|
|
%t113 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t112)
|
|
store { ptr, i64, i64 } { ptr @.str.1216, i64 3, i64 0 }, ptr %a115
|
|
store { ptr, i64, i64 } %t113, ptr %a116
|
|
call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a114
|
|
store { ptr, i64, i64 } %t117, ptr %a119
|
|
store { ptr, i64, i64 } { ptr @.str.1217, i64 1, i64 0 }, ptr %a120
|
|
call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120)
|
|
%t121 = load { ptr, i64, i64 }, ptr %a118
|
|
%t122 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t123 = load { ptr, i64, i64 }, ptr %t122
|
|
%t124 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t123)
|
|
store { ptr, i64, i64 } %t121, ptr %a126
|
|
store { ptr, i64, i64 } %t124, ptr %a127
|
|
call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127)
|
|
%t128 = load { ptr, i64, i64 }, ptr %a125
|
|
ret { ptr, i64, i64 } %t128
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.gen.FnSig, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.gen.FnSig %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9
|
|
%t4 = load i1, ptr %t3
|
|
%t5 = xor i1 %t4, true
|
|
br i1 %t5, label %then2156, label %endif2158
|
|
then2156:
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t8 = load %S.ast.Type, ptr %t7
|
|
%t9 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t6, %S.ast.Type %t8)
|
|
ret { ptr, i64, i64 } %t9
|
|
endif2158:
|
|
store { ptr, i64, i64 } { ptr @.str.1218, i64 2, i64 0 }, ptr %a10
|
|
%t11 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t12 = getelementptr inbounds %S.ast.Type, ptr %t11, i32 0, i32 0
|
|
%t13 = load { ptr, i64, i64 }, ptr %t12
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.1219, i64 4, i64 0 }, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp eq i32 %t16, 0
|
|
br i1 %t17, label %then2159, label %endif2161
|
|
then2159:
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t20 = load %S.ast.Type, ptr %t19
|
|
%t21 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t18, %S.ast.Type %t20)
|
|
store { ptr, i64, i64 } %t21, ptr %a10
|
|
br label %endif2161
|
|
endif2161:
|
|
%t22 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.1220, i64 6, i64 0 }, ptr %a24
|
|
store { ptr, i64, i64 } %t22, ptr %a25
|
|
call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t26, ptr %a28
|
|
store { ptr, i64, i64 } { ptr @.str.1221, i64 21, i64 0 }, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
ret { ptr, i64, i64 } %t30
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Node, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
store %S.ast.Node %p0, ptr %a1
|
|
%t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0
|
|
%t3 = load { ptr, i64, i64 }, ptr %t2
|
|
store { ptr, i64, i64 } %t3, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.1222, i64 1, i64 0 }, ptr %a6
|
|
call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a4
|
|
%t8 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11
|
|
%t9 = load i64, ptr %t8
|
|
call void @finch_str_from_int(ptr %a10, i64 %t9)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t7, ptr %a13
|
|
store { ptr, i64, i64 } %t11, ptr %a14
|
|
call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t15, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.1223, i64 1, i64 0 }, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
%t20 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12
|
|
%t21 = load i64, ptr %t20
|
|
call void @finch_str_from_int(ptr %a22, i64 %t21)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t19, ptr %a25
|
|
store { ptr, i64, i64 } %t23, ptr %a26
|
|
call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } %t27, ptr %a29
|
|
store { ptr, i64, i64 } { ptr @.str.1224, i64 1, i64 0 }, ptr %a30
|
|
call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a28
|
|
%t32 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13
|
|
%t33 = load i64, ptr %t32
|
|
call void @finch_str_from_int(ptr %a34, i64 %t33)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } %t31, ptr %a37
|
|
store { ptr, i64, i64 } %t35, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
ret { ptr, i64, i64 } %t39
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
%t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t3 = load { ptr, i64, i64 }, ptr %t2
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
call void @finch_str_copy(ptr %a5, ptr %a4)
|
|
%t6 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
%t8 = load %S.ast.Type, ptr %a1
|
|
%t9 = call i1 @finch.gen.isInt(%S.ast.Type %t8)
|
|
br label %logic.from2162
|
|
logic.from2162:
|
|
br i1 %t9, label %logic.end2164, label %logic.rhs2163
|
|
logic.rhs2163:
|
|
%t10 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t10, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.1225, i64 4, i64 0 }, ptr %a12
|
|
%t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12)
|
|
%t14 = icmp ne i32 %t13, 0
|
|
br label %logic.rend2165
|
|
logic.rend2165:
|
|
br label %logic.end2164
|
|
logic.end2164:
|
|
%t15 = phi i1 [ true, %logic.from2162 ], [ %t14, %logic.rend2165 ]
|
|
br label %logic.from2166
|
|
logic.from2166:
|
|
br i1 %t15, label %logic.end2168, label %logic.rhs2167
|
|
logic.rhs2167:
|
|
%t16 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.1226, i64 4, i64 0 }, ptr %a18
|
|
%t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18)
|
|
%t20 = icmp ne i32 %t19, 0
|
|
br label %logic.rend2169
|
|
logic.rend2169:
|
|
br label %logic.end2168
|
|
logic.end2168:
|
|
%t21 = phi i1 [ true, %logic.from2166 ], [ %t20, %logic.rend2169 ]
|
|
br i1 %t21, label %then2170, label %endif2172
|
|
then2170:
|
|
ret { ptr, i64, i64 } { ptr @.str.1227, i64 1, i64 0 }
|
|
endif2172:
|
|
%t22 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.1228, i64 4, i64 0 }, ptr %a24
|
|
%t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24)
|
|
%t26 = icmp ne i32 %t25, 0
|
|
br i1 %t26, label %then2173, label %endif2175
|
|
then2173:
|
|
ret { ptr, i64, i64 } { ptr @.str.1229, i64 5, i64 0 }
|
|
endif2175:
|
|
%t27 = load %S.ast.Type, ptr %a1
|
|
%t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27)
|
|
br i1 %t28, label %then2176, label %endif2178
|
|
then2176:
|
|
ret { ptr, i64, i64 } { ptr @.str.1230, i64 3, i64 0 }
|
|
endif2178:
|
|
%t29 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t29, ptr %a30
|
|
store { ptr, i64, i64 } { ptr @.str.1231, i64 3, i64 0 }, ptr %a31
|
|
%t32 = call i32 @finch_str_eq(ptr %a30, ptr %a31)
|
|
%t33 = icmp ne i32 %t32, 0
|
|
br label %logic.from2179
|
|
logic.from2179:
|
|
br i1 %t33, label %logic.end2181, label %logic.rhs2180
|
|
logic.rhs2180:
|
|
%t34 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t34, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.1232, i64 4, i64 0 }, ptr %a36
|
|
%t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36)
|
|
%t38 = icmp ne i32 %t37, 0
|
|
br label %logic.rend2182
|
|
logic.rend2182:
|
|
br label %logic.end2181
|
|
logic.end2181:
|
|
%t39 = phi i1 [ true, %logic.from2179 ], [ %t38, %logic.rend2182 ]
|
|
br i1 %t39, label %then2183, label %endif2185
|
|
then2183:
|
|
ret { ptr, i64, i64 } { ptr @.str.1233, i64 4, i64 0 }
|
|
endif2185:
|
|
ret { ptr, i64, i64 } { ptr @.str.1234, i64 15, i64 0 }
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.sizeOf(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load %S.ast.Type, ptr %a2
|
|
%t5 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t4)
|
|
store { ptr, i64, i64 } { ptr @.str.1235, i64 29, i64 0 }, ptr %a7
|
|
store { ptr, i64, i64 } %t5, ptr %a8
|
|
call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8)
|
|
%t9 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t9, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.1236, i64 26, i64 0 }, ptr %a12
|
|
call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a10
|
|
ret { ptr, i64, i64 } %t13
|
|
}
|
|
|
|
define internal i1 @finch.gen.owning(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.1237, i64 3, i64 0 }, ptr %a6
|
|
%t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6)
|
|
%t8 = icmp ne i32 %t7, 0
|
|
br label %logic.from2186
|
|
logic.from2186:
|
|
br i1 %t8, label %logic.end2188, label %logic.rhs2187
|
|
logic.rhs2187:
|
|
%t9 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t10 = load { ptr, i64, i64 }, ptr %t9
|
|
store { ptr, i64, i64 } %t10, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.1238, i64 5, i64 0 }, ptr %a12
|
|
%t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12)
|
|
%t14 = icmp ne i32 %t13, 0
|
|
br label %logic.rend2189
|
|
logic.rend2189:
|
|
br label %logic.end2188
|
|
logic.end2188:
|
|
%t15 = phi i1 [ true, %logic.from2186 ], [ %t14, %logic.rend2189 ]
|
|
br label %logic.from2190
|
|
logic.from2190:
|
|
br i1 %t15, label %logic.end2192, label %logic.rhs2191
|
|
logic.rhs2191:
|
|
%t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t17 = load { ptr, i64, i64 }, ptr %t16
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.1239, i64 3, i64 0 }, ptr %a19
|
|
%t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19)
|
|
%t21 = icmp ne i32 %t20, 0
|
|
br label %logic.rend2193
|
|
logic.rend2193:
|
|
br label %logic.end2192
|
|
logic.end2192:
|
|
%t22 = phi i1 [ true, %logic.from2190 ], [ %t21, %logic.rend2193 ]
|
|
br i1 %t22, label %then2194, label %endif2196
|
|
then2194:
|
|
ret i1 true
|
|
endif2196:
|
|
%t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t24 = load { ptr, i64, i64 }, ptr %t23
|
|
store { ptr, i64, i64 } %t24, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.1240, i64 6, i64 0 }, ptr %a26
|
|
%t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26)
|
|
%t28 = icmp ne i32 %t27, 0
|
|
br i1 %t28, label %then2197, label %endif2199
|
|
then2197:
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = icmp eq ptr %t29, null
|
|
br i1 %t30, label %panic2200, label %ok2201
|
|
panic2200:
|
|
call void @finch_panic(ptr @.str.1241, i64 525, ptr @.str.1242)
|
|
unreachable
|
|
ok2201:
|
|
%t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t34 = load { ptr, i64, i64 }, ptr %t33
|
|
%t35 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t36 = load { ptr, i64, i64 }, ptr %t35
|
|
%t37 = call i64 @finch.gen.findStruct(ptr %t32, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t36)
|
|
%t38 = load { ptr, i64, i64 }, ptr %t31
|
|
%t39 = extractvalue { ptr, i64, i64 } %t38, 1
|
|
%t40 = icmp uge i64 %t37, %t39
|
|
br i1 %t40, label %range2202, label %inrange2203
|
|
range2202:
|
|
call void @finch_panic_index(ptr @.str.1243, i64 525, i64 %t37, i64 %t39)
|
|
unreachable
|
|
inrange2203:
|
|
%t41 = extractvalue { ptr, i64, i64 } %t38, 0
|
|
%t42 = getelementptr inbounds %S.gen.StructDef, ptr %t41, i64 %t37
|
|
%t43 = getelementptr inbounds %S.gen.StructDef, ptr %t42, i32 0, i32 16
|
|
%t44 = load i1, ptr %t43
|
|
ret i1 %t44
|
|
endif2199:
|
|
ret i1 false
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %p0) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
%t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t3 = load { ptr, i64, i64 }, ptr %t2
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.1244, i64 5, i64 0 }, ptr %a5
|
|
%t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5)
|
|
%t7 = icmp ne i32 %t6, 0
|
|
br i1 %t7, label %then2204, label %endif2206
|
|
then2204:
|
|
%t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t9 = load { ptr, i64, i64 }, ptr %t8
|
|
%t10 = extractvalue { ptr, i64, i64 } %t9, 1
|
|
%t11 = icmp uge i64 0, %t10
|
|
br i1 %t11, label %range2207, label %inrange2208
|
|
range2207:
|
|
call void @finch_panic_index(ptr @.str.1246, i64 532, i64 0, i64 %t10)
|
|
unreachable
|
|
inrange2208:
|
|
%t12 = extractvalue { ptr, i64, i64 } %t9, 0
|
|
%t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 0
|
|
%t14 = load %S.ast.Type, ptr %t13
|
|
%t15 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t14)
|
|
store { ptr, i64, i64 } { ptr @.str.1245, i64 4, i64 0 }, ptr %a17
|
|
store { ptr, i64, i64 } %t15, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
ret { ptr, i64, i64 } %t19
|
|
endif2206:
|
|
%t20 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t21 = load { ptr, i64, i64 }, ptr %t20
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
store { ptr, i64, i64 } { ptr @.str.1247, i64 3, i64 0 }, ptr %a23
|
|
%t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23)
|
|
%t25 = icmp ne i32 %t24, 0
|
|
br i1 %t25, label %then2209, label %endif2211
|
|
then2209:
|
|
%t26 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
%t28 = extractvalue { ptr, i64, i64 } %t27, 1
|
|
%t29 = icmp uge i64 0, %t28
|
|
br i1 %t29, label %range2212, label %inrange2213
|
|
range2212:
|
|
call void @finch_panic_index(ptr @.str.1249, i64 535, i64 0, i64 %t28)
|
|
unreachable
|
|
inrange2213:
|
|
%t30 = extractvalue { ptr, i64, i64 } %t27, 0
|
|
%t31 = getelementptr inbounds %S.ast.Type, ptr %t30, i64 0
|
|
%t32 = load %S.ast.Type, ptr %t31
|
|
%t33 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t32)
|
|
store { ptr, i64, i64 } { ptr @.str.1248, i64 4, i64 0 }, ptr %a35
|
|
store { ptr, i64, i64 } %t33, ptr %a36
|
|
call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } %t37, ptr %a39
|
|
store { ptr, i64, i64 } { ptr @.str.1250, i64 1, i64 0 }, ptr %a40
|
|
call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a38
|
|
%t42 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1
|
|
%t43 = load { ptr, i64, i64 }, ptr %t42
|
|
%t44 = extractvalue { ptr, i64, i64 } %t43, 1
|
|
%t45 = icmp uge i64 1, %t44
|
|
br i1 %t45, label %range2214, label %inrange2215
|
|
range2214:
|
|
call void @finch_panic_index(ptr @.str.1251, i64 535, i64 1, i64 %t44)
|
|
unreachable
|
|
inrange2215:
|
|
%t46 = extractvalue { ptr, i64, i64 } %t43, 0
|
|
%t47 = getelementptr inbounds %S.ast.Type, ptr %t46, i64 1
|
|
%t48 = load %S.ast.Type, ptr %t47
|
|
%t49 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t48)
|
|
store { ptr, i64, i64 } %t41, ptr %a51
|
|
store { ptr, i64, i64 } %t49, ptr %a52
|
|
call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52)
|
|
%t53 = load { ptr, i64, i64 }, ptr %a50
|
|
ret { ptr, i64, i64 } %t53
|
|
endif2211:
|
|
%t54 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t55 = load { ptr, i64, i64 }, ptr %t54
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
store { ptr, i64, i64 } { ptr @.str.1252, i64 4, i64 0 }, ptr %a57
|
|
%t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57)
|
|
%t59 = icmp ne i32 %t58, 0
|
|
br i1 %t59, label %then2216, label %endif2218
|
|
then2216:
|
|
%t60 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3
|
|
%t61 = load { ptr, i64, i64 }, ptr %t60
|
|
%t62 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t61)
|
|
store { ptr, i64, i64 } { ptr @.str.1253, i64 2, i64 0 }, ptr %a64
|
|
store { ptr, i64, i64 } %t62, ptr %a65
|
|
call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65)
|
|
%t66 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t66, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.1254, i64 1, i64 0 }, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
%t71 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2
|
|
%t72 = load { ptr, i64, i64 }, ptr %t71
|
|
store { ptr, i64, i64 } %t70, ptr %a74
|
|
store { ptr, i64, i64 } %t72, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
ret { ptr, i64, i64 } %t76
|
|
endif2218:
|
|
%t77 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t78 = load { ptr, i64, i64 }, ptr %t77
|
|
store { ptr, i64, i64 } %t78, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.1255, i64 6, i64 0 }, ptr %a80
|
|
%t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80)
|
|
%t82 = icmp ne i32 %t81, 0
|
|
br i1 %t82, label %then2219, label %endif2221
|
|
then2219:
|
|
%t83 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3
|
|
%t84 = load { ptr, i64, i64 }, ptr %t83
|
|
%t85 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t84)
|
|
store { ptr, i64, i64 } { ptr @.str.1256, i64 2, i64 0 }, ptr %a87
|
|
store { ptr, i64, i64 } %t85, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t89, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.1257, i64 1, i64 0 }, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
%t94 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2
|
|
%t95 = load { ptr, i64, i64 }, ptr %t94
|
|
%t96 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t95)
|
|
store { ptr, i64, i64 } %t93, ptr %a98
|
|
store { ptr, i64, i64 } %t96, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
ret { ptr, i64, i64 } %t100
|
|
endif2221:
|
|
%t101 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t102 = load { ptr, i64, i64 }, ptr %t101
|
|
store { ptr, i64, i64 } %t102, ptr %a103
|
|
call void @finch_str_copy(ptr %a104, ptr %a103)
|
|
%t105 = load { ptr, i64, i64 }, ptr %a104
|
|
ret { ptr, i64, i64 } %t105
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) {
|
|
entry:
|
|
%a1 = alloca i64, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
store i64 %p0, ptr %a1
|
|
store { ptr, i64, i64 } { ptr @.str.1258, i64 16, i64 0 }, ptr %a2
|
|
%t3 = load i64, ptr %a1
|
|
%t4 = sdiv i64 %t3, 16
|
|
%t5 = load { ptr, i64, i64 }, ptr %a2
|
|
%t6 = extractvalue { ptr, i64, i64 } %t5, 1
|
|
%t7 = icmp uge i64 %t4, %t6
|
|
br i1 %t7, label %range2222, label %inrange2223
|
|
range2222:
|
|
call void @finch_panic_index(ptr @.str.1259, i64 550, i64 %t4, i64 %t6)
|
|
unreachable
|
|
inrange2223:
|
|
%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 %range2224, label %inrange2225
|
|
range2224:
|
|
call void @finch_panic_index(ptr @.str.1260, i64 550, i64 %t14, i64 %t16)
|
|
unreachable
|
|
inrange2225:
|
|
%t18 = extractvalue { ptr, i64, i64 } %t15, 0
|
|
%t19 = getelementptr inbounds i8, ptr %t18, i64 %t14
|
|
%t20 = load i8, ptr %t19
|
|
call void @finch_str_from_char(ptr %a21, i8 signext %t20)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a21
|
|
store { ptr, i64, i64 } %t12, ptr %a24
|
|
store { ptr, i64, i64 } %t22, ptr %a25
|
|
call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
ret { ptr, i64, i64 } %t26
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca i64, align 16
|
|
%a28 = alloca i8, align 16
|
|
%a31 = alloca i64, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic2226, label %ok2227
|
|
panic2226:
|
|
call void @finch_panic(ptr @.str.1261, i64 554, ptr @.str.1262)
|
|
unreachable
|
|
ok2227:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 8
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = add i64 %t6, 1
|
|
store i64 %t7, ptr %t5
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = icmp eq ptr %t8, null
|
|
br i1 %t9, label %panic2228, label %ok2229
|
|
panic2228:
|
|
call void @finch_panic(ptr @.str.1264, i64 555, ptr @.str.1265)
|
|
unreachable
|
|
ok2229:
|
|
%t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 8
|
|
%t11 = load i64, ptr %t10
|
|
call void @finch_str_from_int(ptr %a12, i64 %t11)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.1263, i64 6, i64 0 }, ptr %a15
|
|
store { ptr, i64, i64 } %t13, ptr %a16
|
|
call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a19
|
|
store i64 0, ptr %a20
|
|
br label %each.cond2230
|
|
each.cond2230:
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
%t22 = load i64, ptr %t21
|
|
%t23 = load i64, ptr %a20
|
|
%t24 = icmp slt i64 %t23, %t22
|
|
br i1 %t24, label %each.body2231, label %each.end2233
|
|
each.body2231:
|
|
%t25 = load ptr, ptr %a2
|
|
%t26 = getelementptr inbounds i8, ptr %t25, i64 %t23
|
|
%t27 = load i8, ptr %t26
|
|
store i8 %t27, ptr %a28
|
|
%t29 = load i8, ptr %a28
|
|
%t30 = zext i8 %t29 to i64
|
|
store i64 %t30, ptr %a31
|
|
%t32 = load i64, ptr %a31
|
|
%t33 = icmp slt i64 %t32, 0
|
|
br i1 %t33, label %then2234, label %endif2236
|
|
then2234:
|
|
%t34 = load i64, ptr %a31
|
|
%t35 = add i64 %t34, 256
|
|
store i64 %t35, ptr %a31
|
|
br label %endif2236
|
|
endif2236:
|
|
%t36 = load i64, ptr %a31
|
|
%t37 = icmp sge i64 %t36, 32
|
|
br label %logic.from2237
|
|
logic.from2237:
|
|
br i1 %t37, label %logic.rhs2238, label %logic.end2239
|
|
logic.rhs2238:
|
|
%t38 = load i64, ptr %a31
|
|
%t39 = icmp slt i64 %t38, 127
|
|
br label %logic.rend2240
|
|
logic.rend2240:
|
|
br label %logic.end2239
|
|
logic.end2239:
|
|
%t40 = phi i1 [ false, %logic.from2237 ], [ %t39, %logic.rend2240 ]
|
|
br label %logic.from2241
|
|
logic.from2241:
|
|
br i1 %t40, label %logic.rhs2242, label %logic.end2243
|
|
logic.rhs2242:
|
|
%t41 = load i8, ptr %a28
|
|
%t42 = icmp ne i8 %t41, 34
|
|
br label %logic.rend2244
|
|
logic.rend2244:
|
|
br label %logic.end2243
|
|
logic.end2243:
|
|
%t43 = phi i1 [ false, %logic.from2241 ], [ %t42, %logic.rend2244 ]
|
|
br label %logic.from2245
|
|
logic.from2245:
|
|
br i1 %t43, label %logic.rhs2246, label %logic.end2247
|
|
logic.rhs2246:
|
|
%t44 = load i8, ptr %a28
|
|
%t45 = icmp ne i8 %t44, 92
|
|
br label %logic.rend2248
|
|
logic.rend2248:
|
|
br label %logic.end2247
|
|
logic.end2247:
|
|
%t46 = phi i1 [ false, %logic.from2245 ], [ %t45, %logic.rend2248 ]
|
|
br i1 %t46, label %then2249, label %else2250
|
|
then2249:
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1
|
|
%t48 = load i8, ptr %a28
|
|
call void @finch_str_from_char(ptr %a49, i8 signext %t48)
|
|
%t50 = load { ptr, i64, i64 }, ptr %a49
|
|
%t51 = load i64, ptr %t47
|
|
%t52 = add i64 %t51, 1
|
|
call void @finch_arr_reserve(ptr %a19, i64 %t52, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t53 = load ptr, ptr %a19
|
|
%t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i64 %t51
|
|
store { ptr, i64, i64 } %t50, ptr %t54
|
|
store i64 %t52, ptr %t47
|
|
br label %endif2251
|
|
else2250:
|
|
%t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1
|
|
%t56 = load i64, ptr %a31
|
|
%t57 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t56)
|
|
store { ptr, i64, i64 } { ptr @.str.1266, i64 1, i64 0 }, ptr %a59
|
|
store { ptr, i64, i64 } %t57, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
%t62 = load i64, ptr %t55
|
|
%t63 = add i64 %t62, 1
|
|
call void @finch_arr_reserve(ptr %a19, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t64 = load ptr, ptr %a19
|
|
%t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62
|
|
store { ptr, i64, i64 } %t61, ptr %t65
|
|
store i64 %t63, ptr %t55
|
|
br label %endif2251
|
|
endif2251:
|
|
br label %each.step2232
|
|
each.step2232:
|
|
%t66 = load i64, ptr %a20
|
|
%t67 = add i64 %t66, 1
|
|
store i64 %t67, ptr %a20
|
|
br label %each.cond2230
|
|
each.end2233:
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = icmp eq ptr %t68, null
|
|
br i1 %t69, label %panic2252, label %ok2253
|
|
panic2252:
|
|
call void @finch_panic(ptr @.str.1267, i64 568, ptr @.str.1268)
|
|
unreachable
|
|
ok2253:
|
|
%t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 2
|
|
%t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1
|
|
%t72 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t72, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.1269, i64 34, i64 0 }, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
%t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
%t78 = load i64, ptr %t77
|
|
%t79 = add i64 %t78, 1
|
|
call void @finch_str_from_int(ptr %a80, i64 %t79)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t76, ptr %a83
|
|
store { ptr, i64, i64 } %t81, ptr %a84
|
|
call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } %t85, ptr %a87
|
|
store { ptr, i64, i64 } { ptr @.str.1270, i64 9, i64 0 }, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
%t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.1271, i64 0, i64 0 }, ptr %a91
|
|
call void @finch_str_join(ptr %a92, ptr %a19, ptr %a91)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a92
|
|
store { ptr, i64, i64 } %t89, ptr %a95
|
|
store { ptr, i64, i64 } %t93, ptr %a96
|
|
call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a94
|
|
store { ptr, i64, i64 } %t97, ptr %a99
|
|
store { ptr, i64, i64 } { ptr @.str.1272, i64 4, i64 0 }, ptr %a100
|
|
call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a98
|
|
%t102 = load i64, ptr %t71
|
|
%t103 = add i64 %t102, 1
|
|
call void @finch_arr_reserve(ptr %t70, i64 %t103, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t104 = load ptr, ptr %t70
|
|
%t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102
|
|
store { ptr, i64, i64 } %t101, ptr %t105
|
|
store i64 %t103, ptr %t71
|
|
%t106 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t106, ptr %a107
|
|
call void @finch_str_copy(ptr %a108, ptr %a107)
|
|
%t109 = load { ptr, i64, i64 }, ptr %a108
|
|
ret { ptr, i64, i64 } %t109
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load { ptr, i64, i64 }, ptr %a2
|
|
%t5 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t3, { ptr, i64, i64 } %t4)
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.1273, i64 6, i64 0 }, ptr %a9
|
|
store { ptr, i64, i64 } %t7, ptr %a10
|
|
call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t11, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.1274, i64 6, i64 0 }, ptr %a14
|
|
call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a12
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
%t17 = load i64, ptr %t16
|
|
call void @finch_str_from_int(ptr %a18, i64 %t17)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t15, ptr %a21
|
|
store { ptr, i64, i64 } %t19, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } %t23, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.1275, i64 9, i64 0 }, ptr %a26
|
|
call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a24
|
|
%t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t27, 0
|
|
%t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1276, i64 3, i64 0 })
|
|
%t30 = insertvalue %S.gen.Val %t28, %S.ast.Type %t29, 1
|
|
%t31 = insertvalue %S.gen.Val %t30, i1 true, 2
|
|
ret %S.gen.Val %t31
|
|
}
|
|
|
|
define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Node %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1277, i64 5, i64 0 })
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1278, i64 2, i64 0 })
|
|
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 %panic2254, label %ok2255
|
|
panic2254:
|
|
call void @finch_panic(ptr @.str.1279, i64 584, ptr @.str.1280)
|
|
unreachable
|
|
ok2255:
|
|
%t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 1
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13
|
|
%t22 = load i64, ptr %t21
|
|
%t23 = load { ptr, i64, i64 }, ptr %t20
|
|
%t24 = extractvalue { ptr, i64, i64 } %t23, 1
|
|
%t25 = icmp uge i64 %t22, %t24
|
|
br i1 %t25, label %range2256, label %inrange2257
|
|
range2256:
|
|
call void @finch_panic_index(ptr @.str.1281, i64 584, i64 %t22, i64 %t24)
|
|
unreachable
|
|
inrange2257:
|
|
%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.1282, i64 27, i64 0 }, ptr %a38
|
|
store { ptr, i64, i64 } %t36, ptr %a39
|
|
call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a37
|
|
store { ptr, i64, i64 } %t40, ptr %a42
|
|
store { ptr, i64, i64 } { ptr @.str.1283, i64 6, i64 0 }, ptr %a43
|
|
call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a41
|
|
%t45 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11
|
|
%t46 = load i64, ptr %t45
|
|
call void @finch_str_from_int(ptr %a47, i64 %t46)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } %t44, ptr %a50
|
|
store { ptr, i64, i64 } %t48, ptr %a51
|
|
call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51)
|
|
%t52 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t52, ptr %a54
|
|
store { ptr, i64, i64 } { ptr @.str.1284, i64 6, i64 0 }, ptr %a55
|
|
call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a53
|
|
%t57 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } %t56, ptr %a59
|
|
store { ptr, i64, i64 } %t57, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
store { ptr, i64, i64 } %t61, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.1285, i64 1, i64 0 }, ptr %a64
|
|
call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64)
|
|
%t65 = load { ptr, i64, i64 }, ptr %a62
|
|
call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t65)
|
|
%t66 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t66, { ptr, i64, i64 } { ptr @.str.1286, i64 11, i64 0 })
|
|
%t67 = load ptr, ptr %a1
|
|
%t68 = icmp eq ptr %t67, null
|
|
br i1 %t68, label %panic2258, label %ok2259
|
|
panic2258:
|
|
call void @finch_panic(ptr @.str.1287, i64 588, ptr @.str.1288)
|
|
unreachable
|
|
ok2259:
|
|
%t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 9
|
|
store i1 true, ptr %t69
|
|
%t70 = load ptr, ptr %a1
|
|
%t71 = load { ptr, i64, i64 }, ptr %a10
|
|
call void @finch.gen.label(ptr %t70, { ptr, i64, i64 } %t71)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.boundsCheck(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Node %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1289, i64 5, i64 0 })
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1290, i64 7, i64 0 })
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1291, i64 13, i64 0 }, ptr %a14
|
|
store { ptr, i64, i64 } %t12, ptr %a15
|
|
call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t16, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.1292, i64 2, i64 0 }, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
%t21 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t20, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
%t26 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t25)
|
|
store { ptr, i64, i64 } %t26, ptr %a27
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = load { ptr, i64, i64 }, ptr %a27
|
|
%t30 = load { ptr, i64, i64 }, ptr %a7
|
|
%t31 = load { ptr, i64, i64 }, ptr %a10
|
|
call void @finch.gen.condBr(ptr %t28, { ptr, i64, i64 } %t29, { ptr, i64, i64 } %t30, { ptr, i64, i64 } %t31)
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = load { ptr, i64, i64 }, ptr %a7
|
|
call void @finch.gen.label(ptr %t32, { ptr, i64, i64 } %t33)
|
|
%t34 = load ptr, ptr %a1
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = icmp eq ptr %t35, null
|
|
br i1 %t36, label %panic2260, label %ok2261
|
|
panic2260:
|
|
call void @finch_panic(ptr @.str.1293, i64 598, ptr @.str.1294)
|
|
unreachable
|
|
ok2261:
|
|
%t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 1
|
|
%t38 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13
|
|
%t39 = load i64, ptr %t38
|
|
%t40 = load { ptr, i64, i64 }, ptr %t37
|
|
%t41 = extractvalue { ptr, i64, i64 } %t40, 1
|
|
%t42 = icmp uge i64 %t39, %t41
|
|
br i1 %t42, label %range2262, label %inrange2263
|
|
range2262:
|
|
call void @finch_panic_index(ptr @.str.1295, i64 598, i64 %t39, i64 %t41)
|
|
unreachable
|
|
inrange2263:
|
|
%t43 = extractvalue { ptr, i64, i64 } %t40, 0
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t39
|
|
%t45 = load { ptr, i64, i64 }, ptr %t44
|
|
%t46 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t34, { ptr, i64, i64 } %t45)
|
|
store { ptr, i64, i64 } %t46, ptr %a47
|
|
%t48 = load ptr, ptr %a1
|
|
%t49 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } { ptr @.str.1296, i64 33, i64 0 }, ptr %a51
|
|
store { ptr, i64, i64 } %t49, ptr %a52
|
|
call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52)
|
|
%t53 = load { ptr, i64, i64 }, ptr %a50
|
|
store { ptr, i64, i64 } %t53, ptr %a55
|
|
store { ptr, i64, i64 } { ptr @.str.1297, i64 6, i64 0 }, ptr %a56
|
|
call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a54
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11
|
|
%t59 = load i64, ptr %t58
|
|
call void @finch_str_from_int(ptr %a60, i64 %t59)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a60
|
|
store { ptr, i64, i64 } %t57, ptr %a63
|
|
store { ptr, i64, i64 } %t61, ptr %a64
|
|
call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64)
|
|
%t65 = load { ptr, i64, i64 }, ptr %a62
|
|
store { ptr, i64, i64 } %t65, ptr %a67
|
|
store { ptr, i64, i64 } { ptr @.str.1298, i64 6, i64 0 }, ptr %a68
|
|
call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68)
|
|
%t69 = load { ptr, i64, i64 }, ptr %a66
|
|
%t70 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t69, ptr %a72
|
|
store { ptr, i64, i64 } %t70, ptr %a73
|
|
call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73)
|
|
%t74 = load { ptr, i64, i64 }, ptr %a71
|
|
store { ptr, i64, i64 } %t74, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.1299, i64 6, i64 0 }, ptr %a77
|
|
call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77)
|
|
%t78 = load { ptr, i64, i64 }, ptr %a75
|
|
%t79 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t78, ptr %a81
|
|
store { ptr, i64, i64 } %t79, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t83, ptr %a85
|
|
store { ptr, i64, i64 } { ptr @.str.1300, i64 1, i64 0 }, ptr %a86
|
|
call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a84
|
|
call void @finch.gen.emit(ptr %t48, { ptr, i64, i64 } %t87)
|
|
%t88 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } { ptr @.str.1301, i64 11, i64 0 })
|
|
%t89 = load ptr, ptr %a1
|
|
%t90 = icmp eq ptr %t89, null
|
|
br i1 %t90, label %panic2264, label %ok2265
|
|
panic2264:
|
|
call void @finch_panic(ptr @.str.1302, i64 601, ptr @.str.1303)
|
|
unreachable
|
|
ok2265:
|
|
%t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 9
|
|
store i1 true, ptr %t91
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = load { ptr, i64, i64 }, ptr %a10
|
|
call void @finch.gen.label(ptr %t92, { ptr, i64, i64 } %t93)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Saved(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Saved, ptr %src
|
|
store %S.gen.Saved %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Saved, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Saved, ptr %src, i32 0, i32 0
|
|
call void @finch.copy.arr_str(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Saved, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Saved, ptr %src, i32 0, i32 1
|
|
call void @finch.copy.arr_str(ptr %t4, ptr %t5)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Saved @finch.gen.beginHelper(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca %S.gen.Saved, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca %S.gen.Saved, align 16
|
|
%a60 = alloca %S.gen.Saved, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic2266, label %ok2267
|
|
panic2266:
|
|
call void @finch_panic(ptr @.str.1304, i64 616, ptr @.str.1305)
|
|
unreachable
|
|
ok2267:
|
|
%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 %panic2268, label %ok2269
|
|
panic2268:
|
|
call void @finch_panic(ptr @.str.1306, i64 616, ptr @.str.1307)
|
|
unreachable
|
|
ok2269:
|
|
%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 %panic2270, label %ok2271
|
|
panic2270:
|
|
call void @finch_panic(ptr @.str.1308, i64 616, ptr @.str.1309)
|
|
unreachable
|
|
ok2271:
|
|
%t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 6
|
|
%t21 = load i64, ptr %t20
|
|
%t22 = insertvalue %S.gen.Saved %t17, i64 %t21, 2
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = icmp eq ptr %t23, null
|
|
br i1 %t24, label %panic2272, label %ok2273
|
|
panic2272:
|
|
call void @finch_panic(ptr @.str.1310, i64 616, ptr @.str.1311)
|
|
unreachable
|
|
ok2273:
|
|
%t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 9
|
|
%t26 = load i1, ptr %t25
|
|
%t27 = insertvalue %S.gen.Saved %t22, i1 %t26, 3
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = icmp eq ptr %t28, null
|
|
br i1 %t29, label %panic2274, label %ok2275
|
|
panic2274:
|
|
call void @finch_panic(ptr @.str.1312, i64 616, ptr @.str.1313)
|
|
unreachable
|
|
ok2275:
|
|
%t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 32
|
|
%t31 = load i64, ptr %t30
|
|
%t32 = insertvalue %S.gen.Saved %t27, i64 %t31, 4
|
|
store %S.gen.Saved %t32, ptr %a33
|
|
%t34 = load ptr, ptr %a1
|
|
%t35 = icmp eq ptr %t34, null
|
|
br i1 %t35, label %panic2276, label %ok2277
|
|
panic2276:
|
|
call void @finch_panic(ptr @.str.1314, i64 617, ptr @.str.1315)
|
|
unreachable
|
|
ok2277:
|
|
%t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 32
|
|
store i64 -1, ptr %t36
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a37
|
|
%t38 = load { ptr, i64, i64 }, ptr %a37
|
|
%t39 = load ptr, ptr %a1
|
|
%t40 = icmp eq ptr %t39, null
|
|
br i1 %t40, label %panic2278, label %ok2279
|
|
panic2278:
|
|
call void @finch_panic(ptr @.str.1316, i64 619, ptr @.str.1317)
|
|
unreachable
|
|
ok2279:
|
|
%t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t38, ptr %a42
|
|
call void @finch.copy.arr_str(ptr %a43, ptr %a42)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a43
|
|
store { ptr, i64, i64 } %t44, ptr %t41
|
|
%t45 = load { ptr, i64, i64 }, ptr %a37
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = icmp eq ptr %t46, null
|
|
br i1 %t47, label %panic2280, label %ok2281
|
|
panic2280:
|
|
call void @finch_panic(ptr @.str.1318, i64 620, ptr @.str.1319)
|
|
unreachable
|
|
ok2281:
|
|
%t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 5
|
|
store { ptr, i64, i64 } %t45, ptr %a49
|
|
call void @finch.copy.arr_str(ptr %a50, ptr %a49)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a50
|
|
store { ptr, i64, i64 } %t51, ptr %t48
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = icmp eq ptr %t52, null
|
|
br i1 %t53, label %panic2282, label %ok2283
|
|
panic2282:
|
|
call void @finch_panic(ptr @.str.1320, i64 621, ptr @.str.1321)
|
|
unreachable
|
|
ok2283:
|
|
%t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 6
|
|
store i64 0, ptr %t54
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = icmp eq ptr %t55, null
|
|
br i1 %t56, label %panic2284, label %ok2285
|
|
panic2284:
|
|
call void @finch_panic(ptr @.str.1322, i64 622, ptr @.str.1323)
|
|
unreachable
|
|
ok2285:
|
|
%t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 9
|
|
store i1 false, ptr %t57
|
|
%t58 = load %S.gen.Saved, ptr %a33
|
|
store %S.gen.Saved %t58, ptr %a59
|
|
call void @finch.copy.S_gen_Saved(ptr %a60, ptr %a59)
|
|
%t61 = load %S.gen.Saved, ptr %a60
|
|
ret %S.gen.Saved %t61
|
|
}
|
|
|
|
define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.gen.Saved, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.gen.Saved %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = icmp eq ptr %t4, null
|
|
br i1 %t5, label %panic2286, label %ok2287
|
|
panic2286:
|
|
call void @finch_panic(ptr @.str.1324, i64 627, ptr @.str.1325)
|
|
unreachable
|
|
ok2287:
|
|
%t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 3
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1
|
|
%t8 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t8, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.1326, i64 10, i64 0 }, ptr %a11
|
|
call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a9
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = icmp eq ptr %t13, null
|
|
br i1 %t14, label %panic2288, label %ok2289
|
|
panic2288:
|
|
call void @finch_panic(ptr @.str.1327, i64 627, ptr @.str.1328)
|
|
unreachable
|
|
ok2289:
|
|
%t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 5
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.1329, i64 1, i64 0 }, ptr %a17
|
|
call void @finch_str_join(ptr %a18, ptr %t15, ptr %a17)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t12, ptr %a21
|
|
store { ptr, i64, i64 } %t19, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } %t23, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.1330, i64 1, i64 0 }, ptr %a26
|
|
call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a24
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = icmp eq ptr %t28, null
|
|
br i1 %t29, label %panic2290, label %ok2291
|
|
panic2290:
|
|
call void @finch_panic(ptr @.str.1331, i64 627, ptr @.str.1332)
|
|
unreachable
|
|
ok2291:
|
|
%t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 4
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.1333, i64 1, i64 0 }, ptr %a32
|
|
call void @finch_str_join(ptr %a33, ptr %t30, ptr %a32)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } %t27, ptr %a36
|
|
store { ptr, i64, i64 } %t34, ptr %a37
|
|
call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } %t38, ptr %a40
|
|
store { ptr, i64, i64 } { ptr @.str.1334, i64 3, i64 0 }, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
%t43 = load i64, ptr %t7
|
|
%t44 = add i64 %t43, 1
|
|
call void @finch_arr_reserve(ptr %t6, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t45 = load ptr, ptr %t6
|
|
%t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43
|
|
store { ptr, i64, i64 } %t42, ptr %t46
|
|
store i64 %t44, ptr %t7
|
|
%t47 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0
|
|
%t48 = load { ptr, i64, i64 }, ptr %t47
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = icmp eq ptr %t49, null
|
|
br i1 %t50, label %panic2292, label %ok2293
|
|
panic2292:
|
|
call void @finch_panic(ptr @.str.1335, i64 628, ptr @.str.1336)
|
|
unreachable
|
|
ok2293:
|
|
%t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t48, ptr %a52
|
|
call void @finch.copy.arr_str(ptr %a53, ptr %a52)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t54, ptr %t51
|
|
%t55 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1
|
|
%t56 = load { ptr, i64, i64 }, ptr %t55
|
|
%t57 = load ptr, ptr %a1
|
|
%t58 = icmp eq ptr %t57, null
|
|
br i1 %t58, label %panic2294, label %ok2295
|
|
panic2294:
|
|
call void @finch_panic(ptr @.str.1337, i64 629, ptr @.str.1338)
|
|
unreachable
|
|
ok2295:
|
|
%t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 5
|
|
store { ptr, i64, i64 } %t56, ptr %a60
|
|
call void @finch.copy.arr_str(ptr %a61, ptr %a60)
|
|
%t62 = load { ptr, i64, i64 }, ptr %a61
|
|
store { ptr, i64, i64 } %t62, ptr %t59
|
|
%t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2
|
|
%t64 = load i64, ptr %t63
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = icmp eq ptr %t65, null
|
|
br i1 %t66, label %panic2296, label %ok2297
|
|
panic2296:
|
|
call void @finch_panic(ptr @.str.1339, i64 630, ptr @.str.1340)
|
|
unreachable
|
|
ok2297:
|
|
%t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 6
|
|
store i64 %t64, ptr %t67
|
|
%t68 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3
|
|
%t69 = load i1, ptr %t68
|
|
%t70 = load ptr, ptr %a1
|
|
%t71 = icmp eq ptr %t70, null
|
|
br i1 %t71, label %panic2298, label %ok2299
|
|
panic2298:
|
|
call void @finch_panic(ptr @.str.1341, i64 631, ptr @.str.1342)
|
|
unreachable
|
|
ok2299:
|
|
%t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 9
|
|
store i1 %t69, ptr %t72
|
|
%t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4
|
|
%t74 = load i64, ptr %t73
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = icmp eq ptr %t75, null
|
|
br i1 %t76, label %panic2300, label %ok2301
|
|
panic2300:
|
|
call void @finch_panic(ptr @.str.1343, i64 632, ptr @.str.1344)
|
|
unreachable
|
|
ok2301:
|
|
%t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 32
|
|
store i64 %t74, ptr %t77
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.loopStart(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } { ptr @.str.1345, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = load { ptr, i64, i64 }, ptr %a5
|
|
call void @finch.gen.store(ptr %t6, { ptr, i64, i64 } { ptr @.str.1346, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1347, i64 1, i64 0 }, { ptr, i64, i64 } %t7)
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1348, i64 6, i64 0 })
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t11, { ptr, i64, i64 } { ptr @.str.1349, i64 6, i64 0 })
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t14, { ptr, i64, i64 } { ptr @.str.1350, i64 5, i64 0 })
|
|
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.1351, i64 3, i64 0 }, { ptr, i64, i64 } %t22)
|
|
store { ptr, i64, i64 } %t23, ptr %a24
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } { ptr @.str.1352, i64 13, i64 0 }, ptr %a28
|
|
store { ptr, i64, i64 } %t26, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t30, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.1353, i64 2, i64 0 }, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
%t35 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t34, ptr %a37
|
|
store { ptr, i64, i64 } %t35, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
%t40 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t39)
|
|
store { ptr, i64, i64 } %t40, ptr %a41
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = load { ptr, i64, i64 }, ptr %a41
|
|
%t44 = load { ptr, i64, i64 }, ptr %a13
|
|
%t45 = load { ptr, i64, i64 }, ptr %a16
|
|
call void @finch.gen.condBr(ptr %t42, { ptr, i64, i64 } %t43, { ptr, i64, i64 } %t44, { ptr, i64, i64 } %t45)
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = load { ptr, i64, i64 }, ptr %a13
|
|
call void @finch.gen.label(ptr %t46, { ptr, i64, i64 } %t47)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
call void @finch_str_copy(ptr %a50, ptr %a49)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a50
|
|
%t52 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
call void @finch_str_copy(ptr %a54, ptr %a53)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a54
|
|
%t56 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t56, ptr %a57
|
|
call void @finch_str_copy(ptr %a58, ptr %a57)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a58
|
|
%t60 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } %t60, ptr %a61
|
|
call void @finch_str_copy(ptr %a62, ptr %a61)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a62
|
|
%t64 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t65 = call ptr @finch_alloc(i64 %t64)
|
|
%t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 0
|
|
store { ptr, i64, i64 } %t51, ptr %t66
|
|
%t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 1
|
|
store { ptr, i64, i64 } %t55, ptr %t67
|
|
%t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 2
|
|
store { ptr, i64, i64 } %t59, ptr %t68
|
|
%t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 3
|
|
store { ptr, i64, i64 } %t63, ptr %t69
|
|
%t70 = insertvalue { ptr, i64, i64 } undef, ptr %t65, 0
|
|
%t71 = insertvalue { ptr, i64, i64 } %t70, i64 4, 1
|
|
%t72 = insertvalue { ptr, i64, i64 } %t71, i64 4, 2
|
|
ret { ptr, i64, i64 } %t72
|
|
}
|
|
|
|
define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load { ptr, i64, i64 }, ptr %a2
|
|
%t5 = extractvalue { ptr, i64, i64 } %t4, 1
|
|
%t6 = icmp uge i64 0, %t5
|
|
br i1 %t6, label %range2302, label %inrange2303
|
|
range2302:
|
|
call void @finch_panic_index(ptr @.str.1355, i64 652, i64 0, i64 %t5)
|
|
unreachable
|
|
inrange2303:
|
|
%t7 = extractvalue { ptr, i64, i64 } %t4, 0
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i64 0
|
|
%t9 = load { ptr, i64, i64 }, ptr %t8
|
|
%t10 = call { ptr, i64, i64 } @finch.gen.load(ptr %t3, { ptr, i64, i64 } { ptr @.str.1354, i64 3, i64 0 }, { ptr, i64, i64 } %t9)
|
|
store { ptr, i64, i64 } %t10, ptr %a11
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.1357, i64 8, i64 0 }, ptr %a16
|
|
store { ptr, i64, i64 } %t14, ptr %a17
|
|
call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a15
|
|
store { ptr, i64, i64 } %t18, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.1358, i64 3, i64 0 }, ptr %a21
|
|
call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a19
|
|
%t23 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t22)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a2
|
|
%t25 = extractvalue { ptr, i64, i64 } %t24, 1
|
|
%t26 = icmp uge i64 0, %t25
|
|
br i1 %t26, label %range2304, label %inrange2305
|
|
range2304:
|
|
call void @finch_panic_index(ptr @.str.1359, i64 653, i64 0, i64 %t25)
|
|
unreachable
|
|
inrange2305:
|
|
%t27 = extractvalue { ptr, i64, i64 } %t24, 0
|
|
%t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i64 0
|
|
%t29 = load { ptr, i64, i64 }, ptr %t28
|
|
call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1356, i64 3, i64 0 }, { ptr, i64, i64 } %t23, { ptr, i64, i64 } %t29)
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = load { ptr, i64, i64 }, ptr %a2
|
|
%t32 = extractvalue { ptr, i64, i64 } %t31, 1
|
|
%t33 = icmp uge i64 1, %t32
|
|
br i1 %t33, label %range2306, label %inrange2307
|
|
range2306:
|
|
call void @finch_panic_index(ptr @.str.1360, i64 654, i64 1, i64 %t32)
|
|
unreachable
|
|
inrange2307:
|
|
%t34 = extractvalue { ptr, i64, i64 } %t31, 0
|
|
%t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i64 1
|
|
%t36 = load { ptr, i64, i64 }, ptr %t35
|
|
call void @finch.gen.br(ptr %t30, { ptr, i64, i64 } %t36)
|
|
%t37 = load ptr, ptr %a1
|
|
%t38 = load { ptr, i64, i64 }, ptr %a2
|
|
%t39 = extractvalue { ptr, i64, i64 } %t38, 1
|
|
%t40 = icmp uge i64 2, %t39
|
|
br i1 %t40, label %range2308, label %inrange2309
|
|
range2308:
|
|
call void @finch_panic_index(ptr @.str.1361, i64 655, i64 2, i64 %t39)
|
|
unreachable
|
|
inrange2309:
|
|
%t41 = extractvalue { ptr, i64, i64 } %t38, 0
|
|
%t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 2
|
|
%t43 = load { ptr, i64, i64 }, ptr %t42
|
|
call void @finch.gen.label(ptr %t37, { ptr, i64, i64 } %t43)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.copyAt(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
%t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
store { ptr, i64, i64 } { ptr @.str.1362, i64 3, i64 0 }, ptr %a8
|
|
%t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8)
|
|
%t10 = icmp ne i32 %t9, 0
|
|
br i1 %t10, label %then2310, label %else2311
|
|
then2310:
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1363, i64 30, i64 0 }, ptr %a14
|
|
store { ptr, i64, i64 } %t12, ptr %a15
|
|
call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t16, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.1364, i64 6, i64 0 }, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
%t21 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t20, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.1365, i64 1, i64 0 }, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t29)
|
|
br label %endif2312
|
|
else2311:
|
|
%t30 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0
|
|
%t31 = load { ptr, i64, i64 }, ptr %t30
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.1366, i64 5, i64 0 }, ptr %a33
|
|
%t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33)
|
|
%t35 = icmp ne i32 %t34, 0
|
|
br label %logic.from2313
|
|
logic.from2313:
|
|
br i1 %t35, label %logic.end2315, label %logic.rhs2314
|
|
logic.rhs2314:
|
|
%t36 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0
|
|
%t37 = load { ptr, i64, i64 }, ptr %t36
|
|
store { ptr, i64, i64 } %t37, ptr %a38
|
|
store { ptr, i64, i64 } { ptr @.str.1367, i64 3, i64 0 }, ptr %a39
|
|
%t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39)
|
|
%t41 = icmp ne i32 %t40, 0
|
|
br label %logic.rend2316
|
|
logic.rend2316:
|
|
br label %logic.end2315
|
|
logic.end2315:
|
|
%t42 = phi i1 [ true, %logic.from2313 ], [ %t41, %logic.rend2316 ]
|
|
br label %logic.from2317
|
|
logic.from2317:
|
|
br i1 %t42, label %logic.end2319, label %logic.rhs2318
|
|
logic.rhs2318:
|
|
%t43 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0
|
|
%t44 = load { ptr, i64, i64 }, ptr %t43
|
|
store { ptr, i64, i64 } %t44, ptr %a45
|
|
store { ptr, i64, i64 } { ptr @.str.1368, i64 6, i64 0 }, ptr %a46
|
|
%t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46)
|
|
%t48 = icmp ne i32 %t47, 0
|
|
br label %logic.from2320
|
|
logic.from2320:
|
|
br i1 %t48, label %logic.rhs2321, label %logic.end2322
|
|
logic.rhs2321:
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = load %S.ast.Type, ptr %a4
|
|
%t51 = call i1 @finch.gen.owning(ptr %t49, %S.ast.Type %t50)
|
|
br label %logic.rend2323
|
|
logic.rend2323:
|
|
br label %logic.end2322
|
|
logic.end2322:
|
|
%t52 = phi i1 [ false, %logic.from2320 ], [ %t51, %logic.rend2323 ]
|
|
br label %logic.rend2324
|
|
logic.rend2324:
|
|
br label %logic.end2319
|
|
logic.end2319:
|
|
%t53 = phi i1 [ true, %logic.from2317 ], [ %t52, %logic.rend2324 ]
|
|
br i1 %t53, label %then2325, label %else2326
|
|
then2325:
|
|
%t54 = load ptr, ptr %a1
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = load %S.ast.Type, ptr %a4
|
|
%t57 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t55, %S.ast.Type %t56)
|
|
store { ptr, i64, i64 } { ptr @.str.1369, i64 10, i64 0 }, ptr %a59
|
|
store { ptr, i64, i64 } %t57, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
store { ptr, i64, i64 } %t61, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.1370, i64 5, i64 0 }, ptr %a64
|
|
call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64)
|
|
%t65 = load { ptr, i64, i64 }, ptr %a62
|
|
%t66 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t65, ptr %a68
|
|
store { ptr, i64, i64 } %t66, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t70, ptr %a72
|
|
store { ptr, i64, i64 } { ptr @.str.1371, i64 6, i64 0 }, ptr %a73
|
|
call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73)
|
|
%t74 = load { ptr, i64, i64 }, ptr %a71
|
|
%t75 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t74, ptr %a77
|
|
store { ptr, i64, i64 } %t75, ptr %a78
|
|
call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78)
|
|
%t79 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } %t79, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.1372, i64 1, i64 0 }, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
call void @finch.gen.emit(ptr %t54, { ptr, i64, i64 } %t83)
|
|
br label %endif2327
|
|
else2326:
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = load %S.ast.Type, ptr %a4
|
|
%t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86)
|
|
%t88 = load ptr, ptr %a1
|
|
%t89 = load ptr, ptr %a1
|
|
%t90 = load %S.ast.Type, ptr %a4
|
|
%t91 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t89, %S.ast.Type %t90)
|
|
%t92 = load { ptr, i64, i64 }, ptr %a3
|
|
%t93 = call { ptr, i64, i64 } @finch.gen.load(ptr %t88, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a2
|
|
call void @finch.gen.store(ptr %t84, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t93, { ptr, i64, i64 } %t94)
|
|
br label %endif2327
|
|
endif2327:
|
|
br label %endif2312
|
|
endif2312:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.arr_int(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64))
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_StructDef(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.StructDef, ptr %src
|
|
store %S.gen.StructDef %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 3
|
|
%t7 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 3
|
|
call void @finch.copy.arr_int(ptr %t6, ptr %t7)
|
|
%t8 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 4
|
|
%t9 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 4
|
|
call void @finch.copy.arr_int(ptr %t8, ptr %t9)
|
|
%t10 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 5
|
|
%t11 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 5
|
|
call void @finch_str_copy(ptr %t10, ptr %t11)
|
|
%t12 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 6
|
|
%t13 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 6
|
|
call void @finch.copy.arr_str(ptr %t12, ptr %t13)
|
|
%t14 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 7
|
|
%t15 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 7
|
|
call void @finch.copy.arr_S_ast_Type(ptr %t14, ptr %t15)
|
|
%t16 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 8
|
|
%t17 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 8
|
|
call void @finch_str_copy(ptr %t16, ptr %t17)
|
|
%t18 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 11
|
|
%t19 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 11
|
|
call void @finch.copy.arr_str(ptr %t18, ptr %t19)
|
|
%t20 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 12
|
|
%t21 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 12
|
|
call void @finch.copy.arr_S_ast_Type(ptr %t20, ptr %t21)
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.copyFn(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca %S.gen.Saved, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca %S.ast.Type, align 16
|
|
%a49 = alloca %S.ast.Type, align 16
|
|
%a51 = alloca %S.ast.Type, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca %S.gen.StructDef, align 16
|
|
%a330 = alloca %S.gen.StructDef, align 16
|
|
%a332 = alloca %S.gen.StructDef, align 16
|
|
%a336 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca i64, align 16
|
|
%a360 = alloca { ptr, i64, i64 }, align 16
|
|
%a361 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a378 = alloca { ptr, i64, i64 }, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a383 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a388 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a391 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a405 = alloca { ptr, i64, i64 }, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a428 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a431 = alloca { ptr, i64, i64 }, align 16
|
|
%a432 = alloca { ptr, i64, i64 }, align 16
|
|
%a433 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a437 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = load %S.ast.Type, ptr %a2
|
|
%t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3)
|
|
store { ptr, i64, i64 } { ptr @.str.1373, i64 12, i64 0 }, ptr %a6
|
|
store { ptr, i64, i64 } %t4, ptr %a7
|
|
call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7)
|
|
%t8 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = icmp eq ptr %t10, null
|
|
br i1 %t11, label %panic2328, label %ok2329
|
|
panic2328:
|
|
call void @finch_panic(ptr @.str.1374, i64 670, ptr @.str.1375)
|
|
unreachable
|
|
ok2329:
|
|
%t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 21
|
|
%t13 = load { ptr, i64, i64 }, ptr %t12
|
|
%t14 = load { ptr, i64, i64 }, ptr %a9
|
|
%t15 = call i1 @finch.gen.has({ ptr, i64, i64 } %t13, { ptr, i64, i64 } %t14)
|
|
br i1 %t15, label %then2330, label %endif2332
|
|
then2330:
|
|
%t16 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
call void @finch_str_copy(ptr %a18, ptr %a17)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a18
|
|
ret { ptr, i64, i64 } %t19
|
|
endif2332:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = icmp eq ptr %t20, null
|
|
br i1 %t21, label %panic2333, label %ok2334
|
|
panic2333:
|
|
call void @finch_panic(ptr @.str.1376, i64 673, ptr @.str.1377)
|
|
unreachable
|
|
ok2334:
|
|
%t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 21
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1
|
|
%t24 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t24, ptr %a25
|
|
call void @finch_str_copy(ptr %a26, ptr %a25)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a26
|
|
%t28 = load i64, ptr %t23
|
|
%t29 = add i64 %t28, 1
|
|
call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t30 = load ptr, ptr %t22
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28
|
|
store { ptr, i64, i64 } %t27, ptr %t31
|
|
store i64 %t29, ptr %t23
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t32)
|
|
store %S.gen.Saved %t33, ptr %a34
|
|
%t35 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t36 = load { ptr, i64, i64 }, ptr %t35
|
|
store { ptr, i64, i64 } %t36, ptr %a37
|
|
store { ptr, i64, i64 } { ptr @.str.1378, i64 5, i64 0 }, ptr %a38
|
|
%t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38)
|
|
%t40 = icmp ne i32 %t39, 0
|
|
br i1 %t40, label %then2335, label %else2336
|
|
then2335:
|
|
%t41 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t42 = load { ptr, i64, i64 }, ptr %t41
|
|
%t43 = extractvalue { ptr, i64, i64 } %t42, 1
|
|
%t44 = icmp uge i64 0, %t43
|
|
br i1 %t44, label %range2338, label %inrange2339
|
|
range2338:
|
|
call void @finch_panic_index(ptr @.str.1379, i64 676, i64 0, i64 %t43)
|
|
unreachable
|
|
inrange2339:
|
|
%t45 = extractvalue { ptr, i64, i64 } %t42, 0
|
|
%t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0
|
|
%t47 = load %S.ast.Type, ptr %t46
|
|
store %S.ast.Type %t47, ptr %a48
|
|
call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48)
|
|
%t50 = load %S.ast.Type, ptr %a49
|
|
store %S.ast.Type %t50, ptr %a51
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = load %S.ast.Type, ptr %a51
|
|
%t55 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t53, %S.ast.Type %t54)
|
|
store { ptr, i64, i64 } { ptr @.str.1380, i64 55, i64 0 }, ptr %a57
|
|
store { ptr, i64, i64 } %t55, ptr %a58
|
|
call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a56
|
|
store { ptr, i64, i64 } %t59, ptr %a61
|
|
store { ptr, i64, i64 } { ptr @.str.1381, i64 1, i64 0 }, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
call void @finch.gen.emit(ptr %t52, { ptr, i64, i64 } %t63)
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = load %S.ast.Type, ptr %a51
|
|
%t66 = call i1 @finch.gen.owning(ptr %t64, %S.ast.Type %t65)
|
|
br i1 %t66, label %then2340, label %endif2342
|
|
then2340:
|
|
%t67 = load ptr, ptr %a1
|
|
%t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t67, { ptr, i64, i64 } { ptr @.str.1382, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1383, i64 4, i64 0 })
|
|
store { ptr, i64, i64 } %t68, ptr %a69
|
|
%t70 = load ptr, ptr %a1
|
|
%t71 = call { ptr, i64, i64 } @finch.gen.load(ptr %t70, { ptr, i64, i64 } { ptr @.str.1384, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1385, i64 4, i64 0 })
|
|
store { ptr, i64, i64 } %t71, ptr %a72
|
|
%t73 = load ptr, ptr %a1
|
|
%t74 = load ptr, ptr %a1
|
|
%t75 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } { ptr @.str.1387, i64 64, i64 0 })
|
|
%t76 = call { ptr, i64, i64 } @finch.gen.load(ptr %t73, { ptr, i64, i64 } { ptr @.str.1386, i64 3, i64 0 }, { ptr, i64, i64 } %t75)
|
|
store { ptr, i64, i64 } %t76, ptr %a77
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = load { ptr, i64, i64 }, ptr %a77
|
|
%t80 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t78, { ptr, i64, i64 } %t79)
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = load ptr, ptr %a1
|
|
%t84 = load %S.ast.Type, ptr %a51
|
|
%t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84)
|
|
store { ptr, i64, i64 } { ptr @.str.1388, i64 23, i64 0 }, ptr %a87
|
|
store { ptr, i64, i64 } %t85, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t89, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.1389, i64 6, i64 0 }, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
%t94 = load { ptr, i64, i64 }, ptr %a69
|
|
store { ptr, i64, i64 } %t93, ptr %a96
|
|
store { ptr, i64, i64 } %t94, ptr %a97
|
|
call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97)
|
|
%t98 = load { ptr, i64, i64 }, ptr %a95
|
|
store { ptr, i64, i64 } %t98, ptr %a100
|
|
store { ptr, i64, i64 } { ptr @.str.1390, i64 6, i64 0 }, ptr %a101
|
|
call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a99
|
|
%t103 = load { ptr, i64, i64 }, ptr %a81
|
|
%t104 = extractvalue { ptr, i64, i64 } %t103, 1
|
|
%t105 = icmp uge i64 3, %t104
|
|
br i1 %t105, label %range2343, label %inrange2344
|
|
range2343:
|
|
call void @finch_panic_index(ptr @.str.1391, i64 683, i64 3, i64 %t104)
|
|
unreachable
|
|
inrange2344:
|
|
%t106 = extractvalue { ptr, i64, i64 } %t103, 0
|
|
%t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 3
|
|
%t108 = load { ptr, i64, i64 }, ptr %t107
|
|
store { ptr, i64, i64 } %t102, ptr %a110
|
|
store { ptr, i64, i64 } %t108, ptr %a111
|
|
call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111)
|
|
%t112 = load { ptr, i64, i64 }, ptr %a109
|
|
%t113 = call { ptr, i64, i64 } @finch.gen.op(ptr %t82, { ptr, i64, i64 } %t112)
|
|
store { ptr, i64, i64 } %t113, ptr %a114
|
|
%t115 = load ptr, ptr %a1
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = load %S.ast.Type, ptr %a51
|
|
%t118 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t116, %S.ast.Type %t117)
|
|
store { ptr, i64, i64 } { ptr @.str.1392, i64 23, i64 0 }, ptr %a120
|
|
store { ptr, i64, i64 } %t118, ptr %a121
|
|
call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121)
|
|
%t122 = load { ptr, i64, i64 }, ptr %a119
|
|
store { ptr, i64, i64 } %t122, ptr %a124
|
|
store { ptr, i64, i64 } { ptr @.str.1393, i64 6, i64 0 }, ptr %a125
|
|
call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125)
|
|
%t126 = load { ptr, i64, i64 }, ptr %a123
|
|
%t127 = load { ptr, i64, i64 }, ptr %a72
|
|
store { ptr, i64, i64 } %t126, ptr %a129
|
|
store { ptr, i64, i64 } %t127, ptr %a130
|
|
call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130)
|
|
%t131 = load { ptr, i64, i64 }, ptr %a128
|
|
store { ptr, i64, i64 } %t131, ptr %a133
|
|
store { ptr, i64, i64 } { ptr @.str.1394, i64 6, i64 0 }, ptr %a134
|
|
call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134)
|
|
%t135 = load { ptr, i64, i64 }, ptr %a132
|
|
%t136 = load { ptr, i64, i64 }, ptr %a81
|
|
%t137 = extractvalue { ptr, i64, i64 } %t136, 1
|
|
%t138 = icmp uge i64 3, %t137
|
|
br i1 %t138, label %range2345, label %inrange2346
|
|
range2345:
|
|
call void @finch_panic_index(ptr @.str.1395, i64 684, i64 3, i64 %t137)
|
|
unreachable
|
|
inrange2346:
|
|
%t139 = extractvalue { ptr, i64, i64 } %t136, 0
|
|
%t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t139, i64 3
|
|
%t141 = load { ptr, i64, i64 }, ptr %t140
|
|
store { ptr, i64, i64 } %t135, ptr %a143
|
|
store { ptr, i64, i64 } %t141, ptr %a144
|
|
call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144)
|
|
%t145 = load { ptr, i64, i64 }, ptr %a142
|
|
%t146 = call { ptr, i64, i64 } @finch.gen.op(ptr %t115, { ptr, i64, i64 } %t145)
|
|
store { ptr, i64, i64 } %t146, ptr %a147
|
|
%t148 = load ptr, ptr %a1
|
|
%t149 = load { ptr, i64, i64 }, ptr %a114
|
|
%t150 = load { ptr, i64, i64 }, ptr %a147
|
|
%t151 = load %S.ast.Type, ptr %a51
|
|
call void @finch.gen.copyAt(ptr %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t150, %S.ast.Type %t151)
|
|
%t152 = load ptr, ptr %a1
|
|
%t153 = load { ptr, i64, i64 }, ptr %a81
|
|
call void @finch.gen.loopEnd(ptr %t152, { ptr, i64, i64 } %t153)
|
|
br label %endif2342
|
|
endif2342:
|
|
br label %endif2337
|
|
else2336:
|
|
%t154 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t155 = load { ptr, i64, i64 }, ptr %t154
|
|
store { ptr, i64, i64 } %t155, ptr %a156
|
|
store { ptr, i64, i64 } { ptr @.str.1396, i64 3, i64 0 }, ptr %a157
|
|
%t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157)
|
|
%t159 = icmp ne i32 %t158, 0
|
|
br i1 %t159, label %then2347, label %else2348
|
|
then2347:
|
|
%t160 = load ptr, ptr %a1
|
|
%t161 = load ptr, ptr %a1
|
|
%t162 = load %S.ast.Type, ptr %a2
|
|
%t163 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t161, %S.ast.Type %t162)
|
|
store { ptr, i64, i64 } { ptr @.str.1397, i64 55, i64 0 }, ptr %a165
|
|
store { ptr, i64, i64 } %t163, ptr %a166
|
|
call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166)
|
|
%t167 = load { ptr, i64, i64 }, ptr %a164
|
|
store { ptr, i64, i64 } %t167, ptr %a169
|
|
store { ptr, i64, i64 } { ptr @.str.1398, i64 1, i64 0 }, ptr %a170
|
|
call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170)
|
|
%t171 = load { ptr, i64, i64 }, ptr %a168
|
|
call void @finch.gen.emit(ptr %t160, { ptr, i64, i64 } %t171)
|
|
%t172 = load ptr, ptr %a1
|
|
%t173 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t174 = load { ptr, i64, i64 }, ptr %t173
|
|
%t175 = extractvalue { ptr, i64, i64 } %t174, 1
|
|
%t176 = icmp uge i64 0, %t175
|
|
br i1 %t176, label %range2350, label %inrange2351
|
|
range2350:
|
|
call void @finch_panic_index(ptr @.str.1399, i64 690, i64 0, i64 %t175)
|
|
unreachable
|
|
inrange2351:
|
|
%t177 = extractvalue { ptr, i64, i64 } %t174, 0
|
|
%t178 = getelementptr inbounds %S.ast.Type, ptr %t177, i64 0
|
|
%t179 = load %S.ast.Type, ptr %t178
|
|
%t180 = call i1 @finch.gen.owning(ptr %t172, %S.ast.Type %t179)
|
|
br label %logic.from2352
|
|
logic.from2352:
|
|
br i1 %t180, label %logic.end2354, label %logic.rhs2353
|
|
logic.rhs2353:
|
|
%t181 = load ptr, ptr %a1
|
|
%t182 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t183 = load { ptr, i64, i64 }, ptr %t182
|
|
%t184 = extractvalue { ptr, i64, i64 } %t183, 1
|
|
%t185 = icmp uge i64 1, %t184
|
|
br i1 %t185, label %range2355, label %inrange2356
|
|
range2355:
|
|
call void @finch_panic_index(ptr @.str.1400, i64 690, i64 1, i64 %t184)
|
|
unreachable
|
|
inrange2356:
|
|
%t186 = extractvalue { ptr, i64, i64 } %t183, 0
|
|
%t187 = getelementptr inbounds %S.ast.Type, ptr %t186, i64 1
|
|
%t188 = load %S.ast.Type, ptr %t187
|
|
%t189 = call i1 @finch.gen.owning(ptr %t181, %S.ast.Type %t188)
|
|
br label %logic.rend2357
|
|
logic.rend2357:
|
|
br label %logic.end2354
|
|
logic.end2354:
|
|
%t190 = phi i1 [ true, %logic.from2352 ], [ %t189, %logic.rend2357 ]
|
|
br i1 %t190, label %then2358, label %endif2360
|
|
then2358:
|
|
%t191 = load ptr, ptr %a1
|
|
%t192 = load ptr, ptr %a1
|
|
%t193 = load ptr, ptr %a1
|
|
%t194 = load %S.ast.Type, ptr %a2
|
|
%t195 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t193, %S.ast.Type %t194)
|
|
store { ptr, i64, i64 } { ptr @.str.1402, i64 23, i64 0 }, ptr %a197
|
|
store { ptr, i64, i64 } %t195, ptr %a198
|
|
call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198)
|
|
%t199 = load { ptr, i64, i64 }, ptr %a196
|
|
store { ptr, i64, i64 } %t199, ptr %a201
|
|
store { ptr, i64, i64 } { ptr @.str.1403, i64 24, i64 0 }, ptr %a202
|
|
call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202)
|
|
%t203 = load { ptr, i64, i64 }, ptr %a200
|
|
%t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t203)
|
|
%t205 = call { ptr, i64, i64 } @finch.gen.load(ptr %t191, { ptr, i64, i64 } { ptr @.str.1401, i64 3, i64 0 }, { ptr, i64, i64 } %t204)
|
|
store { ptr, i64, i64 } %t205, ptr %a206
|
|
%t207 = load ptr, ptr %a1
|
|
%t208 = load { ptr, i64, i64 }, ptr %a206
|
|
%t209 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t207, { ptr, i64, i64 } %t208)
|
|
store { ptr, i64, i64 } %t209, ptr %a210
|
|
%t211 = load ptr, ptr %a1
|
|
%t212 = load %S.ast.Type, ptr %a2
|
|
%t213 = load { ptr, i64, i64 }, ptr %a210
|
|
%t214 = extractvalue { ptr, i64, i64 } %t213, 1
|
|
%t215 = icmp uge i64 3, %t214
|
|
br i1 %t215, label %range2361, label %inrange2362
|
|
range2361:
|
|
call void @finch_panic_index(ptr @.str.1405, i64 694, i64 3, i64 %t214)
|
|
unreachable
|
|
inrange2362:
|
|
%t216 = extractvalue { ptr, i64, i64 } %t213, 0
|
|
%t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 3
|
|
%t218 = load { ptr, i64, i64 }, ptr %t217
|
|
%t219 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t211, { ptr, i64, i64 } { ptr @.str.1404, i64 4, i64 0 }, %S.ast.Type %t212, { ptr, i64, i64 } %t218)
|
|
store { ptr, i64, i64 } %t219, ptr %a220
|
|
%t221 = load ptr, ptr %a1
|
|
%t222 = load %S.ast.Type, ptr %a2
|
|
%t223 = load { ptr, i64, i64 }, ptr %a210
|
|
%t224 = extractvalue { ptr, i64, i64 } %t223, 1
|
|
%t225 = icmp uge i64 3, %t224
|
|
br i1 %t225, label %range2363, label %inrange2364
|
|
range2363:
|
|
call void @finch_panic_index(ptr @.str.1407, i64 695, i64 3, i64 %t224)
|
|
unreachable
|
|
inrange2364:
|
|
%t226 = extractvalue { ptr, i64, i64 } %t223, 0
|
|
%t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 3
|
|
%t228 = load { ptr, i64, i64 }, ptr %t227
|
|
%t229 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t221, { ptr, i64, i64 } { ptr @.str.1406, i64 4, i64 0 }, %S.ast.Type %t222, { ptr, i64, i64 } %t228)
|
|
store { ptr, i64, i64 } %t229, ptr %a230
|
|
%t231 = load ptr, ptr %a1
|
|
%t232 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t231, { ptr, i64, i64 } { ptr @.str.1408, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t232, ptr %a233
|
|
%t234 = load ptr, ptr %a1
|
|
%t235 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t234, { ptr, i64, i64 } { ptr @.str.1409, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t235, ptr %a236
|
|
%t237 = load ptr, ptr %a1
|
|
%t238 = load ptr, ptr %a1
|
|
%t239 = load ptr, ptr %a1
|
|
%t240 = load ptr, ptr %a1
|
|
%t241 = load ptr, ptr %a1
|
|
%t242 = load %S.ast.Type, ptr %a2
|
|
%t243 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t241, %S.ast.Type %t242)
|
|
store { ptr, i64, i64 } { ptr @.str.1412, i64 23, i64 0 }, ptr %a245
|
|
store { ptr, i64, i64 } %t243, ptr %a246
|
|
call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246)
|
|
%t247 = load { ptr, i64, i64 }, ptr %a244
|
|
store { ptr, i64, i64 } %t247, ptr %a249
|
|
store { ptr, i64, i64 } { ptr @.str.1413, i64 6, i64 0 }, ptr %a250
|
|
call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250)
|
|
%t251 = load { ptr, i64, i64 }, ptr %a248
|
|
%t252 = load { ptr, i64, i64 }, ptr %a220
|
|
store { ptr, i64, i64 } %t251, ptr %a254
|
|
store { ptr, i64, i64 } %t252, ptr %a255
|
|
call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255)
|
|
%t256 = load { ptr, i64, i64 }, ptr %a253
|
|
store { ptr, i64, i64 } %t256, ptr %a258
|
|
store { ptr, i64, i64 } { ptr @.str.1414, i64 14, i64 0 }, ptr %a259
|
|
call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259)
|
|
%t260 = load { ptr, i64, i64 }, ptr %a257
|
|
%t261 = call { ptr, i64, i64 } @finch.gen.op(ptr %t240, { ptr, i64, i64 } %t260)
|
|
%t262 = call { ptr, i64, i64 } @finch.gen.load(ptr %t239, { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 }, { ptr, i64, i64 } %t261)
|
|
store { ptr, i64, i64 } { ptr @.str.1410, i64 12, i64 0 }, ptr %a264
|
|
store { ptr, i64, i64 } %t262, ptr %a265
|
|
call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265)
|
|
%t266 = load { ptr, i64, i64 }, ptr %a263
|
|
store { ptr, i64, i64 } %t266, ptr %a268
|
|
store { ptr, i64, i64 } { ptr @.str.1415, i64 3, i64 0 }, ptr %a269
|
|
call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269)
|
|
%t270 = load { ptr, i64, i64 }, ptr %a267
|
|
%t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t238, { ptr, i64, i64 } %t270)
|
|
%t272 = load { ptr, i64, i64 }, ptr %a233
|
|
%t273 = load { ptr, i64, i64 }, ptr %a236
|
|
call void @finch.gen.condBr(ptr %t237, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t272, { ptr, i64, i64 } %t273)
|
|
%t274 = load ptr, ptr %a1
|
|
%t275 = load { ptr, i64, i64 }, ptr %a233
|
|
call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275)
|
|
%t276 = load ptr, ptr %a1
|
|
%t277 = load ptr, ptr %a1
|
|
%t278 = load { ptr, i64, i64 }, ptr %a230
|
|
%t279 = load %S.ast.Type, ptr %a2
|
|
%t280 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t277, { ptr, i64, i64 } %t278, %S.ast.Type %t279, i64 1)
|
|
%t281 = load ptr, ptr %a1
|
|
%t282 = load { ptr, i64, i64 }, ptr %a220
|
|
%t283 = load %S.ast.Type, ptr %a2
|
|
%t284 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t281, { ptr, i64, i64 } %t282, %S.ast.Type %t283, i64 1)
|
|
%t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t286 = load { ptr, i64, i64 }, ptr %t285
|
|
%t287 = extractvalue { ptr, i64, i64 } %t286, 1
|
|
%t288 = icmp uge i64 0, %t287
|
|
br i1 %t288, label %range2365, label %inrange2366
|
|
range2365:
|
|
call void @finch_panic_index(ptr @.str.1416, i64 700, i64 0, i64 %t287)
|
|
unreachable
|
|
inrange2366:
|
|
%t289 = extractvalue { ptr, i64, i64 } %t286, 0
|
|
%t290 = getelementptr inbounds %S.ast.Type, ptr %t289, i64 0
|
|
%t291 = load %S.ast.Type, ptr %t290
|
|
call void @finch.gen.copyAt(ptr %t276, { ptr, i64, i64 } %t280, { ptr, i64, i64 } %t284, %S.ast.Type %t291)
|
|
%t292 = load ptr, ptr %a1
|
|
%t293 = load ptr, ptr %a1
|
|
%t294 = load { ptr, i64, i64 }, ptr %a230
|
|
%t295 = load %S.ast.Type, ptr %a2
|
|
%t296 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t293, { ptr, i64, i64 } %t294, %S.ast.Type %t295, i64 2)
|
|
%t297 = load ptr, ptr %a1
|
|
%t298 = load { ptr, i64, i64 }, ptr %a220
|
|
%t299 = load %S.ast.Type, ptr %a2
|
|
%t300 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t297, { ptr, i64, i64 } %t298, %S.ast.Type %t299, i64 2)
|
|
%t301 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t302 = load { ptr, i64, i64 }, ptr %t301
|
|
%t303 = extractvalue { ptr, i64, i64 } %t302, 1
|
|
%t304 = icmp uge i64 1, %t303
|
|
br i1 %t304, label %range2367, label %inrange2368
|
|
range2367:
|
|
call void @finch_panic_index(ptr @.str.1417, i64 701, i64 1, i64 %t303)
|
|
unreachable
|
|
inrange2368:
|
|
%t305 = extractvalue { ptr, i64, i64 } %t302, 0
|
|
%t306 = getelementptr inbounds %S.ast.Type, ptr %t305, i64 1
|
|
%t307 = load %S.ast.Type, ptr %t306
|
|
call void @finch.gen.copyAt(ptr %t292, { ptr, i64, i64 } %t296, { ptr, i64, i64 } %t300, %S.ast.Type %t307)
|
|
%t308 = load ptr, ptr %a1
|
|
%t309 = load { ptr, i64, i64 }, ptr %a236
|
|
call void @finch.gen.br(ptr %t308, { ptr, i64, i64 } %t309)
|
|
%t310 = load ptr, ptr %a1
|
|
%t311 = load { ptr, i64, i64 }, ptr %a236
|
|
call void @finch.gen.label(ptr %t310, { ptr, i64, i64 } %t311)
|
|
%t312 = load ptr, ptr %a1
|
|
%t313 = load { ptr, i64, i64 }, ptr %a210
|
|
call void @finch.gen.loopEnd(ptr %t312, { ptr, i64, i64 } %t313)
|
|
br label %endif2360
|
|
endif2360:
|
|
br label %endif2349
|
|
else2348:
|
|
%t314 = load ptr, ptr %a1
|
|
%t315 = icmp eq ptr %t314, null
|
|
br i1 %t315, label %panic2369, label %ok2370
|
|
panic2369:
|
|
call void @finch_panic(ptr @.str.1418, i64 707, ptr @.str.1419)
|
|
unreachable
|
|
ok2370:
|
|
%t316 = getelementptr inbounds %S.gen.Gen, ptr %t314, i32 0, i32 15
|
|
%t317 = load ptr, ptr %a1
|
|
%t318 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t319 = load { ptr, i64, i64 }, ptr %t318
|
|
%t320 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t321 = load { ptr, i64, i64 }, ptr %t320
|
|
%t322 = call i64 @finch.gen.findStruct(ptr %t317, { ptr, i64, i64 } %t319, { ptr, i64, i64 } %t321)
|
|
%t323 = load { ptr, i64, i64 }, ptr %t316
|
|
%t324 = extractvalue { ptr, i64, i64 } %t323, 1
|
|
%t325 = icmp uge i64 %t322, %t324
|
|
br i1 %t325, label %range2371, label %inrange2372
|
|
range2371:
|
|
call void @finch_panic_index(ptr @.str.1420, i64 707, i64 %t322, i64 %t324)
|
|
unreachable
|
|
inrange2372:
|
|
%t326 = extractvalue { ptr, i64, i64 } %t323, 0
|
|
%t327 = getelementptr inbounds %S.gen.StructDef, ptr %t326, i64 %t322
|
|
%t328 = load %S.gen.StructDef, ptr %t327
|
|
store %S.gen.StructDef %t328, ptr %a329
|
|
call void @finch.copy.S_gen_StructDef(ptr %a330, ptr %a329)
|
|
%t331 = load %S.gen.StructDef, ptr %a330
|
|
store %S.gen.StructDef %t331, ptr %a332
|
|
%t333 = load ptr, ptr %a1
|
|
%t334 = load %S.ast.Type, ptr %a2
|
|
%t335 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t333, %S.ast.Type %t334)
|
|
store { ptr, i64, i64 } %t335, ptr %a336
|
|
%t337 = load ptr, ptr %a1
|
|
%t338 = load { ptr, i64, i64 }, ptr %a336
|
|
%t339 = load ptr, ptr %a1
|
|
%t340 = load { ptr, i64, i64 }, ptr %a336
|
|
%t341 = call { ptr, i64, i64 } @finch.gen.load(ptr %t339, { ptr, i64, i64 } %t340, { ptr, i64, i64 } { ptr @.str.1421, i64 4, i64 0 })
|
|
call void @finch.gen.store(ptr %t337, { ptr, i64, i64 } %t338, { ptr, i64, i64 } %t341, { ptr, i64, i64 } { ptr @.str.1422, i64 4, i64 0 })
|
|
%t342 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 12
|
|
%t343 = getelementptr inbounds { ptr, i64, i64 }, ptr %t342, i32 0, i32 1
|
|
%t344 = load i64, ptr %t343
|
|
store i64 0, ptr %a345
|
|
br label %for.cond2373
|
|
for.cond2373:
|
|
%t346 = load i64, ptr %a345
|
|
%t347 = icmp slt i64 %t346, %t344
|
|
br i1 %t347, label %for.body2374, label %for.end2376
|
|
for.body2374:
|
|
%t348 = load ptr, ptr %a1
|
|
%t349 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 12
|
|
%t350 = load i64, ptr %a345
|
|
%t351 = load { ptr, i64, i64 }, ptr %t349
|
|
%t352 = extractvalue { ptr, i64, i64 } %t351, 1
|
|
%t353 = icmp uge i64 %t350, %t352
|
|
br i1 %t353, label %range2377, label %inrange2378
|
|
range2377:
|
|
call void @finch_panic_index(ptr @.str.1423, i64 711, i64 %t350, i64 %t352)
|
|
unreachable
|
|
inrange2378:
|
|
%t354 = extractvalue { ptr, i64, i64 } %t351, 0
|
|
%t355 = getelementptr inbounds %S.ast.Type, ptr %t354, i64 %t350
|
|
%t356 = load %S.ast.Type, ptr %t355
|
|
%t357 = call i1 @finch.gen.owning(ptr %t348, %S.ast.Type %t356)
|
|
br i1 %t357, label %then2379, label %endif2381
|
|
then2379:
|
|
%t358 = load ptr, ptr %a1
|
|
%t359 = load { ptr, i64, i64 }, ptr %a336
|
|
store { ptr, i64, i64 } { ptr @.str.1424, i64 23, i64 0 }, ptr %a361
|
|
store { ptr, i64, i64 } %t359, ptr %a362
|
|
call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362)
|
|
%t363 = load { ptr, i64, i64 }, ptr %a360
|
|
store { ptr, i64, i64 } %t363, ptr %a365
|
|
store { ptr, i64, i64 } { ptr @.str.1425, i64 23, i64 0 }, ptr %a366
|
|
call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366)
|
|
%t367 = load { ptr, i64, i64 }, ptr %a364
|
|
%t368 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 3
|
|
%t369 = load i64, ptr %a345
|
|
%t370 = load { ptr, i64, i64 }, ptr %t368
|
|
%t371 = extractvalue { ptr, i64, i64 } %t370, 1
|
|
%t372 = icmp uge i64 %t369, %t371
|
|
br i1 %t372, label %range2382, label %inrange2383
|
|
range2382:
|
|
call void @finch_panic_index(ptr @.str.1426, i64 712, i64 %t369, i64 %t371)
|
|
unreachable
|
|
inrange2383:
|
|
%t373 = extractvalue { ptr, i64, i64 } %t370, 0
|
|
%t374 = getelementptr inbounds i64, ptr %t373, i64 %t369
|
|
%t375 = load i64, ptr %t374
|
|
call void @finch_str_from_int(ptr %a376, i64 %t375)
|
|
%t377 = load { ptr, i64, i64 }, ptr %a376
|
|
store { ptr, i64, i64 } %t367, ptr %a379
|
|
store { ptr, i64, i64 } %t377, ptr %a380
|
|
call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380)
|
|
%t381 = load { ptr, i64, i64 }, ptr %a378
|
|
%t382 = call { ptr, i64, i64 } @finch.gen.op(ptr %t358, { ptr, i64, i64 } %t381)
|
|
store { ptr, i64, i64 } %t382, ptr %a383
|
|
%t384 = load ptr, ptr %a1
|
|
%t385 = load { ptr, i64, i64 }, ptr %a336
|
|
store { ptr, i64, i64 } { ptr @.str.1427, i64 23, i64 0 }, ptr %a387
|
|
store { ptr, i64, i64 } %t385, ptr %a388
|
|
call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388)
|
|
%t389 = load { ptr, i64, i64 }, ptr %a386
|
|
store { ptr, i64, i64 } %t389, ptr %a391
|
|
store { ptr, i64, i64 } { ptr @.str.1428, i64 23, i64 0 }, ptr %a392
|
|
call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392)
|
|
%t393 = load { ptr, i64, i64 }, ptr %a390
|
|
%t394 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 3
|
|
%t395 = load i64, ptr %a345
|
|
%t396 = load { ptr, i64, i64 }, ptr %t394
|
|
%t397 = extractvalue { ptr, i64, i64 } %t396, 1
|
|
%t398 = icmp uge i64 %t395, %t397
|
|
br i1 %t398, label %range2384, label %inrange2385
|
|
range2384:
|
|
call void @finch_panic_index(ptr @.str.1429, i64 713, i64 %t395, i64 %t397)
|
|
unreachable
|
|
inrange2385:
|
|
%t399 = extractvalue { ptr, i64, i64 } %t396, 0
|
|
%t400 = getelementptr inbounds i64, ptr %t399, i64 %t395
|
|
%t401 = load i64, ptr %t400
|
|
call void @finch_str_from_int(ptr %a402, i64 %t401)
|
|
%t403 = load { ptr, i64, i64 }, ptr %a402
|
|
store { ptr, i64, i64 } %t393, ptr %a405
|
|
store { ptr, i64, i64 } %t403, ptr %a406
|
|
call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406)
|
|
%t407 = load { ptr, i64, i64 }, ptr %a404
|
|
%t408 = call { ptr, i64, i64 } @finch.gen.op(ptr %t384, { ptr, i64, i64 } %t407)
|
|
store { ptr, i64, i64 } %t408, ptr %a409
|
|
%t410 = load ptr, ptr %a1
|
|
%t411 = load { ptr, i64, i64 }, ptr %a383
|
|
%t412 = load { ptr, i64, i64 }, ptr %a409
|
|
%t413 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 12
|
|
%t414 = load i64, ptr %a345
|
|
%t415 = load { ptr, i64, i64 }, ptr %t413
|
|
%t416 = extractvalue { ptr, i64, i64 } %t415, 1
|
|
%t417 = icmp uge i64 %t414, %t416
|
|
br i1 %t417, label %range2386, label %inrange2387
|
|
range2386:
|
|
call void @finch_panic_index(ptr @.str.1430, i64 714, i64 %t414, i64 %t416)
|
|
unreachable
|
|
inrange2387:
|
|
%t418 = extractvalue { ptr, i64, i64 } %t415, 0
|
|
%t419 = getelementptr inbounds %S.ast.Type, ptr %t418, i64 %t414
|
|
%t420 = load %S.ast.Type, ptr %t419
|
|
call void @finch.gen.copyAt(ptr %t410, { ptr, i64, i64 } %t411, { ptr, i64, i64 } %t412, %S.ast.Type %t420)
|
|
br label %endif2381
|
|
endif2381:
|
|
br label %for.step2375
|
|
for.step2375:
|
|
%t421 = load i64, ptr %a345
|
|
%t422 = add i64 %t421, 1
|
|
store i64 %t422, ptr %a345
|
|
br label %for.cond2373
|
|
for.end2376:
|
|
br label %endif2349
|
|
endif2349:
|
|
br label %endif2337
|
|
endif2337:
|
|
%t423 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t423, { ptr, i64, i64 } { ptr @.str.1431, i64 8, i64 0 })
|
|
%t424 = load ptr, ptr %a1
|
|
%t425 = load %S.gen.Saved, ptr %a34
|
|
%t426 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.1432, i64 21, i64 0 }, ptr %a428
|
|
store { ptr, i64, i64 } %t426, ptr %a429
|
|
call void @finch_str_concat(ptr %a427, ptr %a428, ptr %a429)
|
|
%t430 = load { ptr, i64, i64 }, ptr %a427
|
|
store { ptr, i64, i64 } %t430, ptr %a432
|
|
store { ptr, i64, i64 } { ptr @.str.1433, i64 20, i64 0 }, ptr %a433
|
|
call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433)
|
|
%t434 = load { ptr, i64, i64 }, ptr %a431
|
|
call void @finch.gen.endHelper(ptr %t424, %S.gen.Saved %t425, { ptr, i64, i64 } %t434)
|
|
%t435 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t435, ptr %a436
|
|
call void @finch_str_copy(ptr %a437, ptr %a436)
|
|
%t438 = load { ptr, i64, i64 }, ptr %a437
|
|
ret { ptr, i64, i64 } %t438
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.copyValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca %S.ast.Type, align 16
|
|
%a20 = alloca %S.ast.Type, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = load %S.ast.Type, ptr %a3
|
|
%t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5)
|
|
%t7 = xor i1 %t6, true
|
|
br i1 %t7, label %then2388, label %endif2390
|
|
then2388:
|
|
%t8 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
call void @finch_str_copy(ptr %a10, ptr %a9)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a10
|
|
ret { ptr, i64, i64 } %t11
|
|
endif2390:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
call void @finch_str_copy(ptr %a15, ptr %a14)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a15
|
|
%t17 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t16, 0
|
|
%t18 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t18, ptr %a19
|
|
call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19)
|
|
%t21 = load %S.ast.Type, ptr %a20
|
|
%t22 = insertvalue %S.gen.Val %t17, %S.ast.Type %t21, 1
|
|
%t23 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t12, %S.gen.Val %t22)
|
|
store { ptr, i64, i64 } %t23, ptr %a24
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = load %S.ast.Type, ptr %a3
|
|
%t28 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t26, %S.ast.Type %t27)
|
|
%t29 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t25, { ptr, i64, i64 } %t28)
|
|
store { ptr, i64, i64 } %t29, ptr %a30
|
|
%t31 = load ptr, ptr %a1
|
|
%t32 = load { ptr, i64, i64 }, ptr %a30
|
|
%t33 = load { ptr, i64, i64 }, ptr %a24
|
|
%t34 = load %S.ast.Type, ptr %a3
|
|
call void @finch.gen.copyAt(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, %S.ast.Type %t34)
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load %S.ast.Type, ptr %a3
|
|
%t38 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t36, %S.ast.Type %t37)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a30
|
|
%t40 = call { ptr, i64, i64 } @finch.gen.load(ptr %t35, { ptr, i64, i64 } %t38, { ptr, i64, i64 } %t39)
|
|
ret { ptr, i64, i64 } %t40
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.own(ptr %p0, %S.gen.Val %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.gen.Val, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.gen.Val %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t5 = load %S.ast.Type, ptr %t4
|
|
%t6 = call i1 @finch.gen.owning(ptr %t3, %S.ast.Type %t5)
|
|
%t7 = xor i1 %t6, true
|
|
br label %logic.from2391
|
|
logic.from2391:
|
|
br i1 %t7, label %logic.end2393, label %logic.rhs2392
|
|
logic.rhs2392:
|
|
%t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2
|
|
%t9 = load i1, ptr %t8
|
|
br label %logic.rend2394
|
|
logic.rend2394:
|
|
br label %logic.end2393
|
|
logic.end2393:
|
|
%t10 = phi i1 [ true, %logic.from2391 ], [ %t9, %logic.rend2394 ]
|
|
br i1 %t10, label %then2395, label %endif2397
|
|
then2395:
|
|
%t11 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t12 = load { ptr, i64, i64 }, ptr %t11
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
call void @finch_str_copy(ptr %a14, ptr %a13)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a14
|
|
ret { ptr, i64, i64 } %t15
|
|
endif2397:
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t18 = load { ptr, i64, i64 }, ptr %t17
|
|
%t19 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t20 = load %S.ast.Type, ptr %t19
|
|
%t21 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t16, { ptr, i64, i64 } %t18, %S.ast.Type %t20)
|
|
ret { ptr, i64, i64 } %t21
|
|
}
|
|
|
|
define internal void @finch.gen.printf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = load { ptr, i64, i64 }, ptr %a2
|
|
%t6 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t4, { ptr, i64, i64 } %t5)
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = call { ptr, i64, i64 } @finch.gen.tmpName(ptr %t8)
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.1434, i64 0, i64 0 }, ptr %a11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t13 = load i64, ptr %t12
|
|
%t14 = icmp sgt i64 %t13, 0
|
|
br i1 %t14, label %then2398, label %endif2400
|
|
then2398:
|
|
%t15 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.1435, i64 2, i64 0 }, ptr %a17
|
|
store { ptr, i64, i64 } %t15, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t19, ptr %a11
|
|
br label %endif2400
|
|
endif2400:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t21, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.1436, i64 35, i64 0 }, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
%t26 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t25, ptr %a28
|
|
store { ptr, i64, i64 } %t26, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
%t31 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t30, ptr %a33
|
|
store { ptr, i64, i64 } %t31, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t35, ptr %a37
|
|
store { ptr, i64, i64 } { ptr @.str.1437, i64 1, i64 0 }, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
call void @finch.gen.emit(ptr %t20, { ptr, i64, i64 } %t39)
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.cstr(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1438, i64 31, i64 0 }, ptr %a6
|
|
store { ptr, i64, i64 } %t4, ptr %a7
|
|
call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7)
|
|
%t8 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t8, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.1439, i64 3, i64 0 }, ptr %a11
|
|
call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a9
|
|
%t13 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t12)
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.1440, i64 12, i64 0 }, ptr %a18
|
|
store { ptr, i64, i64 } %t16, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
store { ptr, i64, i64 } %t20, ptr %a22
|
|
store { ptr, i64, i64 } { ptr @.str.1441, i64 6, i64 0 }, ptr %a23
|
|
call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a21
|
|
%t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t15, { ptr, i64, i64 } %t24)
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t27, { ptr, i64, i64 } { ptr @.str.1442, i64 0, i64 0 })
|
|
store { ptr, i64, i64 } %t28, ptr %a29
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.1443, i64 10, i64 0 }, ptr %a33
|
|
store { ptr, i64, i64 } %t31, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t35, ptr %a37
|
|
store { ptr, i64, i64 } { ptr @.str.1444, i64 6, i64 0 }, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
%t40 = load { ptr, i64, i64 }, ptr %a29
|
|
store { ptr, i64, i64 } %t39, ptr %a42
|
|
store { ptr, i64, i64 } %t40, ptr %a43
|
|
call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a41
|
|
store { ptr, i64, i64 } %t44, ptr %a46
|
|
store { ptr, i64, i64 } { ptr @.str.1445, i64 6, i64 0 }, ptr %a47
|
|
call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a45
|
|
%t49 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t48, ptr %a51
|
|
store { ptr, i64, i64 } %t49, ptr %a52
|
|
call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52)
|
|
%t53 = load { ptr, i64, i64 }, ptr %a50
|
|
%t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t30, { ptr, i64, i64 } %t53)
|
|
ret { ptr, i64, i64 } %t54
|
|
}
|
|
|
|
define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca i1, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a242 = alloca { ptr, i64, i64 }, align 16
|
|
%a243 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store i1 %p3, ptr %a4
|
|
%t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
call void @finch_str_copy(ptr %a8, ptr %a7)
|
|
%t9 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
%t11 = load %S.ast.Type, ptr %a3
|
|
%t12 = call i1 @finch.gen.isSigned(%S.ast.Type %t11)
|
|
br i1 %t12, label %then2401, label %else2402
|
|
then2401:
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = load { ptr, i64, i64 }, ptr %a2
|
|
%t16 = load %S.ast.Type, ptr %a3
|
|
%t17 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1448, i64 3, i64 0 })
|
|
%t18 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t14, { ptr, i64, i64 } %t15, %S.ast.Type %t16, %S.ast.Type %t17)
|
|
store { ptr, i64, i64 } { ptr @.str.1447, i64 4, i64 0 }, ptr %a20
|
|
store { ptr, i64, i64 } %t18, ptr %a21
|
|
call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a19
|
|
call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1446, i64 4, i64 0 }, { ptr, i64, i64 } %t22)
|
|
br label %endif2403
|
|
else2402:
|
|
%t23 = load %S.ast.Type, ptr %a3
|
|
%t24 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t23)
|
|
br i1 %t24, label %then2404, label %else2405
|
|
then2404:
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = load { ptr, i64, i64 }, ptr %a2
|
|
%t28 = load %S.ast.Type, ptr %a3
|
|
%t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1451, i64 3, i64 0 })
|
|
%t30 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t26, { ptr, i64, i64 } %t27, %S.ast.Type %t28, %S.ast.Type %t29)
|
|
store { ptr, i64, i64 } { ptr @.str.1450, i64 4, i64 0 }, ptr %a32
|
|
store { ptr, i64, i64 } %t30, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
call void @finch.gen.printf(ptr %t25, { ptr, i64, i64 } { ptr @.str.1449, i64 4, i64 0 }, { ptr, i64, i64 } %t34)
|
|
br label %endif2406
|
|
else2405:
|
|
%t35 = load %S.ast.Type, ptr %a3
|
|
%t36 = call i1 @finch.gen.isFloat(%S.ast.Type %t35)
|
|
br i1 %t36, label %then2407, label %else2408
|
|
then2407:
|
|
%t37 = load ptr, ptr %a1
|
|
%t38 = load ptr, ptr %a1
|
|
%t39 = load { ptr, i64, i64 }, ptr %a2
|
|
%t40 = load %S.ast.Type, ptr %a3
|
|
%t41 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1454, i64 5, i64 0 })
|
|
%t42 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t38, { ptr, i64, i64 } %t39, %S.ast.Type %t40, %S.ast.Type %t41)
|
|
store { ptr, i64, i64 } { ptr @.str.1453, i64 7, i64 0 }, ptr %a44
|
|
store { ptr, i64, i64 } %t42, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
call void @finch.gen.printf(ptr %t37, { ptr, i64, i64 } { ptr @.str.1452, i64 2, i64 0 }, { ptr, i64, i64 } %t46)
|
|
br label %endif2409
|
|
else2408:
|
|
%t47 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t47, ptr %a48
|
|
store { ptr, i64, i64 } { ptr @.str.1455, i64 4, i64 0 }, ptr %a49
|
|
%t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49)
|
|
%t51 = icmp ne i32 %t50, 0
|
|
br i1 %t51, label %then2410, label %else2411
|
|
then2410:
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1456, i64 8, i64 0 }, ptr %a55
|
|
store { ptr, i64, i64 } %t53, ptr %a56
|
|
call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t57, ptr %a59
|
|
store { ptr, i64, i64 } { ptr @.str.1457, i64 7, i64 0 }, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
%t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t52, { ptr, i64, i64 } %t61)
|
|
store { ptr, i64, i64 } %t62, ptr %a63
|
|
%t64 = load i1, ptr %a4
|
|
br i1 %t64, label %then2413, label %else2414
|
|
then2413:
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.1459, i64 4, i64 0 }, ptr %a68
|
|
store { ptr, i64, i64 } %t66, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
call void @finch.gen.printf(ptr %t65, { ptr, i64, i64 } { ptr @.str.1458, i64 4, i64 0 }, { ptr, i64, i64 } %t70)
|
|
br label %endif2415
|
|
else2414:
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.1461, i64 4, i64 0 }, ptr %a74
|
|
store { ptr, i64, i64 } %t72, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
call void @finch.gen.printf(ptr %t71, { ptr, i64, i64 } { ptr @.str.1460, i64 2, i64 0 }, { ptr, i64, i64 } %t76)
|
|
br label %endif2415
|
|
endif2415:
|
|
br label %endif2412
|
|
else2411:
|
|
%t77 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
store { ptr, i64, i64 } { ptr @.str.1462, i64 4, i64 0 }, ptr %a79
|
|
%t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79)
|
|
%t81 = icmp ne i32 %t80, 0
|
|
br i1 %t81, label %then2416, label %else2417
|
|
then2416:
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t82, { ptr, i64, i64 } { ptr @.str.1463, i64 4, i64 0 })
|
|
store { ptr, i64, i64 } %t83, ptr %a84
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t85, { ptr, i64, i64 } { ptr @.str.1464, i64 5, i64 0 })
|
|
store { ptr, i64, i64 } %t86, ptr %a87
|
|
%t88 = load ptr, ptr %a1
|
|
%t89 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1465, i64 10, i64 0 }, ptr %a91
|
|
store { ptr, i64, i64 } %t89, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
store { ptr, i64, i64 } %t93, ptr %a95
|
|
store { ptr, i64, i64 } { ptr @.str.1466, i64 6, i64 0 }, ptr %a96
|
|
call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a94
|
|
%t98 = load { ptr, i64, i64 }, ptr %a84
|
|
store { ptr, i64, i64 } %t97, ptr %a100
|
|
store { ptr, i64, i64 } %t98, ptr %a101
|
|
call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a99
|
|
store { ptr, i64, i64 } %t102, ptr %a104
|
|
store { ptr, i64, i64 } { ptr @.str.1467, i64 6, i64 0 }, ptr %a105
|
|
call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105)
|
|
%t106 = load { ptr, i64, i64 }, ptr %a103
|
|
%t107 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t106, ptr %a109
|
|
store { ptr, i64, i64 } %t107, ptr %a110
|
|
call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a108
|
|
%t112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t88, { ptr, i64, i64 } %t111)
|
|
store { ptr, i64, i64 } %t112, ptr %a113
|
|
%t114 = load ptr, ptr %a1
|
|
%t115 = load { ptr, i64, i64 }, ptr %a113
|
|
store { ptr, i64, i64 } { ptr @.str.1469, i64 4, i64 0 }, ptr %a117
|
|
store { ptr, i64, i64 } %t115, ptr %a118
|
|
call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a116
|
|
call void @finch.gen.printf(ptr %t114, { ptr, i64, i64 } { ptr @.str.1468, i64 2, i64 0 }, { ptr, i64, i64 } %t119)
|
|
br label %endif2418
|
|
else2417:
|
|
%t120 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t120, ptr %a121
|
|
store { ptr, i64, i64 } { ptr @.str.1470, i64 3, i64 0 }, ptr %a122
|
|
%t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122)
|
|
%t124 = icmp ne i32 %t123, 0
|
|
br i1 %t124, label %then2419, label %else2420
|
|
then2419:
|
|
%t125 = load ptr, ptr %a1
|
|
%t126 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1471, i64 31, i64 0 }, ptr %a128
|
|
store { ptr, i64, i64 } %t126, ptr %a129
|
|
call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129)
|
|
%t130 = load { ptr, i64, i64 }, ptr %a127
|
|
store { ptr, i64, i64 } %t130, ptr %a132
|
|
store { ptr, i64, i64 } { ptr @.str.1472, i64 3, i64 0 }, ptr %a133
|
|
call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133)
|
|
%t134 = load { ptr, i64, i64 }, ptr %a131
|
|
%t135 = call { ptr, i64, i64 } @finch.gen.op(ptr %t125, { ptr, i64, i64 } %t134)
|
|
store { ptr, i64, i64 } %t135, ptr %a136
|
|
%t137 = load ptr, ptr %a1
|
|
%t138 = load { ptr, i64, i64 }, ptr %a136
|
|
store { ptr, i64, i64 } { ptr @.str.1473, i64 10, i64 0 }, ptr %a140
|
|
store { ptr, i64, i64 } %t138, ptr %a141
|
|
call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141)
|
|
%t142 = load { ptr, i64, i64 }, ptr %a139
|
|
store { ptr, i64, i64 } %t142, ptr %a144
|
|
store { ptr, i64, i64 } { ptr @.str.1474, i64 7, i64 0 }, ptr %a145
|
|
call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145)
|
|
%t146 = load { ptr, i64, i64 }, ptr %a143
|
|
%t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t137, { ptr, i64, i64 } %t146)
|
|
store { ptr, i64, i64 } %t147, ptr %a148
|
|
%t149 = load ptr, ptr %a1
|
|
%t150 = load { ptr, i64, i64 }, ptr %a2
|
|
%t151 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t149, { ptr, i64, i64 } %t150)
|
|
store { ptr, i64, i64 } %t151, ptr %a152
|
|
%t153 = load i1, ptr %a4
|
|
br i1 %t153, label %then2422, label %else2423
|
|
then2422:
|
|
%t154 = load ptr, ptr %a1
|
|
%t155 = load { ptr, i64, i64 }, ptr %a148
|
|
store { ptr, i64, i64 } { ptr @.str.1476, i64 4, i64 0 }, ptr %a157
|
|
store { ptr, i64, i64 } %t155, ptr %a158
|
|
call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158)
|
|
%t159 = load { ptr, i64, i64 }, ptr %a156
|
|
store { ptr, i64, i64 } %t159, ptr %a161
|
|
store { ptr, i64, i64 } { ptr @.str.1477, i64 6, i64 0 }, ptr %a162
|
|
call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162)
|
|
%t163 = load { ptr, i64, i64 }, ptr %a160
|
|
%t164 = load { ptr, i64, i64 }, ptr %a152
|
|
store { ptr, i64, i64 } %t163, ptr %a166
|
|
store { ptr, i64, i64 } %t164, ptr %a167
|
|
call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167)
|
|
%t168 = load { ptr, i64, i64 }, ptr %a165
|
|
call void @finch.gen.printf(ptr %t154, { ptr, i64, i64 } { ptr @.str.1475, i64 6, i64 0 }, { ptr, i64, i64 } %t168)
|
|
br label %endif2424
|
|
else2423:
|
|
%t169 = load ptr, ptr %a1
|
|
%t170 = load { ptr, i64, i64 }, ptr %a148
|
|
store { ptr, i64, i64 } { ptr @.str.1479, i64 4, i64 0 }, ptr %a172
|
|
store { ptr, i64, i64 } %t170, ptr %a173
|
|
call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173)
|
|
%t174 = load { ptr, i64, i64 }, ptr %a171
|
|
store { ptr, i64, i64 } %t174, ptr %a176
|
|
store { ptr, i64, i64 } { ptr @.str.1480, i64 6, i64 0 }, ptr %a177
|
|
call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177)
|
|
%t178 = load { ptr, i64, i64 }, ptr %a175
|
|
%t179 = load { ptr, i64, i64 }, ptr %a152
|
|
store { ptr, i64, i64 } %t178, ptr %a181
|
|
store { ptr, i64, i64 } %t179, ptr %a182
|
|
call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182)
|
|
%t183 = load { ptr, i64, i64 }, ptr %a180
|
|
call void @finch.gen.printf(ptr %t169, { ptr, i64, i64 } { ptr @.str.1478, i64 4, i64 0 }, { ptr, i64, i64 } %t183)
|
|
br label %endif2424
|
|
endif2424:
|
|
br label %endif2421
|
|
else2420:
|
|
%t184 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t184, ptr %a185
|
|
store { ptr, i64, i64 } { ptr @.str.1481, i64 3, i64 0 }, ptr %a186
|
|
%t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186)
|
|
%t188 = icmp ne i32 %t187, 0
|
|
br i1 %t188, label %then2425, label %else2426
|
|
then2425:
|
|
%t189 = load ptr, ptr %a1
|
|
%t190 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1482, i64 12, i64 0 }, ptr %a192
|
|
store { ptr, i64, i64 } %t190, ptr %a193
|
|
call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193)
|
|
%t194 = load { ptr, i64, i64 }, ptr %a191
|
|
store { ptr, i64, i64 } %t194, ptr %a196
|
|
store { ptr, i64, i64 } { ptr @.str.1483, i64 6, i64 0 }, ptr %a197
|
|
call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197)
|
|
%t198 = load { ptr, i64, i64 }, ptr %a195
|
|
%t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t189, { ptr, i64, i64 } %t198)
|
|
store { ptr, i64, i64 } %t199, ptr %a200
|
|
%t201 = load ptr, ptr %a1
|
|
%t202 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t201, { ptr, i64, i64 } { ptr @.str.1484, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t202, ptr %a203
|
|
%t204 = load ptr, ptr %a1
|
|
%t205 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t204, { ptr, i64, i64 } { ptr @.str.1485, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t205, ptr %a206
|
|
%t207 = load ptr, ptr %a1
|
|
%t208 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t207, { ptr, i64, i64 } { ptr @.str.1486, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t208, ptr %a209
|
|
%t210 = load ptr, ptr %a1
|
|
%t211 = load { ptr, i64, i64 }, ptr %a200
|
|
%t212 = load { ptr, i64, i64 }, ptr %a203
|
|
%t213 = load { ptr, i64, i64 }, ptr %a206
|
|
call void @finch.gen.condBr(ptr %t210, { ptr, i64, i64 } %t211, { ptr, i64, i64 } %t212, { ptr, i64, i64 } %t213)
|
|
%t214 = load ptr, ptr %a1
|
|
%t215 = load { ptr, i64, i64 }, ptr %a203
|
|
call void @finch.gen.label(ptr %t214, { ptr, i64, i64 } %t215)
|
|
%t216 = load ptr, ptr %a1
|
|
call void @finch.gen.printf(ptr %t216, { ptr, i64, i64 } { ptr @.str.1487, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1488, i64 0, i64 0 })
|
|
%t217 = load ptr, ptr %a1
|
|
%t218 = load { ptr, i64, i64 }, ptr %a209
|
|
call void @finch.gen.br(ptr %t217, { ptr, i64, i64 } %t218)
|
|
%t219 = load ptr, ptr %a1
|
|
%t220 = load { ptr, i64, i64 }, ptr %a206
|
|
call void @finch.gen.label(ptr %t219, { ptr, i64, i64 } %t220)
|
|
%t221 = load ptr, ptr %a1
|
|
%t222 = load ptr, ptr %a1
|
|
%t223 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1491, i64 13, i64 0 }, ptr %a225
|
|
store { ptr, i64, i64 } %t223, ptr %a226
|
|
call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226)
|
|
%t227 = load { ptr, i64, i64 }, ptr %a224
|
|
store { ptr, i64, i64 } %t227, ptr %a229
|
|
store { ptr, i64, i64 } { ptr @.str.1492, i64 7, i64 0 }, ptr %a230
|
|
call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230)
|
|
%t231 = load { ptr, i64, i64 }, ptr %a228
|
|
%t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t222, { ptr, i64, i64 } %t231)
|
|
store { ptr, i64, i64 } { ptr @.str.1490, i64 4, i64 0 }, ptr %a234
|
|
store { ptr, i64, i64 } %t232, ptr %a235
|
|
call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235)
|
|
%t236 = load { ptr, i64, i64 }, ptr %a233
|
|
call void @finch.gen.printf(ptr %t221, { ptr, i64, i64 } { ptr @.str.1489, i64 6, i64 0 }, { ptr, i64, i64 } %t236)
|
|
%t237 = load ptr, ptr %a1
|
|
%t238 = load { ptr, i64, i64 }, ptr %a209
|
|
call void @finch.gen.br(ptr %t237, { ptr, i64, i64 } %t238)
|
|
%t239 = load ptr, ptr %a1
|
|
%t240 = load { ptr, i64, i64 }, ptr %a209
|
|
call void @finch.gen.label(ptr %t239, { ptr, i64, i64 } %t240)
|
|
br label %endif2427
|
|
else2426:
|
|
%t241 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t241, ptr %a242
|
|
store { ptr, i64, i64 } { ptr @.str.1493, i64 4, i64 0 }, ptr %a243
|
|
%t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243)
|
|
%t245 = icmp ne i32 %t244, 0
|
|
br i1 %t245, label %then2428, label %else2429
|
|
then2428:
|
|
%t246 = load ptr, ptr %a1
|
|
call void @finch.gen.printf(ptr %t246, { ptr, i64, i64 } { ptr @.str.1494, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1495, i64 0, i64 0 })
|
|
br label %endif2430
|
|
else2429:
|
|
%t247 = load ptr, ptr %a1
|
|
%t248 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t247, { ptr, i64, i64 } { ptr @.str.1496, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t248, ptr %a249
|
|
%t250 = load ptr, ptr %a1
|
|
%t251 = load { ptr, i64, i64 }, ptr %a249
|
|
call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.1497, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1498, i64 15, i64 0 }, { ptr, i64, i64 } %t251)
|
|
%t252 = load ptr, ptr %a1
|
|
%t253 = load { ptr, i64, i64 }, ptr %a249
|
|
%t254 = load { ptr, i64, i64 }, ptr %a2
|
|
%t255 = load %S.ast.Type, ptr %a3
|
|
%t256 = load i1, ptr %a4
|
|
call void @finch.gen.emitFormat(ptr %t252, { ptr, i64, i64 } %t253, { ptr, i64, i64 } %t254, %S.ast.Type %t255, i1 %t256)
|
|
%t257 = load ptr, ptr %a1
|
|
%t258 = load { ptr, i64, i64 }, ptr %a249
|
|
store { ptr, i64, i64 } { ptr @.str.1499, i64 31, i64 0 }, ptr %a260
|
|
store { ptr, i64, i64 } %t258, ptr %a261
|
|
call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261)
|
|
%t262 = load { ptr, i64, i64 }, ptr %a259
|
|
store { ptr, i64, i64 } %t262, ptr %a264
|
|
store { ptr, i64, i64 } { ptr @.str.1500, i64 1, i64 0 }, ptr %a265
|
|
call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265)
|
|
%t266 = load { ptr, i64, i64 }, ptr %a263
|
|
call void @finch.gen.emit(ptr %t257, { ptr, i64, i64 } %t266)
|
|
br label %endif2430
|
|
endif2430:
|
|
br label %endif2427
|
|
endif2427:
|
|
br label %endif2421
|
|
endif2421:
|
|
br label %endif2418
|
|
endif2418:
|
|
br label %endif2412
|
|
endif2412:
|
|
br label %endif2409
|
|
endif2409:
|
|
br label %endif2406
|
|
endif2406:
|
|
br label %endif2403
|
|
endif2403:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.bufText(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1501, i64 29, i64 0 }, ptr %a7
|
|
store { ptr, i64, i64 } %t5, ptr %a8
|
|
call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8)
|
|
%t9 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t9, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.1502, i64 6, i64 0 }, ptr %a12
|
|
call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a10
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = load { ptr, i64, i64 }, ptr %a3
|
|
%t16 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t14, { ptr, i64, i64 } %t15)
|
|
store { ptr, i64, i64 } %t13, ptr %a18
|
|
store { ptr, i64, i64 } %t16, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
store { ptr, i64, i64 } %t20, ptr %a22
|
|
store { ptr, i64, i64 } { ptr @.str.1503, i64 6, i64 0 }, ptr %a23
|
|
call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a21
|
|
%t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t26 = load i64, ptr %t25
|
|
call void @finch_str_from_int(ptr %a27, i64 %t26)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t24, ptr %a30
|
|
store { ptr, i64, i64 } %t28, ptr %a31
|
|
call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a29
|
|
store { ptr, i64, i64 } %t32, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.1504, i64 1, i64 0 }, ptr %a35
|
|
call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35)
|
|
%t36 = load { ptr, i64, i64 }, ptr %a33
|
|
call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t36)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.emitFormat(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, i1 %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca i1, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca %S.ast.Type, align 16
|
|
%a179 = alloca %S.ast.Type, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a243 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a247 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca %S.ast.Type, align 16
|
|
%a259 = alloca %S.ast.Type, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
store i1 %p4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
call void @finch_str_copy(ptr %a9, ptr %a8)
|
|
%t10 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t10, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.1505, i64 1, i64 0 }, ptr %a12
|
|
%t13 = load i1, ptr %a5
|
|
br i1 %t13, label %then2431, label %endif2433
|
|
then2431:
|
|
store { ptr, i64, i64 } { ptr @.str.1506, i64 1, i64 0 }, ptr %a12
|
|
br label %endif2433
|
|
endif2433:
|
|
%t14 = load %S.ast.Type, ptr %a4
|
|
%t15 = call i1 @finch.gen.isSigned(%S.ast.Type %t14)
|
|
br i1 %t15, label %then2434, label %else2435
|
|
then2434:
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1507, i64 29, i64 0 }, ptr %a19
|
|
store { ptr, i64, i64 } %t17, ptr %a20
|
|
call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t21, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.1508, i64 6, i64 0 }, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = load { ptr, i64, i64 }, ptr %a3
|
|
%t28 = load %S.ast.Type, ptr %a4
|
|
%t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1509, i64 3, i64 0 })
|
|
%t30 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t26, { ptr, i64, i64 } %t27, %S.ast.Type %t28, %S.ast.Type %t29)
|
|
store { ptr, i64, i64 } %t25, ptr %a32
|
|
store { ptr, i64, i64 } %t30, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } %t34, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.1510, i64 1, i64 0 }, ptr %a37
|
|
call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a35
|
|
call void @finch.gen.emit(ptr %t16, { ptr, i64, i64 } %t38)
|
|
br label %endif2436
|
|
else2435:
|
|
%t39 = load %S.ast.Type, ptr %a4
|
|
%t40 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t39)
|
|
br i1 %t40, label %then2437, label %else2438
|
|
then2437:
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1511, i64 30, i64 0 }, ptr %a44
|
|
store { ptr, i64, i64 } %t42, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
store { ptr, i64, i64 } %t46, ptr %a48
|
|
store { ptr, i64, i64 } { ptr @.str.1512, i64 6, i64 0 }, ptr %a49
|
|
call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49)
|
|
%t50 = load { ptr, i64, i64 }, ptr %a47
|
|
%t51 = load ptr, ptr %a1
|
|
%t52 = load { ptr, i64, i64 }, ptr %a3
|
|
%t53 = load %S.ast.Type, ptr %a4
|
|
%t54 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1513, i64 3, i64 0 })
|
|
%t55 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t51, { ptr, i64, i64 } %t52, %S.ast.Type %t53, %S.ast.Type %t54)
|
|
store { ptr, i64, i64 } %t50, ptr %a57
|
|
store { ptr, i64, i64 } %t55, ptr %a58
|
|
call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a56
|
|
store { ptr, i64, i64 } %t59, ptr %a61
|
|
store { ptr, i64, i64 } { ptr @.str.1514, i64 1, i64 0 }, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
call void @finch.gen.emit(ptr %t41, { ptr, i64, i64 } %t63)
|
|
br label %endif2439
|
|
else2438:
|
|
%t64 = load %S.ast.Type, ptr %a4
|
|
%t65 = call i1 @finch.gen.isFloat(%S.ast.Type %t64)
|
|
br i1 %t65, label %then2440, label %else2441
|
|
then2440:
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1515, i64 31, i64 0 }, ptr %a69
|
|
store { ptr, i64, i64 } %t67, ptr %a70
|
|
call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70)
|
|
%t71 = load { ptr, i64, i64 }, ptr %a68
|
|
store { ptr, i64, i64 } %t71, ptr %a73
|
|
store { ptr, i64, i64 } { ptr @.str.1516, i64 9, i64 0 }, ptr %a74
|
|
call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74)
|
|
%t75 = load { ptr, i64, i64 }, ptr %a72
|
|
%t76 = load ptr, ptr %a1
|
|
%t77 = load { ptr, i64, i64 }, ptr %a3
|
|
%t78 = load %S.ast.Type, ptr %a4
|
|
%t79 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1517, i64 5, i64 0 })
|
|
%t80 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t76, { ptr, i64, i64 } %t77, %S.ast.Type %t78, %S.ast.Type %t79)
|
|
store { ptr, i64, i64 } %t75, ptr %a82
|
|
store { ptr, i64, i64 } %t80, ptr %a83
|
|
call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83)
|
|
%t84 = load { ptr, i64, i64 }, ptr %a81
|
|
store { ptr, i64, i64 } %t84, ptr %a86
|
|
store { ptr, i64, i64 } { ptr @.str.1518, i64 1, i64 0 }, ptr %a87
|
|
call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87)
|
|
%t88 = load { ptr, i64, i64 }, ptr %a85
|
|
call void @finch.gen.emit(ptr %t66, { ptr, i64, i64 } %t88)
|
|
br label %endif2442
|
|
else2441:
|
|
%t89 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t89, ptr %a90
|
|
store { ptr, i64, i64 } { ptr @.str.1519, i64 4, i64 0 }, ptr %a91
|
|
%t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91)
|
|
%t93 = icmp ne i32 %t92, 0
|
|
br i1 %t93, label %then2443, label %else2444
|
|
then2443:
|
|
%t94 = load ptr, ptr %a1
|
|
%t95 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1520, i64 30, i64 0 }, ptr %a97
|
|
store { ptr, i64, i64 } %t95, ptr %a98
|
|
call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t99, ptr %a101
|
|
store { ptr, i64, i64 } { ptr @.str.1521, i64 5, i64 0 }, ptr %a102
|
|
call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102)
|
|
%t103 = load { ptr, i64, i64 }, ptr %a100
|
|
%t104 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t103, ptr %a106
|
|
store { ptr, i64, i64 } %t104, ptr %a107
|
|
call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107)
|
|
%t108 = load { ptr, i64, i64 }, ptr %a105
|
|
store { ptr, i64, i64 } %t108, ptr %a110
|
|
store { ptr, i64, i64 } { ptr @.str.1522, i64 6, i64 0 }, ptr %a111
|
|
call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111)
|
|
%t112 = load { ptr, i64, i64 }, ptr %a109
|
|
%t113 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t112, ptr %a115
|
|
store { ptr, i64, i64 } %t113, ptr %a116
|
|
call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a114
|
|
store { ptr, i64, i64 } %t117, ptr %a119
|
|
store { ptr, i64, i64 } { ptr @.str.1523, i64 1, i64 0 }, ptr %a120
|
|
call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120)
|
|
%t121 = load { ptr, i64, i64 }, ptr %a118
|
|
call void @finch.gen.emit(ptr %t94, { ptr, i64, i64 } %t121)
|
|
br label %endif2445
|
|
else2444:
|
|
%t122 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t122, ptr %a123
|
|
store { ptr, i64, i64 } { ptr @.str.1524, i64 4, i64 0 }, ptr %a124
|
|
%t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124)
|
|
%t126 = icmp ne i32 %t125, 0
|
|
br i1 %t126, label %then2446, label %else2447
|
|
then2446:
|
|
%t127 = load ptr, ptr %a1
|
|
%t128 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1525, i64 30, i64 0 }, ptr %a130
|
|
store { ptr, i64, i64 } %t128, ptr %a131
|
|
call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131)
|
|
%t132 = load { ptr, i64, i64 }, ptr %a129
|
|
store { ptr, i64, i64 } %t132, ptr %a134
|
|
store { ptr, i64, i64 } { ptr @.str.1526, i64 6, i64 0 }, ptr %a135
|
|
call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135)
|
|
%t136 = load { ptr, i64, i64 }, ptr %a133
|
|
%t137 = load ptr, ptr %a1
|
|
%t138 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.1527, i64 8, i64 0 }, ptr %a140
|
|
store { ptr, i64, i64 } %t138, ptr %a141
|
|
call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141)
|
|
%t142 = load { ptr, i64, i64 }, ptr %a139
|
|
store { ptr, i64, i64 } %t142, ptr %a144
|
|
store { ptr, i64, i64 } { ptr @.str.1528, i64 7, i64 0 }, ptr %a145
|
|
call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145)
|
|
%t146 = load { ptr, i64, i64 }, ptr %a143
|
|
%t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t137, { ptr, i64, i64 } %t146)
|
|
store { ptr, i64, i64 } %t136, ptr %a149
|
|
store { ptr, i64, i64 } %t147, ptr %a150
|
|
call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150)
|
|
%t151 = load { ptr, i64, i64 }, ptr %a148
|
|
store { ptr, i64, i64 } %t151, ptr %a153
|
|
store { ptr, i64, i64 } { ptr @.str.1529, i64 1, i64 0 }, ptr %a154
|
|
call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154)
|
|
%t155 = load { ptr, i64, i64 }, ptr %a152
|
|
call void @finch.gen.emit(ptr %t127, { ptr, i64, i64 } %t155)
|
|
br label %endif2448
|
|
else2447:
|
|
%t156 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t156, ptr %a157
|
|
store { ptr, i64, i64 } { ptr @.str.1530, i64 3, i64 0 }, ptr %a158
|
|
%t159 = call i32 @finch_str_eq(ptr %a157, ptr %a158)
|
|
%t160 = icmp ne i32 %t159, 0
|
|
br i1 %t160, label %then2449, label %else2450
|
|
then2449:
|
|
%t161 = load ptr, ptr %a1
|
|
%t162 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1531, i64 29, i64 0 }, ptr %a164
|
|
store { ptr, i64, i64 } %t162, ptr %a165
|
|
call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165)
|
|
%t166 = load { ptr, i64, i64 }, ptr %a163
|
|
store { ptr, i64, i64 } %t166, ptr %a168
|
|
store { ptr, i64, i64 } { ptr @.str.1532, i64 6, i64 0 }, ptr %a169
|
|
call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169)
|
|
%t170 = load { ptr, i64, i64 }, ptr %a167
|
|
%t171 = load ptr, ptr %a1
|
|
%t172 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t172, ptr %a173
|
|
call void @finch_str_copy(ptr %a174, ptr %a173)
|
|
%t175 = load { ptr, i64, i64 }, ptr %a174
|
|
%t176 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t175, 0
|
|
%t177 = load %S.ast.Type, ptr %a4
|
|
store %S.ast.Type %t177, ptr %a178
|
|
call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178)
|
|
%t180 = load %S.ast.Type, ptr %a179
|
|
%t181 = insertvalue %S.gen.Val %t176, %S.ast.Type %t180, 1
|
|
%t182 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t171, %S.gen.Val %t181)
|
|
store { ptr, i64, i64 } %t170, ptr %a184
|
|
store { ptr, i64, i64 } %t182, ptr %a185
|
|
call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185)
|
|
%t186 = load { ptr, i64, i64 }, ptr %a183
|
|
store { ptr, i64, i64 } %t186, ptr %a188
|
|
store { ptr, i64, i64 } { ptr @.str.1533, i64 6, i64 0 }, ptr %a189
|
|
call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189)
|
|
%t190 = load { ptr, i64, i64 }, ptr %a187
|
|
%t191 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t190, ptr %a193
|
|
store { ptr, i64, i64 } %t191, ptr %a194
|
|
call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194)
|
|
%t195 = load { ptr, i64, i64 }, ptr %a192
|
|
store { ptr, i64, i64 } %t195, ptr %a197
|
|
store { ptr, i64, i64 } { ptr @.str.1534, i64 1, i64 0 }, ptr %a198
|
|
call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198)
|
|
%t199 = load { ptr, i64, i64 }, ptr %a196
|
|
call void @finch.gen.emit(ptr %t161, { ptr, i64, i64 } %t199)
|
|
br label %endif2451
|
|
else2450:
|
|
%t200 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t200, ptr %a201
|
|
store { ptr, i64, i64 } { ptr @.str.1535, i64 3, i64 0 }, ptr %a202
|
|
%t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202)
|
|
%t204 = icmp ne i32 %t203, 0
|
|
br label %logic.from2452
|
|
logic.from2452:
|
|
br i1 %t204, label %logic.end2454, label %logic.rhs2453
|
|
logic.rhs2453:
|
|
%t205 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t205, ptr %a206
|
|
store { ptr, i64, i64 } { ptr @.str.1536, i64 4, i64 0 }, ptr %a207
|
|
%t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207)
|
|
%t209 = icmp ne i32 %t208, 0
|
|
br label %logic.rend2455
|
|
logic.rend2455:
|
|
br label %logic.end2454
|
|
logic.end2454:
|
|
%t210 = phi i1 [ true, %logic.from2452 ], [ %t209, %logic.rend2455 ]
|
|
br i1 %t210, label %then2456, label %else2457
|
|
then2456:
|
|
%t211 = load ptr, ptr %a1
|
|
%t212 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.1537, i64 29, i64 0 }, ptr %a214
|
|
store { ptr, i64, i64 } %t212, ptr %a215
|
|
call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215)
|
|
%t216 = load { ptr, i64, i64 }, ptr %a213
|
|
store { ptr, i64, i64 } %t216, ptr %a218
|
|
store { ptr, i64, i64 } { ptr @.str.1538, i64 6, i64 0 }, ptr %a219
|
|
call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219)
|
|
%t220 = load { ptr, i64, i64 }, ptr %a217
|
|
%t221 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t220, ptr %a223
|
|
store { ptr, i64, i64 } %t221, ptr %a224
|
|
call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224)
|
|
%t225 = load { ptr, i64, i64 }, ptr %a222
|
|
store { ptr, i64, i64 } %t225, ptr %a227
|
|
store { ptr, i64, i64 } { ptr @.str.1539, i64 1, i64 0 }, ptr %a228
|
|
call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228)
|
|
%t229 = load { ptr, i64, i64 }, ptr %a226
|
|
call void @finch.gen.emit(ptr %t211, { ptr, i64, i64 } %t229)
|
|
br label %endif2458
|
|
else2457:
|
|
%t230 = load ptr, ptr %a1
|
|
%t231 = load ptr, ptr %a1
|
|
%t232 = load %S.ast.Type, ptr %a4
|
|
%t233 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t231, %S.ast.Type %t232)
|
|
store { ptr, i64, i64 } { ptr @.str.1540, i64 10, i64 0 }, ptr %a235
|
|
store { ptr, i64, i64 } %t233, ptr %a236
|
|
call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236)
|
|
%t237 = load { ptr, i64, i64 }, ptr %a234
|
|
store { ptr, i64, i64 } %t237, ptr %a239
|
|
store { ptr, i64, i64 } { ptr @.str.1541, i64 5, i64 0 }, ptr %a240
|
|
call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240)
|
|
%t241 = load { ptr, i64, i64 }, ptr %a238
|
|
%t242 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t241, ptr %a244
|
|
store { ptr, i64, i64 } %t242, ptr %a245
|
|
call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245)
|
|
%t246 = load { ptr, i64, i64 }, ptr %a243
|
|
store { ptr, i64, i64 } %t246, ptr %a248
|
|
store { ptr, i64, i64 } { ptr @.str.1542, i64 6, i64 0 }, ptr %a249
|
|
call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249)
|
|
%t250 = load { ptr, i64, i64 }, ptr %a247
|
|
%t251 = load ptr, ptr %a1
|
|
%t252 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t252, ptr %a253
|
|
call void @finch_str_copy(ptr %a254, ptr %a253)
|
|
%t255 = load { ptr, i64, i64 }, ptr %a254
|
|
%t256 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t255, 0
|
|
%t257 = load %S.ast.Type, ptr %a4
|
|
store %S.ast.Type %t257, ptr %a258
|
|
call void @finch.copy.S_ast_Type(ptr %a259, ptr %a258)
|
|
%t260 = load %S.ast.Type, ptr %a259
|
|
%t261 = insertvalue %S.gen.Val %t256, %S.ast.Type %t260, 1
|
|
%t262 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t251, %S.gen.Val %t261)
|
|
store { ptr, i64, i64 } %t250, ptr %a264
|
|
store { ptr, i64, i64 } %t262, ptr %a265
|
|
call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265)
|
|
%t266 = load { ptr, i64, i64 }, ptr %a263
|
|
store { ptr, i64, i64 } %t266, ptr %a268
|
|
store { ptr, i64, i64 } { ptr @.str.1543, i64 1, i64 0 }, ptr %a269
|
|
call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269)
|
|
%t270 = load { ptr, i64, i64 }, ptr %a267
|
|
call void @finch.gen.emit(ptr %t230, { ptr, i64, i64 } %t270)
|
|
br label %endif2458
|
|
endif2458:
|
|
br label %endif2451
|
|
endif2451:
|
|
br label %endif2448
|
|
endif2448:
|
|
br label %endif2445
|
|
endif2445:
|
|
br label %endif2442
|
|
endif2442:
|
|
br label %endif2439
|
|
endif2439:
|
|
br label %endif2436
|
|
endif2436:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_EnumDef(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.EnumDef, ptr %src
|
|
store %S.gen.EnumDef %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.EnumDef, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.EnumDef, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.EnumDef, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.EnumDef, ptr %src, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.gen.EnumDef, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.gen.EnumDef, ptr %src, i32 0, i32 2
|
|
call void @finch.copy.arr_str(ptr %t6, ptr %t7)
|
|
%t8 = getelementptr inbounds %S.gen.EnumDef, ptr %dst, i32 0, i32 3
|
|
%t9 = getelementptr inbounds %S.gen.EnumDef, ptr %src, i32 0, i32 3
|
|
call void @finch.copy.arr_int(ptr %t8, ptr %t9)
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.formatFn(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca %S.gen.Saved, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca %S.ast.Type, align 16
|
|
%a49 = alloca %S.ast.Type, align 16
|
|
%a51 = alloca %S.ast.Type, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca %S.gen.EnumDef, align 16
|
|
%a165 = alloca %S.gen.EnumDef, align 16
|
|
%a167 = alloca %S.gen.EnumDef, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca i64, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a231 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a243 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca i64, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a301 = alloca { ptr, i64, i64 }, align 16
|
|
%a302 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca { ptr, i64, i64 }, align 16
|
|
%a305 = alloca { ptr, i64, i64 }, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a314 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a316 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a344 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca { ptr, i64, i64 }, align 16
|
|
%a346 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a367 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a381 = alloca { ptr, i64, i64 }, align 16
|
|
%a383 = alloca { ptr, i64, i64 }, align 16
|
|
%a384 = alloca { ptr, i64, i64 }, align 16
|
|
%a385 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a397 = alloca { ptr, i64, i64 }, align 16
|
|
%a482 = alloca %S.gen.StructDef, align 16
|
|
%a483 = alloca %S.gen.StructDef, align 16
|
|
%a485 = alloca %S.gen.StructDef, align 16
|
|
%a489 = alloca { ptr, i64, i64 }, align 16
|
|
%a493 = alloca { ptr, i64, i64 }, align 16
|
|
%a494 = alloca { ptr, i64, i64 }, align 16
|
|
%a495 = alloca { ptr, i64, i64 }, align 16
|
|
%a500 = alloca i64, align 16
|
|
%a503 = alloca { ptr, i64, i64 }, align 16
|
|
%a516 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a518 = alloca { ptr, i64, i64 }, align 16
|
|
%a520 = alloca { ptr, i64, i64 }, align 16
|
|
%a521 = alloca { ptr, i64, i64 }, align 16
|
|
%a522 = alloca { ptr, i64, i64 }, align 16
|
|
%a526 = alloca { ptr, i64, i64 }, align 16
|
|
%a527 = alloca { ptr, i64, i64 }, align 16
|
|
%a528 = alloca { ptr, i64, i64 }, align 16
|
|
%a530 = alloca { ptr, i64, i64 }, align 16
|
|
%a531 = alloca { ptr, i64, i64 }, align 16
|
|
%a532 = alloca { ptr, i64, i64 }, align 16
|
|
%a542 = alloca { ptr, i64, i64 }, align 16
|
|
%a544 = alloca { ptr, i64, i64 }, align 16
|
|
%a545 = alloca { ptr, i64, i64 }, align 16
|
|
%a546 = alloca { ptr, i64, i64 }, align 16
|
|
%a549 = alloca { ptr, i64, i64 }, align 16
|
|
%a579 = alloca { ptr, i64, i64 }, align 16
|
|
%a580 = alloca { ptr, i64, i64 }, align 16
|
|
%a581 = alloca { ptr, i64, i64 }, align 16
|
|
%a583 = alloca { ptr, i64, i64 }, align 16
|
|
%a584 = alloca { ptr, i64, i64 }, align 16
|
|
%a585 = alloca { ptr, i64, i64 }, align 16
|
|
%a588 = alloca { ptr, i64, i64 }, align 16
|
|
%a589 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = load %S.ast.Type, ptr %a2
|
|
%t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3)
|
|
store { ptr, i64, i64 } { ptr @.str.1544, i64 14, i64 0 }, ptr %a6
|
|
store { ptr, i64, i64 } %t4, ptr %a7
|
|
call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7)
|
|
%t8 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = icmp eq ptr %t10, null
|
|
br i1 %t11, label %panic2459, label %ok2460
|
|
panic2459:
|
|
call void @finch_panic(ptr @.str.1545, i64 846, ptr @.str.1546)
|
|
unreachable
|
|
ok2460:
|
|
%t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 21
|
|
%t13 = load { ptr, i64, i64 }, ptr %t12
|
|
%t14 = load { ptr, i64, i64 }, ptr %a9
|
|
%t15 = call i1 @finch.gen.has({ ptr, i64, i64 } %t13, { ptr, i64, i64 } %t14)
|
|
br i1 %t15, label %then2461, label %endif2463
|
|
then2461:
|
|
%t16 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
call void @finch_str_copy(ptr %a18, ptr %a17)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a18
|
|
ret { ptr, i64, i64 } %t19
|
|
endif2463:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = icmp eq ptr %t20, null
|
|
br i1 %t21, label %panic2464, label %ok2465
|
|
panic2464:
|
|
call void @finch_panic(ptr @.str.1547, i64 849, ptr @.str.1548)
|
|
unreachable
|
|
ok2465:
|
|
%t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 21
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1
|
|
%t24 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t24, ptr %a25
|
|
call void @finch_str_copy(ptr %a26, ptr %a25)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a26
|
|
%t28 = load i64, ptr %t23
|
|
%t29 = add i64 %t28, 1
|
|
call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t30 = load ptr, ptr %t22
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28
|
|
store { ptr, i64, i64 } %t27, ptr %t31
|
|
store i64 %t29, ptr %t23
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t32)
|
|
store %S.gen.Saved %t33, ptr %a34
|
|
%t35 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t36 = load { ptr, i64, i64 }, ptr %t35
|
|
store { ptr, i64, i64 } %t36, ptr %a37
|
|
store { ptr, i64, i64 } { ptr @.str.1549, i64 5, i64 0 }, ptr %a38
|
|
%t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38)
|
|
%t40 = icmp ne i32 %t39, 0
|
|
br i1 %t40, label %then2466, label %else2467
|
|
then2466:
|
|
%t41 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t42 = load { ptr, i64, i64 }, ptr %t41
|
|
%t43 = extractvalue { ptr, i64, i64 } %t42, 1
|
|
%t44 = icmp uge i64 0, %t43
|
|
br i1 %t44, label %range2469, label %inrange2470
|
|
range2469:
|
|
call void @finch_panic_index(ptr @.str.1550, i64 852, i64 0, i64 %t43)
|
|
unreachable
|
|
inrange2470:
|
|
%t45 = extractvalue { ptr, i64, i64 } %t42, 0
|
|
%t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0
|
|
%t47 = load %S.ast.Type, ptr %t46
|
|
store %S.ast.Type %t47, ptr %a48
|
|
call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48)
|
|
%t50 = load %S.ast.Type, ptr %a49
|
|
store %S.ast.Type %t50, ptr %a51
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = call { ptr, i64, i64 } @finch.gen.load(ptr %t52, { ptr, i64, i64 } { ptr @.str.1551, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1552, i64 2, i64 0 })
|
|
store { ptr, i64, i64 } %t53, ptr %a54
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = call { ptr, i64, i64 } @finch.gen.op(ptr %t56, { ptr, i64, i64 } { ptr @.str.1554, i64 62, i64 0 })
|
|
%t58 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.1553, i64 3, i64 0 }, { ptr, i64, i64 } %t57)
|
|
store { ptr, i64, i64 } %t58, ptr %a59
|
|
%t60 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t60, { ptr, i64, i64 } { ptr @.str.1555, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1556, i64 1, i64 0 })
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = load { ptr, i64, i64 }, ptr %a59
|
|
%t63 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t61, { ptr, i64, i64 } %t62)
|
|
store { ptr, i64, i64 } %t63, ptr %a64
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t65, { ptr, i64, i64 } { ptr @.str.1557, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t66, ptr %a67
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.1558, i64 4, i64 0 })
|
|
store { ptr, i64, i64 } %t69, ptr %a70
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = load { ptr, i64, i64 }, ptr %a64
|
|
%t73 = extractvalue { ptr, i64, i64 } %t72, 1
|
|
%t74 = icmp uge i64 3, %t73
|
|
br i1 %t74, label %range2471, label %inrange2472
|
|
range2471:
|
|
call void @finch_panic_index(ptr @.str.1560, i64 859, i64 3, i64 %t73)
|
|
unreachable
|
|
inrange2472:
|
|
%t75 = extractvalue { ptr, i64, i64 } %t72, 0
|
|
%t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i64 3
|
|
%t77 = load { ptr, i64, i64 }, ptr %t76
|
|
store { ptr, i64, i64 } { ptr @.str.1559, i64 13, i64 0 }, ptr %a79
|
|
store { ptr, i64, i64 } %t77, ptr %a80
|
|
call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a78
|
|
store { ptr, i64, i64 } %t81, ptr %a83
|
|
store { ptr, i64, i64 } { ptr @.str.1561, i64 3, i64 0 }, ptr %a84
|
|
call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a82
|
|
%t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t71, { ptr, i64, i64 } %t85)
|
|
store { ptr, i64, i64 } %t86, ptr %a87
|
|
%t88 = load ptr, ptr %a1
|
|
%t89 = load { ptr, i64, i64 }, ptr %a87
|
|
%t90 = load { ptr, i64, i64 }, ptr %a67
|
|
%t91 = load { ptr, i64, i64 }, ptr %a70
|
|
call void @finch.gen.condBr(ptr %t88, { ptr, i64, i64 } %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91)
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = load { ptr, i64, i64 }, ptr %a67
|
|
call void @finch.gen.label(ptr %t92, { ptr, i64, i64 } %t93)
|
|
%t94 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t94, { ptr, i64, i64 } { ptr @.str.1562, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1563, i64 2, i64 0 })
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = load { ptr, i64, i64 }, ptr %a70
|
|
call void @finch.gen.br(ptr %t95, { ptr, i64, i64 } %t96)
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = load { ptr, i64, i64 }, ptr %a70
|
|
call void @finch.gen.label(ptr %t97, { ptr, i64, i64 } %t98)
|
|
%t99 = load ptr, ptr %a1
|
|
%t100 = load ptr, ptr %a1
|
|
%t101 = load %S.ast.Type, ptr %a51
|
|
%t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101)
|
|
store { ptr, i64, i64 } { ptr @.str.1564, i64 23, i64 0 }, ptr %a104
|
|
store { ptr, i64, i64 } %t102, ptr %a105
|
|
call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105)
|
|
%t106 = load { ptr, i64, i64 }, ptr %a103
|
|
store { ptr, i64, i64 } %t106, ptr %a108
|
|
store { ptr, i64, i64 } { ptr @.str.1565, i64 6, i64 0 }, ptr %a109
|
|
call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109)
|
|
%t110 = load { ptr, i64, i64 }, ptr %a107
|
|
%t111 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t110, ptr %a113
|
|
store { ptr, i64, i64 } %t111, ptr %a114
|
|
call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114)
|
|
%t115 = load { ptr, i64, i64 }, ptr %a112
|
|
store { ptr, i64, i64 } %t115, ptr %a117
|
|
store { ptr, i64, i64 } { ptr @.str.1566, i64 6, i64 0 }, ptr %a118
|
|
call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a116
|
|
%t120 = load { ptr, i64, i64 }, ptr %a64
|
|
%t121 = extractvalue { ptr, i64, i64 } %t120, 1
|
|
%t122 = icmp uge i64 3, %t121
|
|
br i1 %t122, label %range2473, label %inrange2474
|
|
range2473:
|
|
call void @finch_panic_index(ptr @.str.1567, i64 865, i64 3, i64 %t121)
|
|
unreachable
|
|
inrange2474:
|
|
%t123 = extractvalue { ptr, i64, i64 } %t120, 0
|
|
%t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 3
|
|
%t125 = load { ptr, i64, i64 }, ptr %t124
|
|
store { ptr, i64, i64 } %t119, ptr %a127
|
|
store { ptr, i64, i64 } %t125, ptr %a128
|
|
call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128)
|
|
%t129 = load { ptr, i64, i64 }, ptr %a126
|
|
%t130 = call { ptr, i64, i64 } @finch.gen.op(ptr %t99, { ptr, i64, i64 } %t129)
|
|
store { ptr, i64, i64 } %t130, ptr %a131
|
|
%t132 = load ptr, ptr %a1
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = load ptr, ptr %a1
|
|
%t135 = load %S.ast.Type, ptr %a51
|
|
%t136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t134, %S.ast.Type %t135)
|
|
%t137 = load { ptr, i64, i64 }, ptr %a131
|
|
%t138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t133, { ptr, i64, i64 } %t136, { ptr, i64, i64 } %t137)
|
|
%t139 = load %S.ast.Type, ptr %a51
|
|
call void @finch.gen.emitFormat(ptr %t132, { ptr, i64, i64 } { ptr @.str.1568, i64 4, i64 0 }, { ptr, i64, i64 } %t138, %S.ast.Type %t139, i1 true)
|
|
%t140 = load ptr, ptr %a1
|
|
%t141 = load { ptr, i64, i64 }, ptr %a64
|
|
call void @finch.gen.loopEnd(ptr %t140, { ptr, i64, i64 } %t141)
|
|
%t142 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t142, { ptr, i64, i64 } { ptr @.str.1569, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1570, i64 1, i64 0 })
|
|
br label %endif2468
|
|
else2467:
|
|
%t143 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t144 = load { ptr, i64, i64 }, ptr %t143
|
|
store { ptr, i64, i64 } %t144, ptr %a145
|
|
store { ptr, i64, i64 } { ptr @.str.1571, i64 4, i64 0 }, ptr %a146
|
|
%t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146)
|
|
%t148 = icmp ne i32 %t147, 0
|
|
br i1 %t148, label %then2475, label %else2476
|
|
then2475:
|
|
%t149 = load ptr, ptr %a1
|
|
%t150 = icmp eq ptr %t149, null
|
|
br i1 %t150, label %panic2478, label %ok2479
|
|
panic2478:
|
|
call void @finch_panic(ptr @.str.1572, i64 871, ptr @.str.1573)
|
|
unreachable
|
|
ok2479:
|
|
%t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 20
|
|
%t152 = load ptr, ptr %a1
|
|
%t153 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t154 = load { ptr, i64, i64 }, ptr %t153
|
|
%t155 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t156 = load { ptr, i64, i64 }, ptr %t155
|
|
%t157 = call i64 @finch.gen.findEnum(ptr %t152, { ptr, i64, i64 } %t154, { ptr, i64, i64 } %t156)
|
|
%t158 = load { ptr, i64, i64 }, ptr %t151
|
|
%t159 = extractvalue { ptr, i64, i64 } %t158, 1
|
|
%t160 = icmp uge i64 %t157, %t159
|
|
br i1 %t160, label %range2480, label %inrange2481
|
|
range2480:
|
|
call void @finch_panic_index(ptr @.str.1574, i64 871, i64 %t157, i64 %t159)
|
|
unreachable
|
|
inrange2481:
|
|
%t161 = extractvalue { ptr, i64, i64 } %t158, 0
|
|
%t162 = getelementptr inbounds %S.gen.EnumDef, ptr %t161, i64 %t157
|
|
%t163 = load %S.gen.EnumDef, ptr %t162
|
|
store %S.gen.EnumDef %t163, ptr %a164
|
|
call void @finch.copy.S_gen_EnumDef(ptr %a165, ptr %a164)
|
|
%t166 = load %S.gen.EnumDef, ptr %a165
|
|
store %S.gen.EnumDef %t166, ptr %a167
|
|
%t168 = load ptr, ptr %a1
|
|
%t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t168, { ptr, i64, i64 } { ptr @.str.1575, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1576, i64 2, i64 0 })
|
|
store { ptr, i64, i64 } %t169, ptr %a170
|
|
%t171 = load ptr, ptr %a1
|
|
%t172 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t171, { ptr, i64, i64 } { ptr @.str.1577, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t172, ptr %a173
|
|
%t174 = load ptr, ptr %a1
|
|
%t175 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t174, { ptr, i64, i64 } { ptr @.str.1578, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t175, ptr %a176
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a177
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a178
|
|
%t179 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 2
|
|
%t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1
|
|
%t181 = load i64, ptr %t180
|
|
store i64 0, ptr %a182
|
|
br label %for.cond2482
|
|
for.cond2482:
|
|
%t183 = load i64, ptr %a182
|
|
%t184 = icmp slt i64 %t183, %t181
|
|
br i1 %t184, label %for.body2483, label %for.end2485
|
|
for.body2483:
|
|
%t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %a178, i32 0, i32 1
|
|
%t186 = load ptr, ptr %a1
|
|
%t187 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t186, { ptr, i64, i64 } { ptr @.str.1579, i64 6, i64 0 })
|
|
%t188 = load i64, ptr %t185
|
|
%t189 = add i64 %t188, 1
|
|
call void @finch_arr_reserve(ptr %a178, i64 %t189, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t190 = load ptr, ptr %a178
|
|
%t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t188
|
|
store { ptr, i64, i64 } %t187, ptr %t191
|
|
store i64 %t189, ptr %t185
|
|
%t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %a177, i32 0, i32 1
|
|
%t193 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 3
|
|
%t194 = load i64, ptr %a182
|
|
%t195 = load { ptr, i64, i64 }, ptr %t193
|
|
%t196 = extractvalue { ptr, i64, i64 } %t195, 1
|
|
%t197 = icmp uge i64 %t194, %t196
|
|
br i1 %t197, label %range2486, label %inrange2487
|
|
range2486:
|
|
call void @finch_panic_index(ptr @.str.1581, i64 879, i64 %t194, i64 %t196)
|
|
unreachable
|
|
inrange2487:
|
|
%t198 = extractvalue { ptr, i64, i64 } %t195, 0
|
|
%t199 = getelementptr inbounds i64, ptr %t198, i64 %t194
|
|
%t200 = load i64, ptr %t199
|
|
call void @finch_str_from_int(ptr %a201, i64 %t200)
|
|
%t202 = load { ptr, i64, i64 }, ptr %a201
|
|
store { ptr, i64, i64 } { ptr @.str.1580, i64 4, i64 0 }, ptr %a204
|
|
store { ptr, i64, i64 } %t202, ptr %a205
|
|
call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205)
|
|
%t206 = load { ptr, i64, i64 }, ptr %a203
|
|
store { ptr, i64, i64 } %t206, ptr %a208
|
|
store { ptr, i64, i64 } { ptr @.str.1582, i64 9, i64 0 }, ptr %a209
|
|
call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209)
|
|
%t210 = load { ptr, i64, i64 }, ptr %a207
|
|
%t211 = load i64, ptr %a182
|
|
%t212 = load { ptr, i64, i64 }, ptr %a178
|
|
%t213 = extractvalue { ptr, i64, i64 } %t212, 1
|
|
%t214 = icmp uge i64 %t211, %t213
|
|
br i1 %t214, label %range2488, label %inrange2489
|
|
range2488:
|
|
call void @finch_panic_index(ptr @.str.1583, i64 879, i64 %t211, i64 %t213)
|
|
unreachable
|
|
inrange2489:
|
|
%t215 = extractvalue { ptr, i64, i64 } %t212, 0
|
|
%t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211
|
|
%t217 = load { ptr, i64, i64 }, ptr %t216
|
|
store { ptr, i64, i64 } %t210, ptr %a219
|
|
store { ptr, i64, i64 } %t217, ptr %a220
|
|
call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220)
|
|
%t221 = load { ptr, i64, i64 }, ptr %a218
|
|
%t222 = load i64, ptr %t192
|
|
%t223 = add i64 %t222, 1
|
|
call void @finch_arr_reserve(ptr %a177, i64 %t223, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t224 = load ptr, ptr %a177
|
|
%t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %t224, i64 %t222
|
|
store { ptr, i64, i64 } %t221, ptr %t225
|
|
store i64 %t223, ptr %t192
|
|
br label %for.step2484
|
|
for.step2484:
|
|
%t226 = load i64, ptr %a182
|
|
%t227 = add i64 %t226, 1
|
|
store i64 %t227, ptr %a182
|
|
br label %for.cond2482
|
|
for.end2485:
|
|
%t228 = load ptr, ptr %a1
|
|
%t229 = load { ptr, i64, i64 }, ptr %a170
|
|
store { ptr, i64, i64 } { ptr @.str.1584, i64 11, i64 0 }, ptr %a231
|
|
store { ptr, i64, i64 } %t229, ptr %a232
|
|
call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232)
|
|
%t233 = load { ptr, i64, i64 }, ptr %a230
|
|
store { ptr, i64, i64 } %t233, ptr %a235
|
|
store { ptr, i64, i64 } { ptr @.str.1585, i64 9, i64 0 }, ptr %a236
|
|
call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236)
|
|
%t237 = load { ptr, i64, i64 }, ptr %a234
|
|
%t238 = load { ptr, i64, i64 }, ptr %a173
|
|
store { ptr, i64, i64 } %t237, ptr %a240
|
|
store { ptr, i64, i64 } %t238, ptr %a241
|
|
call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241)
|
|
%t242 = load { ptr, i64, i64 }, ptr %a239
|
|
store { ptr, i64, i64 } %t242, ptr %a244
|
|
store { ptr, i64, i64 } { ptr @.str.1586, i64 3, i64 0 }, ptr %a245
|
|
call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245)
|
|
%t246 = load { ptr, i64, i64 }, ptr %a243
|
|
%t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %a177, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.1587, i64 1, i64 0 }, ptr %a248
|
|
call void @finch_str_join(ptr %a249, ptr %a177, ptr %a248)
|
|
%t250 = load { ptr, i64, i64 }, ptr %a249
|
|
store { ptr, i64, i64 } %t246, ptr %a252
|
|
store { ptr, i64, i64 } %t250, ptr %a253
|
|
call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253)
|
|
%t254 = load { ptr, i64, i64 }, ptr %a251
|
|
store { ptr, i64, i64 } %t254, ptr %a256
|
|
store { ptr, i64, i64 } { ptr @.str.1588, i64 2, i64 0 }, ptr %a257
|
|
call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257)
|
|
%t258 = load { ptr, i64, i64 }, ptr %a255
|
|
call void @finch.gen.emit(ptr %t228, { ptr, i64, i64 } %t258)
|
|
%t259 = load ptr, ptr %a1
|
|
%t260 = icmp eq ptr %t259, null
|
|
br i1 %t260, label %panic2490, label %ok2491
|
|
panic2490:
|
|
call void @finch_panic(ptr @.str.1589, i64 882, ptr @.str.1590)
|
|
unreachable
|
|
ok2491:
|
|
%t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9
|
|
store i1 true, ptr %t261
|
|
%t262 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 2
|
|
%t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1
|
|
%t264 = load i64, ptr %t263
|
|
store i64 0, ptr %a265
|
|
br label %for.cond2492
|
|
for.cond2492:
|
|
%t266 = load i64, ptr %a265
|
|
%t267 = icmp slt i64 %t266, %t264
|
|
br i1 %t267, label %for.body2493, label %for.end2495
|
|
for.body2493:
|
|
%t268 = load ptr, ptr %a1
|
|
%t269 = load i64, ptr %a265
|
|
%t270 = load { ptr, i64, i64 }, ptr %a178
|
|
%t271 = extractvalue { ptr, i64, i64 } %t270, 1
|
|
%t272 = icmp uge i64 %t269, %t271
|
|
br i1 %t272, label %range2496, label %inrange2497
|
|
range2496:
|
|
call void @finch_panic_index(ptr @.str.1591, i64 884, i64 %t269, i64 %t271)
|
|
unreachable
|
|
inrange2497:
|
|
%t273 = extractvalue { ptr, i64, i64 } %t270, 0
|
|
%t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t269
|
|
%t275 = load { ptr, i64, i64 }, ptr %t274
|
|
call void @finch.gen.label(ptr %t268, { ptr, i64, i64 } %t275)
|
|
%t276 = load ptr, ptr %a1
|
|
%t277 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 2
|
|
%t278 = load i64, ptr %a265
|
|
%t279 = load { ptr, i64, i64 }, ptr %t277
|
|
%t280 = extractvalue { ptr, i64, i64 } %t279, 1
|
|
%t281 = icmp uge i64 %t278, %t280
|
|
br i1 %t281, label %range2498, label %inrange2499
|
|
range2498:
|
|
call void @finch_panic_index(ptr @.str.1593, i64 885, i64 %t278, i64 %t280)
|
|
unreachable
|
|
inrange2499:
|
|
%t282 = extractvalue { ptr, i64, i64 } %t279, 0
|
|
%t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i64 %t278
|
|
%t284 = load { ptr, i64, i64 }, ptr %t283
|
|
call void @finch.gen.bufText(ptr %t276, { ptr, i64, i64 } { ptr @.str.1592, i64 4, i64 0 }, { ptr, i64, i64 } %t284)
|
|
%t285 = load ptr, ptr %a1
|
|
%t286 = load { ptr, i64, i64 }, ptr %a176
|
|
call void @finch.gen.br(ptr %t285, { ptr, i64, i64 } %t286)
|
|
br label %for.step2494
|
|
for.step2494:
|
|
%t287 = load i64, ptr %a265
|
|
%t288 = add i64 %t287, 1
|
|
store i64 %t288, ptr %a265
|
|
br label %for.cond2492
|
|
for.end2495:
|
|
%t289 = load ptr, ptr %a1
|
|
%t290 = load { ptr, i64, i64 }, ptr %a173
|
|
call void @finch.gen.label(ptr %t289, { ptr, i64, i64 } %t290)
|
|
%t291 = load ptr, ptr %a1
|
|
%t292 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 1
|
|
%t293 = load { ptr, i64, i64 }, ptr %t292
|
|
store { ptr, i64, i64 } %t293, ptr %a295
|
|
store { ptr, i64, i64 } { ptr @.str.1595, i64 1, i64 0 }, ptr %a296
|
|
call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296)
|
|
%t297 = load { ptr, i64, i64 }, ptr %a294
|
|
call void @finch.gen.bufText(ptr %t291, { ptr, i64, i64 } { ptr @.str.1594, i64 4, i64 0 }, { ptr, i64, i64 } %t297)
|
|
%t298 = load ptr, ptr %a1
|
|
%t299 = load ptr, ptr %a1
|
|
%t300 = load { ptr, i64, i64 }, ptr %a170
|
|
store { ptr, i64, i64 } { ptr @.str.1597, i64 9, i64 0 }, ptr %a302
|
|
store { ptr, i64, i64 } %t300, ptr %a303
|
|
call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303)
|
|
%t304 = load { ptr, i64, i64 }, ptr %a301
|
|
store { ptr, i64, i64 } %t304, ptr %a306
|
|
store { ptr, i64, i64 } { ptr @.str.1598, i64 7, i64 0 }, ptr %a307
|
|
call void @finch_str_concat(ptr %a305, ptr %a306, ptr %a307)
|
|
%t308 = load { ptr, i64, i64 }, ptr %a305
|
|
%t309 = call { ptr, i64, i64 } @finch.gen.op(ptr %t299, { ptr, i64, i64 } %t308)
|
|
store { ptr, i64, i64 } { ptr @.str.1596, i64 39, i64 0 }, ptr %a311
|
|
store { ptr, i64, i64 } %t309, ptr %a312
|
|
call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312)
|
|
%t313 = load { ptr, i64, i64 }, ptr %a310
|
|
store { ptr, i64, i64 } %t313, ptr %a315
|
|
store { ptr, i64, i64 } { ptr @.str.1599, i64 1, i64 0 }, ptr %a316
|
|
call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316)
|
|
%t317 = load { ptr, i64, i64 }, ptr %a314
|
|
call void @finch.gen.emit(ptr %t298, { ptr, i64, i64 } %t317)
|
|
%t318 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t318, { ptr, i64, i64 } { ptr @.str.1600, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1601, i64 1, i64 0 })
|
|
%t319 = load ptr, ptr %a1
|
|
%t320 = load { ptr, i64, i64 }, ptr %a176
|
|
call void @finch.gen.br(ptr %t319, { ptr, i64, i64 } %t320)
|
|
%t321 = load ptr, ptr %a1
|
|
%t322 = load { ptr, i64, i64 }, ptr %a176
|
|
call void @finch.gen.label(ptr %t321, { ptr, i64, i64 } %t322)
|
|
br label %endif2477
|
|
else2476:
|
|
%t323 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t324 = load { ptr, i64, i64 }, ptr %t323
|
|
store { ptr, i64, i64 } %t324, ptr %a325
|
|
store { ptr, i64, i64 } { ptr @.str.1602, i64 3, i64 0 }, ptr %a326
|
|
%t327 = call i32 @finch_str_eq(ptr %a325, ptr %a326)
|
|
%t328 = icmp ne i32 %t327, 0
|
|
br i1 %t328, label %then2500, label %else2501
|
|
then2500:
|
|
%t329 = load ptr, ptr %a1
|
|
%t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.1603, i64 2, i64 0 })
|
|
store { ptr, i64, i64 } %t330, ptr %a331
|
|
%t332 = load ptr, ptr %a1
|
|
%t333 = load { ptr, i64, i64 }, ptr %a331
|
|
call void @finch.gen.store(ptr %t332, { ptr, i64, i64 } { ptr @.str.1604, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1605, i64 4, i64 0 }, { ptr, i64, i64 } %t333)
|
|
%t334 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t334, { ptr, i64, i64 } { ptr @.str.1606, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1607, i64 1, i64 0 })
|
|
%t335 = load ptr, ptr %a1
|
|
%t336 = load ptr, ptr %a1
|
|
%t337 = load ptr, ptr %a1
|
|
%t338 = load %S.ast.Type, ptr %a2
|
|
%t339 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t337, %S.ast.Type %t338)
|
|
store { ptr, i64, i64 } { ptr @.str.1609, i64 23, i64 0 }, ptr %a341
|
|
store { ptr, i64, i64 } %t339, ptr %a342
|
|
call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342)
|
|
%t343 = load { ptr, i64, i64 }, ptr %a340
|
|
store { ptr, i64, i64 } %t343, ptr %a345
|
|
store { ptr, i64, i64 } { ptr @.str.1610, i64 22, i64 0 }, ptr %a346
|
|
call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346)
|
|
%t347 = load { ptr, i64, i64 }, ptr %a344
|
|
%t348 = call { ptr, i64, i64 } @finch.gen.op(ptr %t336, { ptr, i64, i64 } %t347)
|
|
%t349 = call { ptr, i64, i64 } @finch.gen.load(ptr %t335, { ptr, i64, i64 } { ptr @.str.1608, i64 3, i64 0 }, { ptr, i64, i64 } %t348)
|
|
store { ptr, i64, i64 } %t349, ptr %a350
|
|
%t351 = load ptr, ptr %a1
|
|
%t352 = load { ptr, i64, i64 }, ptr %a350
|
|
%t353 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t351, { ptr, i64, i64 } %t352)
|
|
store { ptr, i64, i64 } %t353, ptr %a354
|
|
%t355 = load ptr, ptr %a1
|
|
%t356 = load %S.ast.Type, ptr %a2
|
|
%t357 = load { ptr, i64, i64 }, ptr %a354
|
|
%t358 = extractvalue { ptr, i64, i64 } %t357, 1
|
|
%t359 = icmp uge i64 3, %t358
|
|
br i1 %t359, label %range2503, label %inrange2504
|
|
range2503:
|
|
call void @finch_panic_index(ptr @.str.1612, i64 901, i64 3, i64 %t358)
|
|
unreachable
|
|
inrange2504:
|
|
%t360 = extractvalue { ptr, i64, i64 } %t357, 0
|
|
%t361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t360, i64 3
|
|
%t362 = load { ptr, i64, i64 }, ptr %t361
|
|
%t363 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t355, { ptr, i64, i64 } { ptr @.str.1611, i64 2, i64 0 }, %S.ast.Type %t356, { ptr, i64, i64 } %t362)
|
|
store { ptr, i64, i64 } %t363, ptr %a364
|
|
%t365 = load ptr, ptr %a1
|
|
%t366 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t365, { ptr, i64, i64 } { ptr @.str.1613, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t366, ptr %a367
|
|
%t368 = load ptr, ptr %a1
|
|
%t369 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t368, { ptr, i64, i64 } { ptr @.str.1614, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t369, ptr %a370
|
|
%t371 = load ptr, ptr %a1
|
|
%t372 = load ptr, ptr %a1
|
|
%t373 = load ptr, ptr %a1
|
|
%t374 = load ptr, ptr %a1
|
|
%t375 = load { ptr, i64, i64 }, ptr %a364
|
|
%t376 = load %S.ast.Type, ptr %a2
|
|
%t377 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t374, { ptr, i64, i64 } %t375, %S.ast.Type %t376, i64 0)
|
|
%t378 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.1616, i64 3, i64 0 }, { ptr, i64, i64 } %t377)
|
|
store { ptr, i64, i64 } { ptr @.str.1615, i64 12, i64 0 }, ptr %a380
|
|
store { ptr, i64, i64 } %t378, ptr %a381
|
|
call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381)
|
|
%t382 = load { ptr, i64, i64 }, ptr %a379
|
|
store { ptr, i64, i64 } %t382, ptr %a384
|
|
store { ptr, i64, i64 } { ptr @.str.1617, i64 3, i64 0 }, ptr %a385
|
|
call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385)
|
|
%t386 = load { ptr, i64, i64 }, ptr %a383
|
|
%t387 = call { ptr, i64, i64 } @finch.gen.op(ptr %t372, { ptr, i64, i64 } %t386)
|
|
%t388 = load { ptr, i64, i64 }, ptr %a367
|
|
%t389 = load { ptr, i64, i64 }, ptr %a370
|
|
call void @finch.gen.condBr(ptr %t371, { ptr, i64, i64 } %t387, { ptr, i64, i64 } %t388, { ptr, i64, i64 } %t389)
|
|
%t390 = load ptr, ptr %a1
|
|
%t391 = load { ptr, i64, i64 }, ptr %a367
|
|
call void @finch.gen.label(ptr %t390, { ptr, i64, i64 } %t391)
|
|
%t392 = load ptr, ptr %a1
|
|
%t393 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t392, { ptr, i64, i64 } { ptr @.str.1618, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t393, ptr %a394
|
|
%t395 = load ptr, ptr %a1
|
|
%t396 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t395, { ptr, i64, i64 } { ptr @.str.1619, i64 4, i64 0 })
|
|
store { ptr, i64, i64 } %t396, ptr %a397
|
|
%t398 = load ptr, ptr %a1
|
|
%t399 = load ptr, ptr %a1
|
|
%t400 = load { ptr, i64, i64 }, ptr %a331
|
|
%t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t399, { ptr, i64, i64 } { ptr @.str.1620, i64 2, i64 0 }, { ptr, i64, i64 } %t400)
|
|
%t402 = load { ptr, i64, i64 }, ptr %a397
|
|
%t403 = load { ptr, i64, i64 }, ptr %a394
|
|
call void @finch.gen.condBr(ptr %t398, { ptr, i64, i64 } %t401, { ptr, i64, i64 } %t402, { ptr, i64, i64 } %t403)
|
|
%t404 = load ptr, ptr %a1
|
|
%t405 = load { ptr, i64, i64 }, ptr %a394
|
|
call void @finch.gen.label(ptr %t404, { ptr, i64, i64 } %t405)
|
|
%t406 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t406, { ptr, i64, i64 } { ptr @.str.1621, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1622, i64 2, i64 0 })
|
|
%t407 = load ptr, ptr %a1
|
|
%t408 = load { ptr, i64, i64 }, ptr %a397
|
|
call void @finch.gen.br(ptr %t407, { ptr, i64, i64 } %t408)
|
|
%t409 = load ptr, ptr %a1
|
|
%t410 = load { ptr, i64, i64 }, ptr %a397
|
|
call void @finch.gen.label(ptr %t409, { ptr, i64, i64 } %t410)
|
|
%t411 = load ptr, ptr %a1
|
|
%t412 = load { ptr, i64, i64 }, ptr %a331
|
|
call void @finch.gen.store(ptr %t411, { ptr, i64, i64 } { ptr @.str.1623, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1624, i64 5, i64 0 }, { ptr, i64, i64 } %t412)
|
|
%t413 = load ptr, ptr %a1
|
|
%t414 = load ptr, ptr %a1
|
|
%t415 = load ptr, ptr %a1
|
|
%t416 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t417 = load { ptr, i64, i64 }, ptr %t416
|
|
%t418 = extractvalue { ptr, i64, i64 } %t417, 1
|
|
%t419 = icmp uge i64 0, %t418
|
|
br i1 %t419, label %range2505, label %inrange2506
|
|
range2505:
|
|
call void @finch_panic_index(ptr @.str.1626, i64 914, i64 0, i64 %t418)
|
|
unreachable
|
|
inrange2506:
|
|
%t420 = extractvalue { ptr, i64, i64 } %t417, 0
|
|
%t421 = getelementptr inbounds %S.ast.Type, ptr %t420, i64 0
|
|
%t422 = load %S.ast.Type, ptr %t421
|
|
%t423 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t415, %S.ast.Type %t422)
|
|
%t424 = load ptr, ptr %a1
|
|
%t425 = load { ptr, i64, i64 }, ptr %a364
|
|
%t426 = load %S.ast.Type, ptr %a2
|
|
%t427 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t424, { ptr, i64, i64 } %t425, %S.ast.Type %t426, i64 1)
|
|
%t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t414, { ptr, i64, i64 } %t423, { ptr, i64, i64 } %t427)
|
|
%t429 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t430 = load { ptr, i64, i64 }, ptr %t429
|
|
%t431 = extractvalue { ptr, i64, i64 } %t430, 1
|
|
%t432 = icmp uge i64 0, %t431
|
|
br i1 %t432, label %range2507, label %inrange2508
|
|
range2507:
|
|
call void @finch_panic_index(ptr @.str.1627, i64 914, i64 0, i64 %t431)
|
|
unreachable
|
|
inrange2508:
|
|
%t433 = extractvalue { ptr, i64, i64 } %t430, 0
|
|
%t434 = getelementptr inbounds %S.ast.Type, ptr %t433, i64 0
|
|
%t435 = load %S.ast.Type, ptr %t434
|
|
call void @finch.gen.emitFormat(ptr %t413, { ptr, i64, i64 } { ptr @.str.1625, i64 4, i64 0 }, { ptr, i64, i64 } %t428, %S.ast.Type %t435, i1 true)
|
|
%t436 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t436, { ptr, i64, i64 } { ptr @.str.1628, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1629, i64 2, i64 0 })
|
|
%t437 = load ptr, ptr %a1
|
|
%t438 = load ptr, ptr %a1
|
|
%t439 = load ptr, ptr %a1
|
|
%t440 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t441 = load { ptr, i64, i64 }, ptr %t440
|
|
%t442 = extractvalue { ptr, i64, i64 } %t441, 1
|
|
%t443 = icmp uge i64 1, %t442
|
|
br i1 %t443, label %range2509, label %inrange2510
|
|
range2509:
|
|
call void @finch_panic_index(ptr @.str.1631, i64 916, i64 1, i64 %t442)
|
|
unreachable
|
|
inrange2510:
|
|
%t444 = extractvalue { ptr, i64, i64 } %t441, 0
|
|
%t445 = getelementptr inbounds %S.ast.Type, ptr %t444, i64 1
|
|
%t446 = load %S.ast.Type, ptr %t445
|
|
%t447 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t446)
|
|
%t448 = load ptr, ptr %a1
|
|
%t449 = load { ptr, i64, i64 }, ptr %a364
|
|
%t450 = load %S.ast.Type, ptr %a2
|
|
%t451 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t448, { ptr, i64, i64 } %t449, %S.ast.Type %t450, i64 2)
|
|
%t452 = call { ptr, i64, i64 } @finch.gen.load(ptr %t438, { ptr, i64, i64 } %t447, { ptr, i64, i64 } %t451)
|
|
%t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t454 = load { ptr, i64, i64 }, ptr %t453
|
|
%t455 = extractvalue { ptr, i64, i64 } %t454, 1
|
|
%t456 = icmp uge i64 1, %t455
|
|
br i1 %t456, label %range2511, label %inrange2512
|
|
range2511:
|
|
call void @finch_panic_index(ptr @.str.1632, i64 916, i64 1, i64 %t455)
|
|
unreachable
|
|
inrange2512:
|
|
%t457 = extractvalue { ptr, i64, i64 } %t454, 0
|
|
%t458 = getelementptr inbounds %S.ast.Type, ptr %t457, i64 1
|
|
%t459 = load %S.ast.Type, ptr %t458
|
|
call void @finch.gen.emitFormat(ptr %t437, { ptr, i64, i64 } { ptr @.str.1630, i64 4, i64 0 }, { ptr, i64, i64 } %t452, %S.ast.Type %t459, i1 true)
|
|
%t460 = load ptr, ptr %a1
|
|
%t461 = load { ptr, i64, i64 }, ptr %a370
|
|
call void @finch.gen.br(ptr %t460, { ptr, i64, i64 } %t461)
|
|
%t462 = load ptr, ptr %a1
|
|
%t463 = load { ptr, i64, i64 }, ptr %a370
|
|
call void @finch.gen.label(ptr %t462, { ptr, i64, i64 } %t463)
|
|
%t464 = load ptr, ptr %a1
|
|
%t465 = load { ptr, i64, i64 }, ptr %a354
|
|
call void @finch.gen.loopEnd(ptr %t464, { ptr, i64, i64 } %t465)
|
|
%t466 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t466, { ptr, i64, i64 } { ptr @.str.1633, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1634, i64 1, i64 0 })
|
|
br label %endif2502
|
|
else2501:
|
|
%t467 = load ptr, ptr %a1
|
|
%t468 = icmp eq ptr %t467, null
|
|
br i1 %t468, label %panic2513, label %ok2514
|
|
panic2513:
|
|
call void @finch_panic(ptr @.str.1635, i64 922, ptr @.str.1636)
|
|
unreachable
|
|
ok2514:
|
|
%t469 = getelementptr inbounds %S.gen.Gen, ptr %t467, i32 0, i32 15
|
|
%t470 = load ptr, ptr %a1
|
|
%t471 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t472 = load { ptr, i64, i64 }, ptr %t471
|
|
%t473 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t474 = load { ptr, i64, i64 }, ptr %t473
|
|
%t475 = call i64 @finch.gen.findStruct(ptr %t470, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474)
|
|
%t476 = load { ptr, i64, i64 }, ptr %t469
|
|
%t477 = extractvalue { ptr, i64, i64 } %t476, 1
|
|
%t478 = icmp uge i64 %t475, %t477
|
|
br i1 %t478, label %range2515, label %inrange2516
|
|
range2515:
|
|
call void @finch_panic_index(ptr @.str.1637, i64 922, i64 %t475, i64 %t477)
|
|
unreachable
|
|
inrange2516:
|
|
%t479 = extractvalue { ptr, i64, i64 } %t476, 0
|
|
%t480 = getelementptr inbounds %S.gen.StructDef, ptr %t479, i64 %t475
|
|
%t481 = load %S.gen.StructDef, ptr %t480
|
|
store %S.gen.StructDef %t481, ptr %a482
|
|
call void @finch.copy.S_gen_StructDef(ptr %a483, ptr %a482)
|
|
%t484 = load %S.gen.StructDef, ptr %a483
|
|
store %S.gen.StructDef %t484, ptr %a485
|
|
%t486 = load ptr, ptr %a1
|
|
%t487 = load %S.ast.Type, ptr %a2
|
|
%t488 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t486, %S.ast.Type %t487)
|
|
store { ptr, i64, i64 } %t488, ptr %a489
|
|
%t490 = load ptr, ptr %a1
|
|
%t491 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 1
|
|
%t492 = load { ptr, i64, i64 }, ptr %t491
|
|
store { ptr, i64, i64 } %t492, ptr %a494
|
|
store { ptr, i64, i64 } { ptr @.str.1639, i64 1, i64 0 }, ptr %a495
|
|
call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495)
|
|
%t496 = load { ptr, i64, i64 }, ptr %a493
|
|
call void @finch.gen.bufText(ptr %t490, { ptr, i64, i64 } { ptr @.str.1638, i64 4, i64 0 }, { ptr, i64, i64 } %t496)
|
|
%t497 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 12
|
|
%t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i32 0, i32 1
|
|
%t499 = load i64, ptr %t498
|
|
store i64 0, ptr %a500
|
|
br label %for.cond2517
|
|
for.cond2517:
|
|
%t501 = load i64, ptr %a500
|
|
%t502 = icmp slt i64 %t501, %t499
|
|
br i1 %t502, label %for.body2518, label %for.end2520
|
|
for.body2518:
|
|
store { ptr, i64, i64 } { ptr @.str.1640, i64 2, i64 0 }, ptr %a503
|
|
%t504 = load i64, ptr %a500
|
|
%t505 = icmp eq i64 %t504, 0
|
|
br i1 %t505, label %then2521, label %endif2523
|
|
then2521:
|
|
store { ptr, i64, i64 } { ptr @.str.1641, i64 0, i64 0 }, ptr %a503
|
|
br label %endif2523
|
|
endif2523:
|
|
%t506 = load ptr, ptr %a1
|
|
%t507 = load { ptr, i64, i64 }, ptr %a503
|
|
%t508 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 11
|
|
%t509 = load i64, ptr %a500
|
|
%t510 = load { ptr, i64, i64 }, ptr %t508
|
|
%t511 = extractvalue { ptr, i64, i64 } %t510, 1
|
|
%t512 = icmp uge i64 %t509, %t511
|
|
br i1 %t512, label %range2524, label %inrange2525
|
|
range2524:
|
|
call void @finch_panic_index(ptr @.str.1643, i64 930, i64 %t509, i64 %t511)
|
|
unreachable
|
|
inrange2525:
|
|
%t513 = extractvalue { ptr, i64, i64 } %t510, 0
|
|
%t514 = getelementptr inbounds { ptr, i64, i64 }, ptr %t513, i64 %t509
|
|
%t515 = load { ptr, i64, i64 }, ptr %t514
|
|
store { ptr, i64, i64 } %t507, ptr %a517
|
|
store { ptr, i64, i64 } %t515, ptr %a518
|
|
call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518)
|
|
%t519 = load { ptr, i64, i64 }, ptr %a516
|
|
store { ptr, i64, i64 } %t519, ptr %a521
|
|
store { ptr, i64, i64 } { ptr @.str.1644, i64 2, i64 0 }, ptr %a522
|
|
call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522)
|
|
%t523 = load { ptr, i64, i64 }, ptr %a520
|
|
call void @finch.gen.bufText(ptr %t506, { ptr, i64, i64 } { ptr @.str.1642, i64 4, i64 0 }, { ptr, i64, i64 } %t523)
|
|
%t524 = load ptr, ptr %a1
|
|
%t525 = load { ptr, i64, i64 }, ptr %a489
|
|
store { ptr, i64, i64 } { ptr @.str.1645, i64 23, i64 0 }, ptr %a527
|
|
store { ptr, i64, i64 } %t525, ptr %a528
|
|
call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528)
|
|
%t529 = load { ptr, i64, i64 }, ptr %a526
|
|
store { ptr, i64, i64 } %t529, ptr %a531
|
|
store { ptr, i64, i64 } { ptr @.str.1646, i64 21, i64 0 }, ptr %a532
|
|
call void @finch_str_concat(ptr %a530, ptr %a531, ptr %a532)
|
|
%t533 = load { ptr, i64, i64 }, ptr %a530
|
|
%t534 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 3
|
|
%t535 = load i64, ptr %a500
|
|
%t536 = load { ptr, i64, i64 }, ptr %t534
|
|
%t537 = extractvalue { ptr, i64, i64 } %t536, 1
|
|
%t538 = icmp uge i64 %t535, %t537
|
|
br i1 %t538, label %range2526, label %inrange2527
|
|
range2526:
|
|
call void @finch_panic_index(ptr @.str.1647, i64 931, i64 %t535, i64 %t537)
|
|
unreachable
|
|
inrange2527:
|
|
%t539 = extractvalue { ptr, i64, i64 } %t536, 0
|
|
%t540 = getelementptr inbounds i64, ptr %t539, i64 %t535
|
|
%t541 = load i64, ptr %t540
|
|
call void @finch_str_from_int(ptr %a542, i64 %t541)
|
|
%t543 = load { ptr, i64, i64 }, ptr %a542
|
|
store { ptr, i64, i64 } %t533, ptr %a545
|
|
store { ptr, i64, i64 } %t543, ptr %a546
|
|
call void @finch_str_concat(ptr %a544, ptr %a545, ptr %a546)
|
|
%t547 = load { ptr, i64, i64 }, ptr %a544
|
|
%t548 = call { ptr, i64, i64 } @finch.gen.op(ptr %t524, { ptr, i64, i64 } %t547)
|
|
store { ptr, i64, i64 } %t548, ptr %a549
|
|
%t550 = load ptr, ptr %a1
|
|
%t551 = load ptr, ptr %a1
|
|
%t552 = load ptr, ptr %a1
|
|
%t553 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 12
|
|
%t554 = load i64, ptr %a500
|
|
%t555 = load { ptr, i64, i64 }, ptr %t553
|
|
%t556 = extractvalue { ptr, i64, i64 } %t555, 1
|
|
%t557 = icmp uge i64 %t554, %t556
|
|
br i1 %t557, label %range2528, label %inrange2529
|
|
range2528:
|
|
call void @finch_panic_index(ptr @.str.1649, i64 932, i64 %t554, i64 %t556)
|
|
unreachable
|
|
inrange2529:
|
|
%t558 = extractvalue { ptr, i64, i64 } %t555, 0
|
|
%t559 = getelementptr inbounds %S.ast.Type, ptr %t558, i64 %t554
|
|
%t560 = load %S.ast.Type, ptr %t559
|
|
%t561 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t552, %S.ast.Type %t560)
|
|
%t562 = load { ptr, i64, i64 }, ptr %a549
|
|
%t563 = call { ptr, i64, i64 } @finch.gen.load(ptr %t551, { ptr, i64, i64 } %t561, { ptr, i64, i64 } %t562)
|
|
%t564 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 12
|
|
%t565 = load i64, ptr %a500
|
|
%t566 = load { ptr, i64, i64 }, ptr %t564
|
|
%t567 = extractvalue { ptr, i64, i64 } %t566, 1
|
|
%t568 = icmp uge i64 %t565, %t567
|
|
br i1 %t568, label %range2530, label %inrange2531
|
|
range2530:
|
|
call void @finch_panic_index(ptr @.str.1650, i64 932, i64 %t565, i64 %t567)
|
|
unreachable
|
|
inrange2531:
|
|
%t569 = extractvalue { ptr, i64, i64 } %t566, 0
|
|
%t570 = getelementptr inbounds %S.ast.Type, ptr %t569, i64 %t565
|
|
%t571 = load %S.ast.Type, ptr %t570
|
|
call void @finch.gen.emitFormat(ptr %t550, { ptr, i64, i64 } { ptr @.str.1648, i64 4, i64 0 }, { ptr, i64, i64 } %t563, %S.ast.Type %t571, i1 true)
|
|
br label %for.step2519
|
|
for.step2519:
|
|
%t572 = load i64, ptr %a500
|
|
%t573 = add i64 %t572, 1
|
|
store i64 %t573, ptr %a500
|
|
br label %for.cond2517
|
|
for.end2520:
|
|
%t574 = load ptr, ptr %a1
|
|
call void @finch.gen.bufText(ptr %t574, { ptr, i64, i64 } { ptr @.str.1651, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1652, i64 1, i64 0 })
|
|
br label %endif2502
|
|
endif2502:
|
|
br label %endif2477
|
|
endif2477:
|
|
br label %endif2468
|
|
endif2468:
|
|
%t575 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t575, { ptr, i64, i64 } { ptr @.str.1653, i64 8, i64 0 })
|
|
%t576 = load ptr, ptr %a1
|
|
%t577 = load %S.gen.Saved, ptr %a34
|
|
%t578 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.1654, i64 21, i64 0 }, ptr %a580
|
|
store { ptr, i64, i64 } %t578, ptr %a581
|
|
call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581)
|
|
%t582 = load { ptr, i64, i64 }, ptr %a579
|
|
store { ptr, i64, i64 } %t582, ptr %a584
|
|
store { ptr, i64, i64 } { ptr @.str.1655, i64 18, i64 0 }, ptr %a585
|
|
call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585)
|
|
%t586 = load { ptr, i64, i64 }, ptr %a583
|
|
call void @finch.gen.endHelper(ptr %t576, %S.gen.Saved %t577, { ptr, i64, i64 } %t586)
|
|
%t587 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t587, ptr %a588
|
|
call void @finch_str_copy(ptr %a589, ptr %a588)
|
|
%t590 = load { ptr, i64, i64 }, ptr %a589
|
|
ret { ptr, i64, i64 } %t590
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.intCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a7 = alloca i64, align 16
|
|
%a10 = alloca i64, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
%t5 = load %S.ast.Type, ptr %a3
|
|
%t6 = call i64 @finch.gen.bitsOf(%S.ast.Type %t5)
|
|
store i64 %t6, ptr %a7
|
|
%t8 = load %S.ast.Type, ptr %a4
|
|
%t9 = call i64 @finch.gen.bitsOf(%S.ast.Type %t8)
|
|
store i64 %t9, ptr %a10
|
|
%t11 = load i64, ptr %a7
|
|
%t12 = load i64, ptr %a10
|
|
%t13 = icmp eq i64 %t11, %t12
|
|
br i1 %t13, label %then2532, label %endif2534
|
|
then2532:
|
|
%t14 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
call void @finch_str_copy(ptr %a16, ptr %a15)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a16
|
|
ret { ptr, i64, i64 } %t17
|
|
endif2534:
|
|
%t18 = load i64, ptr %a10
|
|
%t19 = load i64, ptr %a7
|
|
%t20 = icmp slt i64 %t18, %t19
|
|
br i1 %t20, label %then2535, label %endif2537
|
|
then2535:
|
|
%t21 = load ptr, ptr %a1
|
|
%t22 = load ptr, ptr %a1
|
|
%t23 = load %S.ast.Type, ptr %a3
|
|
%t24 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t23)
|
|
store { ptr, i64, i64 } { ptr @.str.1656, i64 6, i64 0 }, ptr %a26
|
|
store { ptr, i64, i64 } %t24, ptr %a27
|
|
call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t28, ptr %a30
|
|
store { ptr, i64, i64 } { ptr @.str.1657, i64 1, i64 0 }, ptr %a31
|
|
call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a29
|
|
%t33 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t32, ptr %a35
|
|
store { ptr, i64, i64 } %t33, ptr %a36
|
|
call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } %t37, ptr %a39
|
|
store { ptr, i64, i64 } { ptr @.str.1658, i64 4, i64 0 }, ptr %a40
|
|
call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a38
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = load %S.ast.Type, ptr %a4
|
|
%t44 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t42, %S.ast.Type %t43)
|
|
store { ptr, i64, i64 } %t41, ptr %a46
|
|
store { ptr, i64, i64 } %t44, ptr %a47
|
|
call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a45
|
|
%t49 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t48)
|
|
ret { ptr, i64, i64 } %t49
|
|
endif2537:
|
|
%t50 = load %S.ast.Type, ptr %a3
|
|
%t51 = call i1 @finch.gen.isSigned(%S.ast.Type %t50)
|
|
br i1 %t51, label %then2538, label %endif2540
|
|
then2538:
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = load %S.ast.Type, ptr %a3
|
|
%t55 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t53, %S.ast.Type %t54)
|
|
store { ptr, i64, i64 } { ptr @.str.1659, i64 5, i64 0 }, ptr %a57
|
|
store { ptr, i64, i64 } %t55, ptr %a58
|
|
call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a56
|
|
store { ptr, i64, i64 } %t59, ptr %a61
|
|
store { ptr, i64, i64 } { ptr @.str.1660, i64 1, i64 0 }, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
%t64 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t63, ptr %a66
|
|
store { ptr, i64, i64 } %t64, ptr %a67
|
|
call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t68, ptr %a70
|
|
store { ptr, i64, i64 } { ptr @.str.1661, i64 4, i64 0 }, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
%t73 = load ptr, ptr %a1
|
|
%t74 = load %S.ast.Type, ptr %a4
|
|
%t75 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t73, %S.ast.Type %t74)
|
|
store { ptr, i64, i64 } %t72, ptr %a77
|
|
store { ptr, i64, i64 } %t75, ptr %a78
|
|
call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78)
|
|
%t79 = load { ptr, i64, i64 }, ptr %a76
|
|
%t80 = call { ptr, i64, i64 } @finch.gen.op(ptr %t52, { ptr, i64, i64 } %t79)
|
|
ret { ptr, i64, i64 } %t80
|
|
endif2540:
|
|
%t81 = load ptr, ptr %a1
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = load %S.ast.Type, ptr %a3
|
|
%t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t82, %S.ast.Type %t83)
|
|
store { ptr, i64, i64 } { ptr @.str.1662, i64 5, i64 0 }, ptr %a86
|
|
store { ptr, i64, i64 } %t84, ptr %a87
|
|
call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87)
|
|
%t88 = load { ptr, i64, i64 }, ptr %a85
|
|
store { ptr, i64, i64 } %t88, ptr %a90
|
|
store { ptr, i64, i64 } { ptr @.str.1663, i64 1, i64 0 }, ptr %a91
|
|
call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91)
|
|
%t92 = load { ptr, i64, i64 }, ptr %a89
|
|
%t93 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t92, ptr %a95
|
|
store { ptr, i64, i64 } %t93, ptr %a96
|
|
call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a94
|
|
store { ptr, i64, i64 } %t97, ptr %a99
|
|
store { ptr, i64, i64 } { ptr @.str.1664, i64 4, i64 0 }, ptr %a100
|
|
call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a98
|
|
%t102 = load ptr, ptr %a1
|
|
%t103 = load %S.ast.Type, ptr %a4
|
|
%t104 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t102, %S.ast.Type %t103)
|
|
store { ptr, i64, i64 } %t101, ptr %a106
|
|
store { ptr, i64, i64 } %t104, ptr %a107
|
|
call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107)
|
|
%t108 = load { ptr, i64, i64 }, ptr %a105
|
|
%t109 = call { ptr, i64, i64 } @finch.gen.op(ptr %t81, { ptr, i64, i64 } %t108)
|
|
ret { ptr, i64, i64 } %t109
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
%t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
%t7 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0
|
|
%t8 = load { ptr, i64, i64 }, ptr %t7
|
|
store { ptr, i64, i64 } %t6, ptr %a9
|
|
store { ptr, i64, i64 } %t8, ptr %a10
|
|
%t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10)
|
|
%t12 = icmp ne i32 %t11, 0
|
|
br i1 %t12, label %then2541, label %endif2543
|
|
then2541:
|
|
%t13 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
call void @finch_str_copy(ptr %a15, ptr %a14)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a15
|
|
ret { ptr, i64, i64 } %t16
|
|
endif2543:
|
|
%t17 = load %S.ast.Type, ptr %a4
|
|
%t18 = call i64 @finch.gen.bitsOf(%S.ast.Type %t17)
|
|
%t19 = load %S.ast.Type, ptr %a3
|
|
%t20 = call i64 @finch.gen.bitsOf(%S.ast.Type %t19)
|
|
%t21 = icmp sgt i64 %t18, %t20
|
|
br i1 %t21, label %then2544, label %endif2546
|
|
then2544:
|
|
%t22 = load ptr, ptr %a1
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = load %S.ast.Type, ptr %a3
|
|
%t25 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t23, %S.ast.Type %t24)
|
|
store { ptr, i64, i64 } { ptr @.str.1665, i64 6, i64 0 }, ptr %a27
|
|
store { ptr, i64, i64 } %t25, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t29, ptr %a31
|
|
store { ptr, i64, i64 } { ptr @.str.1666, i64 1, i64 0 }, ptr %a32
|
|
call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32)
|
|
%t33 = load { ptr, i64, i64 }, ptr %a30
|
|
%t34 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t33, ptr %a36
|
|
store { ptr, i64, i64 } %t34, ptr %a37
|
|
call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } %t38, ptr %a40
|
|
store { ptr, i64, i64 } { ptr @.str.1667, i64 4, i64 0 }, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
%t43 = load ptr, ptr %a1
|
|
%t44 = load %S.ast.Type, ptr %a4
|
|
%t45 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t43, %S.ast.Type %t44)
|
|
store { ptr, i64, i64 } %t42, ptr %a47
|
|
store { ptr, i64, i64 } %t45, ptr %a48
|
|
call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a46
|
|
%t50 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t49)
|
|
ret { ptr, i64, i64 } %t50
|
|
endif2546:
|
|
%t51 = load ptr, ptr %a1
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = load %S.ast.Type, ptr %a3
|
|
%t54 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t52, %S.ast.Type %t53)
|
|
store { ptr, i64, i64 } { ptr @.str.1668, i64 8, i64 0 }, ptr %a56
|
|
store { ptr, i64, i64 } %t54, ptr %a57
|
|
call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57)
|
|
%t58 = load { ptr, i64, i64 }, ptr %a55
|
|
store { ptr, i64, i64 } %t58, ptr %a60
|
|
store { ptr, i64, i64 } { ptr @.str.1669, i64 1, i64 0 }, ptr %a61
|
|
call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61)
|
|
%t62 = load { ptr, i64, i64 }, ptr %a59
|
|
%t63 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t62, ptr %a65
|
|
store { ptr, i64, i64 } %t63, ptr %a66
|
|
call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a64
|
|
store { ptr, i64, i64 } %t67, ptr %a69
|
|
store { ptr, i64, i64 } { ptr @.str.1670, i64 4, i64 0 }, ptr %a70
|
|
call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70)
|
|
%t71 = load { ptr, i64, i64 }, ptr %a68
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = load %S.ast.Type, ptr %a4
|
|
%t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t72, %S.ast.Type %t73)
|
|
store { ptr, i64, i64 } %t71, ptr %a76
|
|
store { ptr, i64, i64 } %t74, ptr %a77
|
|
call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77)
|
|
%t78 = load { ptr, i64, i64 }, ptr %a75
|
|
%t79 = call { ptr, i64, i64 } @finch.gen.op(ptr %t51, { ptr, i64, i64 } %t78)
|
|
ret { ptr, i64, i64 } %t79
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
%t5 = load %S.ast.Type, ptr %a3
|
|
%t6 = call i1 @finch.gen.isSigned(%S.ast.Type %t5)
|
|
br i1 %t6, label %then2547, label %endif2549
|
|
then2547:
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = load %S.ast.Type, ptr %a3
|
|
%t10 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t8, %S.ast.Type %t9)
|
|
store { ptr, i64, i64 } { ptr @.str.1671, i64 7, i64 0 }, ptr %a12
|
|
store { ptr, i64, i64 } %t10, ptr %a13
|
|
call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t14, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.1672, i64 1, i64 0 }, ptr %a17
|
|
call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a15
|
|
%t19 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t18, ptr %a21
|
|
store { ptr, i64, i64 } %t19, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } %t23, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.1673, i64 4, i64 0 }, ptr %a26
|
|
call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a24
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = load %S.ast.Type, ptr %a4
|
|
%t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t28, %S.ast.Type %t29)
|
|
store { ptr, i64, i64 } %t27, ptr %a32
|
|
store { ptr, i64, i64 } %t30, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
%t35 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t34)
|
|
ret { ptr, i64, i64 } %t35
|
|
endif2549:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load ptr, ptr %a1
|
|
%t38 = load %S.ast.Type, ptr %a3
|
|
%t39 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t37, %S.ast.Type %t38)
|
|
store { ptr, i64, i64 } { ptr @.str.1674, i64 7, i64 0 }, ptr %a41
|
|
store { ptr, i64, i64 } %t39, ptr %a42
|
|
call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a40
|
|
store { ptr, i64, i64 } %t43, ptr %a45
|
|
store { ptr, i64, i64 } { ptr @.str.1675, i64 1, i64 0 }, ptr %a46
|
|
call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46)
|
|
%t47 = load { ptr, i64, i64 }, ptr %a44
|
|
%t48 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t47, ptr %a50
|
|
store { ptr, i64, i64 } %t48, ptr %a51
|
|
call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51)
|
|
%t52 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t52, ptr %a54
|
|
store { ptr, i64, i64 } { ptr @.str.1676, i64 4, i64 0 }, ptr %a55
|
|
call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a53
|
|
%t57 = load ptr, ptr %a1
|
|
%t58 = load %S.ast.Type, ptr %a4
|
|
%t59 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t57, %S.ast.Type %t58)
|
|
store { ptr, i64, i64 } %t56, ptr %a61
|
|
store { ptr, i64, i64 } %t59, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
%t64 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t63)
|
|
ret { ptr, i64, i64 } %t64
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Val, ptr %src
|
|
store %S.gen.Val %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Val, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Val, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Val, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Val, ptr %src, i32 0, i32 1
|
|
call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.coerce(ptr %p0, %S.gen.Val %p1, %S.ast.Type %p2, %S.ast.Node %p3, { ptr, i64, i64 } %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.gen.Val, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca %S.ast.Node, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca %S.gen.Val, align 16
|
|
%a12 = alloca %S.gen.Val, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca %S.ast.Type, align 16
|
|
%a31 = alloca %S.ast.Type, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca %S.ast.Type, align 16
|
|
%a67 = alloca %S.ast.Type, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca %S.ast.Type, align 16
|
|
%a93 = alloca %S.ast.Type, align 16
|
|
%a110 = alloca %S.ast.Type, align 16
|
|
%a111 = alloca %S.ast.Type, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca %S.ast.Type, align 16
|
|
%a158 = alloca %S.ast.Type, align 16
|
|
%a171 = alloca %S.ast.Type, align 16
|
|
%a172 = alloca %S.ast.Type, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca %S.ast.Type, align 16
|
|
%a199 = alloca %S.ast.Type, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca %S.ast.Type, align 16
|
|
%a229 = alloca %S.ast.Type, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a243 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
%a270 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a304 = alloca { ptr, i64, i64 }, align 16
|
|
%a305 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a319 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca %S.gen.Val, align 16
|
|
%a328 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.gen.Val %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store %S.ast.Node %p3, ptr %a4
|
|
store { ptr, i64, i64 } %p4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t7 = load %S.ast.Type, ptr %t6
|
|
%t8 = load %S.ast.Type, ptr %a3
|
|
%t9 = call i1 @finch.ast.same(%S.ast.Type %t7, %S.ast.Type %t8)
|
|
br i1 %t9, label %then2550, label %endif2552
|
|
then2550:
|
|
%t10 = load %S.gen.Val, ptr %a2
|
|
store %S.gen.Val %t10, ptr %a11
|
|
call void @finch.copy.S_gen_Val(ptr %a12, ptr %a11)
|
|
%t13 = load %S.gen.Val, ptr %a12
|
|
ret %S.gen.Val %t13
|
|
endif2552:
|
|
%t14 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t15 = getelementptr inbounds %S.ast.Type, ptr %t14, i32 0, i32 0
|
|
%t16 = load { ptr, i64, i64 }, ptr %t15
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.1677, i64 4, i64 0 }, ptr %a18
|
|
%t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18)
|
|
%t20 = icmp ne i32 %t19, 0
|
|
br label %logic.from2553
|
|
logic.from2553:
|
|
br i1 %t20, label %logic.rhs2554, label %logic.end2555
|
|
logic.rhs2554:
|
|
%t21 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.1678, i64 3, i64 0 }, ptr %a24
|
|
%t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24)
|
|
%t26 = icmp ne i32 %t25, 0
|
|
br label %logic.rend2556
|
|
logic.rend2556:
|
|
br label %logic.end2555
|
|
logic.end2555:
|
|
%t27 = phi i1 [ false, %logic.from2553 ], [ %t26, %logic.rend2556 ]
|
|
br i1 %t27, label %then2557, label %endif2559
|
|
then2557:
|
|
%t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.1679, i64 4, i64 0 }, 0
|
|
%t29 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t29, ptr %a30
|
|
call void @finch.copy.S_ast_Type(ptr %a31, ptr %a30)
|
|
%t32 = load %S.ast.Type, ptr %a31
|
|
%t33 = insertvalue %S.gen.Val %t28, %S.ast.Type %t32, 1
|
|
ret %S.gen.Val %t33
|
|
endif2559:
|
|
%t34 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t35 = getelementptr inbounds %S.ast.Type, ptr %t34, i32 0, i32 0
|
|
%t36 = load { ptr, i64, i64 }, ptr %t35
|
|
store { ptr, i64, i64 } %t36, ptr %a37
|
|
store { ptr, i64, i64 } { ptr @.str.1680, i64 3, i64 0 }, ptr %a38
|
|
%t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38)
|
|
%t40 = icmp ne i32 %t39, 0
|
|
br label %logic.from2560
|
|
logic.from2560:
|
|
br i1 %t40, label %logic.rhs2561, label %logic.end2562
|
|
logic.rhs2561:
|
|
%t41 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t42 = load { ptr, i64, i64 }, ptr %t41
|
|
store { ptr, i64, i64 } %t42, ptr %a43
|
|
store { ptr, i64, i64 } { ptr @.str.1681, i64 3, i64 0 }, ptr %a44
|
|
%t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44)
|
|
%t46 = icmp ne i32 %t45, 0
|
|
br label %logic.rend2563
|
|
logic.rend2563:
|
|
br label %logic.end2562
|
|
logic.end2562:
|
|
%t47 = phi i1 [ false, %logic.from2560 ], [ %t46, %logic.rend2563 ]
|
|
br label %logic.from2564
|
|
logic.from2564:
|
|
br i1 %t47, label %logic.rhs2565, label %logic.end2566
|
|
logic.rhs2565:
|
|
%t48 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t49 = getelementptr inbounds %S.ast.Type, ptr %t48, i32 0, i32 1
|
|
%t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1
|
|
%t51 = load i64, ptr %t50
|
|
%t52 = icmp eq i64 %t51, 0
|
|
br label %logic.from2567
|
|
logic.from2567:
|
|
br i1 %t52, label %logic.end2569, label %logic.rhs2568
|
|
logic.rhs2568:
|
|
%t53 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1
|
|
%t55 = load i64, ptr %t54
|
|
%t56 = icmp eq i64 %t55, 0
|
|
br label %logic.rend2570
|
|
logic.rend2570:
|
|
br label %logic.end2569
|
|
logic.end2569:
|
|
%t57 = phi i1 [ true, %logic.from2567 ], [ %t56, %logic.rend2570 ]
|
|
br label %logic.rend2571
|
|
logic.rend2571:
|
|
br label %logic.end2566
|
|
logic.end2566:
|
|
%t58 = phi i1 [ false, %logic.from2564 ], [ %t57, %logic.rend2571 ]
|
|
br i1 %t58, label %then2572, label %endif2574
|
|
then2572:
|
|
%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
|
|
endif2574:
|
|
%t70 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t71 = load %S.ast.Type, ptr %t70
|
|
%t72 = call i1 @finch.gen.isInt(%S.ast.Type %t71)
|
|
br label %logic.from2575
|
|
logic.from2575:
|
|
br i1 %t72, label %logic.rhs2576, label %logic.end2577
|
|
logic.rhs2576:
|
|
%t73 = load %S.ast.Type, ptr %a3
|
|
%t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73)
|
|
br label %logic.rend2578
|
|
logic.rend2578:
|
|
br label %logic.end2577
|
|
logic.end2577:
|
|
%t75 = phi i1 [ false, %logic.from2575 ], [ %t74, %logic.rend2578 ]
|
|
br i1 %t75, label %then2579, label %endif2581
|
|
then2579:
|
|
%t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3
|
|
%t77 = load i1, ptr %t76
|
|
br label %logic.from2582
|
|
logic.from2582:
|
|
br i1 %t77, label %logic.rhs2583, label %logic.end2584
|
|
logic.rhs2583:
|
|
%t78 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t79 = load { ptr, i64, i64 }, ptr %t78
|
|
%t80 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t81 = load %S.ast.Type, ptr %t80
|
|
%t82 = load %S.ast.Type, ptr %a3
|
|
%t83 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t79, %S.ast.Type %t81, %S.ast.Type %t82)
|
|
br label %logic.rend2585
|
|
logic.rend2585:
|
|
br label %logic.end2584
|
|
logic.end2584:
|
|
%t84 = phi i1 [ false, %logic.from2582 ], [ %t83, %logic.rend2585 ]
|
|
br i1 %t84, label %then2586, label %endif2588
|
|
then2586:
|
|
%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
|
|
endif2588:
|
|
%t97 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t98 = load %S.ast.Type, ptr %t97
|
|
%t99 = load %S.ast.Type, ptr %a3
|
|
%t100 = call i1 @finch.gen.widens(%S.ast.Type %t98, %S.ast.Type %t99)
|
|
br i1 %t100, label %then2589, label %endif2591
|
|
then2589:
|
|
%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
|
|
endif2591:
|
|
%t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3
|
|
%t115 = load i1, ptr %t114
|
|
br i1 %t115, label %then2592, label %endif2594
|
|
then2592:
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = load %S.ast.Node, ptr %a4
|
|
%t118 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t119 = load { ptr, i64, i64 }, ptr %t118
|
|
store { ptr, i64, i64 } { ptr @.str.1682, i64 11, i64 0 }, ptr %a121
|
|
store { ptr, i64, i64 } %t119, ptr %a122
|
|
call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122)
|
|
%t123 = load { ptr, i64, i64 }, ptr %a120
|
|
store { ptr, i64, i64 } %t123, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.1683, i64 16, i64 0 }, ptr %a126
|
|
call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126)
|
|
%t127 = load { ptr, i64, i64 }, ptr %a124
|
|
%t128 = load %S.ast.Type, ptr %a3
|
|
%t129 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t128)
|
|
store { ptr, i64, i64 } %t127, ptr %a131
|
|
store { ptr, i64, i64 } %t129, ptr %a132
|
|
call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132)
|
|
%t133 = load { ptr, i64, i64 }, ptr %a130
|
|
call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t133)
|
|
br label %endif2594
|
|
endif2594:
|
|
br label %endif2581
|
|
endif2581:
|
|
%t134 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t135 = load %S.ast.Type, ptr %t134
|
|
%t136 = call i1 @finch.gen.isInt(%S.ast.Type %t135)
|
|
br label %logic.from2595
|
|
logic.from2595:
|
|
br i1 %t136, label %logic.rhs2596, label %logic.end2597
|
|
logic.rhs2596:
|
|
%t137 = load %S.ast.Type, ptr %a3
|
|
%t138 = call i1 @finch.gen.isFloat(%S.ast.Type %t137)
|
|
br label %logic.rend2598
|
|
logic.rend2598:
|
|
br label %logic.end2597
|
|
logic.end2597:
|
|
%t139 = phi i1 [ false, %logic.from2595 ], [ %t138, %logic.rend2598 ]
|
|
br i1 %t139, label %then2599, label %endif2601
|
|
then2599:
|
|
%t140 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3
|
|
%t141 = load i1, ptr %t140
|
|
br label %logic.from2602
|
|
logic.from2602:
|
|
br i1 %t141, label %logic.rhs2603, label %logic.end2604
|
|
logic.rhs2603:
|
|
%t142 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t143 = load { ptr, i64, i64 }, ptr %t142
|
|
store { ptr, i64, i64 } %t143, ptr %a144
|
|
store { ptr, i64, i64 } { ptr @.str.1684, i64 5, i64 0 }, ptr %a145
|
|
%t146 = call i32 @finch_str_eq(ptr %a144, ptr %a145)
|
|
%t147 = icmp ne i32 %t146, 0
|
|
br label %logic.rend2605
|
|
logic.rend2605:
|
|
br label %logic.end2604
|
|
logic.end2604:
|
|
%t148 = phi i1 [ false, %logic.from2602 ], [ %t147, %logic.rend2605 ]
|
|
br i1 %t148, label %then2606, label %endif2608
|
|
then2606:
|
|
%t149 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t150 = load { ptr, i64, i64 }, ptr %t149
|
|
store { ptr, i64, i64 } %t150, ptr %a152
|
|
store { ptr, i64, i64 } { ptr @.str.1685, i64 2, i64 0 }, ptr %a153
|
|
call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153)
|
|
%t154 = load { ptr, i64, i64 }, ptr %a151
|
|
%t155 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t154, 0
|
|
%t156 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t156, ptr %a157
|
|
call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157)
|
|
%t159 = load %S.ast.Type, ptr %a158
|
|
%t160 = insertvalue %S.gen.Val %t155, %S.ast.Type %t159, 1
|
|
%t161 = insertvalue %S.gen.Val %t160, i1 true, 3
|
|
ret %S.gen.Val %t161
|
|
endif2608:
|
|
%t162 = load ptr, ptr %a1
|
|
%t163 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t164 = load { ptr, i64, i64 }, ptr %t163
|
|
%t165 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t166 = load %S.ast.Type, ptr %t165
|
|
%t167 = load %S.ast.Type, ptr %a3
|
|
%t168 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t162, { ptr, i64, i64 } %t164, %S.ast.Type %t166, %S.ast.Type %t167)
|
|
%t169 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t168, 0
|
|
%t170 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t170, ptr %a171
|
|
call void @finch.copy.S_ast_Type(ptr %a172, ptr %a171)
|
|
%t173 = load %S.ast.Type, ptr %a172
|
|
%t174 = insertvalue %S.gen.Val %t169, %S.ast.Type %t173, 1
|
|
ret %S.gen.Val %t174
|
|
endif2601:
|
|
%t175 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i32 0, i32 0
|
|
%t177 = load { ptr, i64, i64 }, ptr %t176
|
|
store { ptr, i64, i64 } %t177, ptr %a178
|
|
store { ptr, i64, i64 } { ptr @.str.1686, i64 3, i64 0 }, ptr %a179
|
|
%t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179)
|
|
%t181 = icmp ne i32 %t180, 0
|
|
br label %logic.from2609
|
|
logic.from2609:
|
|
br i1 %t181, label %logic.rhs2610, label %logic.end2611
|
|
logic.rhs2610:
|
|
%t182 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t183 = load { ptr, i64, i64 }, ptr %t182
|
|
store { ptr, i64, i64 } %t183, ptr %a184
|
|
store { ptr, i64, i64 } { ptr @.str.1687, i64 5, i64 0 }, ptr %a185
|
|
%t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185)
|
|
%t187 = icmp ne i32 %t186, 0
|
|
br label %logic.rend2612
|
|
logic.rend2612:
|
|
br label %logic.end2611
|
|
logic.end2611:
|
|
%t188 = phi i1 [ false, %logic.from2609 ], [ %t187, %logic.rend2612 ]
|
|
br i1 %t188, label %then2613, label %endif2615
|
|
then2613:
|
|
%t189 = load ptr, ptr %a1
|
|
%t190 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t191 = load { ptr, i64, i64 }, ptr %t190
|
|
%t192 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t193 = load %S.ast.Type, ptr %t192
|
|
%t194 = load %S.ast.Type, ptr %a3
|
|
%t195 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t189, { ptr, i64, i64 } %t191, %S.ast.Type %t193, %S.ast.Type %t194)
|
|
%t196 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t195, 0
|
|
%t197 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t197, ptr %a198
|
|
call void @finch.copy.S_ast_Type(ptr %a199, ptr %a198)
|
|
%t200 = load %S.ast.Type, ptr %a199
|
|
%t201 = insertvalue %S.gen.Val %t196, %S.ast.Type %t200, 1
|
|
ret %S.gen.Val %t201
|
|
endif2615:
|
|
%t202 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t203 = getelementptr inbounds %S.ast.Type, ptr %t202, i32 0, i32 0
|
|
%t204 = load { ptr, i64, i64 }, ptr %t203
|
|
store { ptr, i64, i64 } %t204, ptr %a205
|
|
store { ptr, i64, i64 } { ptr @.str.1688, i64 5, i64 0 }, ptr %a206
|
|
%t207 = call i32 @finch_str_eq(ptr %a205, ptr %a206)
|
|
%t208 = icmp ne i32 %t207, 0
|
|
br label %logic.from2616
|
|
logic.from2616:
|
|
br i1 %t208, label %logic.rhs2617, label %logic.end2618
|
|
logic.rhs2617:
|
|
%t209 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t210 = load { ptr, i64, i64 }, ptr %t209
|
|
store { ptr, i64, i64 } %t210, ptr %a211
|
|
store { ptr, i64, i64 } { ptr @.str.1689, i64 3, i64 0 }, ptr %a212
|
|
%t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212)
|
|
%t214 = icmp ne i32 %t213, 0
|
|
br label %logic.rend2619
|
|
logic.rend2619:
|
|
br label %logic.end2618
|
|
logic.end2618:
|
|
%t215 = phi i1 [ false, %logic.from2616 ], [ %t214, %logic.rend2619 ]
|
|
br label %logic.from2620
|
|
logic.from2620:
|
|
br i1 %t215, label %logic.rhs2621, label %logic.end2622
|
|
logic.rhs2621:
|
|
%t216 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3
|
|
%t217 = load i1, ptr %t216
|
|
br label %logic.rend2623
|
|
logic.rend2623:
|
|
br label %logic.end2622
|
|
logic.end2622:
|
|
%t218 = phi i1 [ false, %logic.from2620 ], [ %t217, %logic.rend2623 ]
|
|
br i1 %t218, label %then2624, label %endif2626
|
|
then2624:
|
|
%t219 = load ptr, ptr %a1
|
|
%t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0
|
|
%t221 = load { ptr, i64, i64 }, ptr %t220
|
|
%t222 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t223 = load %S.ast.Type, ptr %t222
|
|
%t224 = load %S.ast.Type, ptr %a3
|
|
%t225 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t219, { ptr, i64, i64 } %t221, %S.ast.Type %t223, %S.ast.Type %t224)
|
|
%t226 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t225, 0
|
|
%t227 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t227, ptr %a228
|
|
call void @finch.copy.S_ast_Type(ptr %a229, ptr %a228)
|
|
%t230 = load %S.ast.Type, ptr %a229
|
|
%t231 = insertvalue %S.gen.Val %t226, %S.ast.Type %t230, 1
|
|
ret %S.gen.Val %t231
|
|
endif2626:
|
|
%t232 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t232, ptr %a234
|
|
store { ptr, i64, i64 } { ptr @.str.1690, i64 9, i64 0 }, ptr %a235
|
|
call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235)
|
|
%t236 = load { ptr, i64, i64 }, ptr %a233
|
|
%t237 = load %S.ast.Type, ptr %a3
|
|
%t238 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t237)
|
|
store { ptr, i64, i64 } %t236, ptr %a240
|
|
store { ptr, i64, i64 } %t238, ptr %a241
|
|
call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241)
|
|
%t242 = load { ptr, i64, i64 }, ptr %a239
|
|
store { ptr, i64, i64 } %t242, ptr %a244
|
|
store { ptr, i64, i64 } { ptr @.str.1691, i64 14, i64 0 }, ptr %a245
|
|
call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245)
|
|
%t246 = load { ptr, i64, i64 }, ptr %a243
|
|
%t247 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t248 = load %S.ast.Type, ptr %t247
|
|
%t249 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t248)
|
|
store { ptr, i64, i64 } %t246, ptr %a251
|
|
store { ptr, i64, i64 } %t249, ptr %a252
|
|
call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252)
|
|
%t253 = load { ptr, i64, i64 }, ptr %a250
|
|
store { ptr, i64, i64 } %t253, ptr %a254
|
|
%t255 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t256 = load %S.ast.Type, ptr %t255
|
|
%t257 = call i1 @finch.gen.isNumber(%S.ast.Type %t256)
|
|
br label %logic.from2627
|
|
logic.from2627:
|
|
br i1 %t257, label %logic.rhs2628, label %logic.end2629
|
|
logic.rhs2628:
|
|
%t258 = load %S.ast.Type, ptr %a3
|
|
%t259 = call i1 @finch.gen.isNumber(%S.ast.Type %t258)
|
|
br label %logic.rend2630
|
|
logic.rend2630:
|
|
br label %logic.end2629
|
|
logic.end2629:
|
|
%t260 = phi i1 [ false, %logic.from2627 ], [ %t259, %logic.rend2630 ]
|
|
br i1 %t260, label %then2631, label %endif2633
|
|
then2631:
|
|
%t261 = load { ptr, i64, i64 }, ptr %a254
|
|
store { ptr, i64, i64 } %t261, ptr %a263
|
|
store { ptr, i64, i64 } { ptr @.str.1692, i64 6, i64 0 }, ptr %a264
|
|
call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264)
|
|
%t265 = load { ptr, i64, i64 }, ptr %a262
|
|
%t266 = load %S.ast.Type, ptr %a3
|
|
%t267 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t266)
|
|
store { ptr, i64, i64 } %t265, ptr %a269
|
|
store { ptr, i64, i64 } %t267, ptr %a270
|
|
call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270)
|
|
%t271 = load { ptr, i64, i64 }, ptr %a268
|
|
store { ptr, i64, i64 } %t271, ptr %a273
|
|
store { ptr, i64, i64 } { ptr @.str.1693, i64 16, i64 0 }, ptr %a274
|
|
call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274)
|
|
%t275 = load { ptr, i64, i64 }, ptr %a272
|
|
store { ptr, i64, i64 } %t275, ptr %a254
|
|
%t276 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t277 = load %S.ast.Type, ptr %t276
|
|
%t278 = call i1 @finch.gen.isFloat(%S.ast.Type %t277)
|
|
br label %logic.from2634
|
|
logic.from2634:
|
|
br i1 %t278, label %logic.rhs2635, label %logic.end2636
|
|
logic.rhs2635:
|
|
%t279 = load %S.ast.Type, ptr %a3
|
|
%t280 = call i1 @finch.gen.isInt(%S.ast.Type %t279)
|
|
br label %logic.rend2637
|
|
logic.rend2637:
|
|
br label %logic.end2636
|
|
logic.end2636:
|
|
%t281 = phi i1 [ false, %logic.from2634 ], [ %t280, %logic.rend2637 ]
|
|
br i1 %t281, label %then2638, label %endif2640
|
|
then2638:
|
|
%t282 = load { ptr, i64, i64 }, ptr %a254
|
|
store { ptr, i64, i64 } %t282, ptr %a284
|
|
store { ptr, i64, i64 } { ptr @.str.1694, i64 26, i64 0 }, ptr %a285
|
|
call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285)
|
|
%t286 = load { ptr, i64, i64 }, ptr %a283
|
|
store { ptr, i64, i64 } %t286, ptr %a254
|
|
br label %endif2640
|
|
endif2640:
|
|
%t287 = load { ptr, i64, i64 }, ptr %a254
|
|
store { ptr, i64, i64 } %t287, ptr %a289
|
|
store { ptr, i64, i64 } { ptr @.str.1695, i64 1, i64 0 }, ptr %a290
|
|
call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290)
|
|
%t291 = load { ptr, i64, i64 }, ptr %a288
|
|
store { ptr, i64, i64 } %t291, ptr %a254
|
|
br label %endif2633
|
|
endif2633:
|
|
%t292 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t293 = load { ptr, i64, i64 }, ptr %t292
|
|
store { ptr, i64, i64 } %t293, ptr %a294
|
|
store { ptr, i64, i64 } { ptr @.str.1696, i64 3, i64 0 }, ptr %a295
|
|
%t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295)
|
|
%t297 = icmp ne i32 %t296, 0
|
|
br label %logic.from2641
|
|
logic.from2641:
|
|
br i1 %t297, label %logic.rhs2642, label %logic.end2643
|
|
logic.rhs2642:
|
|
%t298 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t299 = load %S.ast.Type, ptr %t298
|
|
%t300 = call i1 @finch.gen.isNumber(%S.ast.Type %t299)
|
|
br label %logic.from2644
|
|
logic.from2644:
|
|
br i1 %t300, label %logic.end2646, label %logic.rhs2645
|
|
logic.rhs2645:
|
|
%t301 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i32 0, i32 0
|
|
%t303 = load { ptr, i64, i64 }, ptr %t302
|
|
store { ptr, i64, i64 } %t303, ptr %a304
|
|
store { ptr, i64, i64 } { ptr @.str.1697, i64 4, i64 0 }, ptr %a305
|
|
%t306 = call i32 @finch_str_eq(ptr %a304, ptr %a305)
|
|
%t307 = icmp ne i32 %t306, 0
|
|
br label %logic.rend2647
|
|
logic.rend2647:
|
|
br label %logic.end2646
|
|
logic.end2646:
|
|
%t308 = phi i1 [ true, %logic.from2644 ], [ %t307, %logic.rend2647 ]
|
|
br label %logic.from2648
|
|
logic.from2648:
|
|
br i1 %t308, label %logic.end2650, label %logic.rhs2649
|
|
logic.rhs2649:
|
|
%t309 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1
|
|
%t310 = getelementptr inbounds %S.ast.Type, ptr %t309, i32 0, i32 0
|
|
%t311 = load { ptr, i64, i64 }, ptr %t310
|
|
store { ptr, i64, i64 } %t311, ptr %a312
|
|
store { ptr, i64, i64 } { ptr @.str.1698, i64 4, i64 0 }, ptr %a313
|
|
%t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313)
|
|
%t315 = icmp ne i32 %t314, 0
|
|
br label %logic.rend2651
|
|
logic.rend2651:
|
|
br label %logic.end2650
|
|
logic.end2650:
|
|
%t316 = phi i1 [ true, %logic.from2648 ], [ %t315, %logic.rend2651 ]
|
|
br label %logic.rend2652
|
|
logic.rend2652:
|
|
br label %logic.end2643
|
|
logic.end2643:
|
|
%t317 = phi i1 [ false, %logic.from2641 ], [ %t316, %logic.rend2652 ]
|
|
br i1 %t317, label %then2653, label %endif2655
|
|
then2653:
|
|
%t318 = load { ptr, i64, i64 }, ptr %a254
|
|
store { ptr, i64, i64 } %t318, ptr %a320
|
|
store { ptr, i64, i64 } { ptr @.str.1699, i64 34, i64 0 }, ptr %a321
|
|
call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321)
|
|
%t322 = load { ptr, i64, i64 }, ptr %a319
|
|
store { ptr, i64, i64 } %t322, ptr %a254
|
|
br label %endif2655
|
|
endif2655:
|
|
%t323 = load ptr, ptr %a1
|
|
%t324 = load %S.ast.Node, ptr %a4
|
|
%t325 = load { ptr, i64, i64 }, ptr %a254
|
|
call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t325)
|
|
%t326 = load %S.gen.Val, ptr %a2
|
|
store %S.gen.Val %t326, ptr %a327
|
|
call void @finch.copy.S_gen_Val(ptr %a328, ptr %a327)
|
|
%t329 = load %S.gen.Val, ptr %a328
|
|
ret %S.gen.Val %t329
|
|
}
|
|
|
|
define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca i64, align 16
|
|
%a19 = alloca i64, align 16
|
|
%a32 = alloca i64, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic2656, label %ok2657
|
|
panic2656:
|
|
call void @finch_panic(ptr @.str.1700, i64 1029, ptr @.str.1701)
|
|
unreachable
|
|
ok2657:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1
|
|
%t7 = load i64, ptr %t6
|
|
store i64 0, ptr %a8
|
|
br label %for.cond2658
|
|
for.cond2658:
|
|
%t9 = load i64, ptr %a8
|
|
%t10 = icmp slt i64 %t9, %t7
|
|
br i1 %t10, label %for.body2659, label %for.end2661
|
|
for.body2659:
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = icmp eq ptr %t11, null
|
|
br i1 %t12, label %panic2662, label %ok2663
|
|
panic2662:
|
|
call void @finch_panic(ptr @.str.1702, i64 1030, ptr @.str.1703)
|
|
unreachable
|
|
ok2663:
|
|
%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 %panic2664, label %ok2665
|
|
panic2664:
|
|
call void @finch_panic(ptr @.str.1704, i64 1031, ptr @.str.1705)
|
|
unreachable
|
|
ok2665:
|
|
%t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10
|
|
%t23 = load i64, ptr %a19
|
|
%t24 = load { ptr, i64, i64 }, ptr %t22
|
|
%t25 = extractvalue { ptr, i64, i64 } %t24, 1
|
|
%t26 = icmp uge i64 %t23, %t25
|
|
br i1 %t26, label %range2666, label %inrange2667
|
|
range2666:
|
|
call void @finch_panic_index(ptr @.str.1706, i64 1031, i64 %t23, i64 %t25)
|
|
unreachable
|
|
inrange2667:
|
|
%t27 = extractvalue { ptr, i64, i64 } %t24, 0
|
|
%t28 = getelementptr inbounds %S.gen.Scope, ptr %t27, i64 %t23
|
|
%t29 = getelementptr inbounds %S.gen.Scope, ptr %t28, i32 0, i32 0
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1
|
|
%t31 = load i64, ptr %t30
|
|
store i64 0, ptr %a32
|
|
br label %for.cond2668
|
|
for.cond2668:
|
|
%t33 = load i64, ptr %a32
|
|
%t34 = icmp slt i64 %t33, %t31
|
|
br i1 %t34, label %for.body2669, label %for.end2671
|
|
for.body2669:
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = icmp eq ptr %t35, null
|
|
br i1 %t36, label %panic2672, label %ok2673
|
|
panic2672:
|
|
call void @finch_panic(ptr @.str.1707, i64 1032, ptr @.str.1708)
|
|
unreachable
|
|
ok2673:
|
|
%t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 10
|
|
%t38 = load i64, ptr %a19
|
|
%t39 = load { ptr, i64, i64 }, ptr %t37
|
|
%t40 = extractvalue { ptr, i64, i64 } %t39, 1
|
|
%t41 = icmp uge i64 %t38, %t40
|
|
br i1 %t41, label %range2674, label %inrange2675
|
|
range2674:
|
|
call void @finch_panic_index(ptr @.str.1709, i64 1032, i64 %t38, i64 %t40)
|
|
unreachable
|
|
inrange2675:
|
|
%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 %range2676, label %inrange2677
|
|
range2676:
|
|
call void @finch_panic_index(ptr @.str.1710, i64 1032, i64 %t45, i64 %t47)
|
|
unreachable
|
|
inrange2677:
|
|
%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 %then2678, label %endif2680
|
|
then2678:
|
|
%t58 = load ptr, ptr %a1
|
|
%t59 = icmp eq ptr %t58, null
|
|
br i1 %t59, label %panic2681, label %ok2682
|
|
panic2681:
|
|
call void @finch_panic(ptr @.str.1711, i64 1033, ptr @.str.1712)
|
|
unreachable
|
|
ok2682:
|
|
%t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 40
|
|
%t61 = load i1, ptr %t60
|
|
br label %logic.from2683
|
|
logic.from2683:
|
|
br i1 %t61, label %logic.rhs2684, label %logic.end2685
|
|
logic.rhs2684:
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = icmp eq ptr %t62, null
|
|
br i1 %t63, label %panic2686, label %ok2687
|
|
panic2686:
|
|
call void @finch_panic(ptr @.str.1713, i64 1033, ptr @.str.1714)
|
|
unreachable
|
|
ok2687:
|
|
%t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 10
|
|
%t65 = load i64, ptr %a19
|
|
%t66 = load { ptr, i64, i64 }, ptr %t64
|
|
%t67 = extractvalue { ptr, i64, i64 } %t66, 1
|
|
%t68 = icmp uge i64 %t65, %t67
|
|
br i1 %t68, label %range2688, label %inrange2689
|
|
range2688:
|
|
call void @finch_panic_index(ptr @.str.1715, i64 1033, i64 %t65, i64 %t67)
|
|
unreachable
|
|
inrange2689:
|
|
%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 %range2690, label %inrange2691
|
|
range2690:
|
|
call void @finch_panic_index(ptr @.str.1716, i64 1033, i64 %t72, i64 %t74)
|
|
unreachable
|
|
inrange2691:
|
|
%t76 = extractvalue { ptr, i64, i64 } %t73, 0
|
|
%t77 = getelementptr inbounds %S.gen.Var, ptr %t76, i64 %t72
|
|
%t78 = getelementptr inbounds %S.gen.Var, ptr %t77, i32 0, i32 4
|
|
%t79 = load i64, ptr %t78
|
|
%t80 = load ptr, ptr %a1
|
|
%t81 = icmp eq ptr %t80, null
|
|
br i1 %t81, label %panic2692, label %ok2693
|
|
panic2692:
|
|
call void @finch_panic(ptr @.str.1717, i64 1033, ptr @.str.1718)
|
|
unreachable
|
|
ok2693:
|
|
%t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 41
|
|
%t83 = load i64, ptr %t82
|
|
%t84 = icmp sge i64 %t79, %t83
|
|
br label %logic.rend2694
|
|
logic.rend2694:
|
|
br label %logic.end2685
|
|
logic.end2685:
|
|
%t85 = phi i1 [ false, %logic.from2683 ], [ %t84, %logic.rend2694 ]
|
|
br i1 %t85, label %then2695, label %endif2697
|
|
then2695:
|
|
br label %for.step2670
|
|
endif2697:
|
|
%t86 = load i64, ptr %a19
|
|
%t87 = mul i64 %t86, 100000
|
|
%t88 = load i64, ptr %a32
|
|
%t89 = add i64 %t87, %t88
|
|
ret i64 %t89
|
|
endif2680:
|
|
br label %for.step2670
|
|
for.step2670:
|
|
%t90 = load i64, ptr %a32
|
|
%t91 = add i64 %t90, 1
|
|
store i64 %t91, ptr %a32
|
|
br label %for.cond2668
|
|
for.end2671:
|
|
br label %for.step2660
|
|
for.step2660:
|
|
%t92 = load i64, ptr %a8
|
|
%t93 = add i64 %t92, 1
|
|
store i64 %t93, ptr %a8
|
|
br label %for.cond2658
|
|
for.end2661:
|
|
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)
|
|
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 %panic2698, label %ok2699
|
|
panic2698:
|
|
call void @finch_panic(ptr @.str.1719, i64 1044, ptr @.str.1720)
|
|
unreachable
|
|
ok2699:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10
|
|
%t6 = load i64, ptr %a2
|
|
%t7 = sdiv i64 %t6, 100000
|
|
%t8 = load { ptr, i64, i64 }, ptr %t5
|
|
%t9 = extractvalue { ptr, i64, i64 } %t8, 1
|
|
%t10 = icmp uge i64 %t7, %t9
|
|
br i1 %t10, label %range2700, label %inrange2701
|
|
range2700:
|
|
call void @finch_panic_index(ptr @.str.1721, i64 1044, i64 %t7, i64 %t9)
|
|
unreachable
|
|
inrange2701:
|
|
%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 %range2702, label %inrange2703
|
|
range2702:
|
|
call void @finch_panic_index(ptr @.str.1722, i64 1044, i64 %t15, i64 %t17)
|
|
unreachable
|
|
inrange2703:
|
|
%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 %panic2704, label %ok2705
|
|
panic2704:
|
|
call void @finch_panic(ptr @.str.1723, i64 1048, ptr @.str.1724)
|
|
unreachable
|
|
ok2705:
|
|
%t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1
|
|
%t8 = load i64, ptr %t7
|
|
store i64 0, ptr %a9
|
|
br label %for.cond2706
|
|
for.cond2706:
|
|
%t10 = load i64, ptr %a9
|
|
%t11 = icmp slt i64 %t10, %t8
|
|
br i1 %t11, label %for.body2707, label %for.end2709
|
|
for.body2707:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = icmp eq ptr %t12, null
|
|
br i1 %t13, label %panic2710, label %ok2711
|
|
panic2710:
|
|
call void @finch_panic(ptr @.str.1725, i64 1049, ptr @.str.1726)
|
|
unreachable
|
|
ok2711:
|
|
%t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 14
|
|
%t15 = load i64, ptr %a9
|
|
%t16 = load { ptr, i64, i64 }, ptr %t14
|
|
%t17 = extractvalue { ptr, i64, i64 } %t16, 1
|
|
%t18 = icmp uge i64 %t15, %t17
|
|
br i1 %t18, label %range2712, label %inrange2713
|
|
range2712:
|
|
call void @finch_panic_index(ptr @.str.1727, i64 1049, i64 %t15, i64 %t17)
|
|
unreachable
|
|
inrange2713:
|
|
%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.from2714
|
|
logic.from2714:
|
|
br i1 %t27, label %logic.rhs2715, label %logic.end2716
|
|
logic.rhs2715:
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = icmp eq ptr %t28, null
|
|
br i1 %t29, label %panic2717, label %ok2718
|
|
panic2717:
|
|
call void @finch_panic(ptr @.str.1728, i64 1049, ptr @.str.1729)
|
|
unreachable
|
|
ok2718:
|
|
%t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 14
|
|
%t31 = load i64, ptr %a9
|
|
%t32 = load { ptr, i64, i64 }, ptr %t30
|
|
%t33 = extractvalue { ptr, i64, i64 } %t32, 1
|
|
%t34 = icmp uge i64 %t31, %t33
|
|
br i1 %t34, label %range2719, label %inrange2720
|
|
range2719:
|
|
call void @finch_panic_index(ptr @.str.1730, i64 1049, i64 %t31, i64 %t33)
|
|
unreachable
|
|
inrange2720:
|
|
%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.rend2721
|
|
logic.rend2721:
|
|
br label %logic.end2716
|
|
logic.end2716:
|
|
%t44 = phi i1 [ false, %logic.from2714 ], [ %t43, %logic.rend2721 ]
|
|
br label %logic.from2722
|
|
logic.from2722:
|
|
br i1 %t44, label %logic.rhs2723, label %logic.end2724
|
|
logic.rhs2723:
|
|
%t45 = load ptr, ptr %a1
|
|
%t46 = icmp eq ptr %t45, null
|
|
br i1 %t46, label %panic2725, label %ok2726
|
|
panic2725:
|
|
call void @finch_panic(ptr @.str.1731, i64 1049, ptr @.str.1732)
|
|
unreachable
|
|
ok2726:
|
|
%t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 14
|
|
%t48 = load i64, ptr %a9
|
|
%t49 = load { ptr, i64, i64 }, ptr %t47
|
|
%t50 = extractvalue { ptr, i64, i64 } %t49, 1
|
|
%t51 = icmp uge i64 %t48, %t50
|
|
br i1 %t51, label %range2727, label %inrange2728
|
|
range2727:
|
|
call void @finch_panic_index(ptr @.str.1733, i64 1049, i64 %t48, i64 %t50)
|
|
unreachable
|
|
inrange2728:
|
|
%t52 = extractvalue { ptr, i64, i64 } %t49, 0
|
|
%t53 = getelementptr inbounds %S.gen.FnSig, ptr %t52, i64 %t48
|
|
%t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 2
|
|
%t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1
|
|
%t56 = load i64, ptr %t55
|
|
%t57 = icmp eq i64 %t56, 0
|
|
br label %logic.rend2729
|
|
logic.rend2729:
|
|
br label %logic.end2724
|
|
logic.end2724:
|
|
%t58 = phi i1 [ false, %logic.from2722 ], [ %t57, %logic.rend2729 ]
|
|
br i1 %t58, label %then2730, label %endif2732
|
|
then2730:
|
|
%t59 = load i64, ptr %a9
|
|
ret i64 %t59
|
|
endif2732:
|
|
br label %for.step2708
|
|
for.step2708:
|
|
%t60 = load i64, ptr %a9
|
|
%t61 = add i64 %t60, 1
|
|
store i64 %t61, ptr %a9
|
|
br label %for.cond2706
|
|
for.end2709:
|
|
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 %panic2733, label %ok2734
|
|
panic2733:
|
|
call void @finch_panic(ptr @.str.1734, i64 1057, ptr @.str.1735)
|
|
unreachable
|
|
ok2734:
|
|
%t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 14
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1
|
|
%t9 = load i64, ptr %t8
|
|
store i64 0, ptr %a10
|
|
br label %for.cond2735
|
|
for.cond2735:
|
|
%t11 = load i64, ptr %a10
|
|
%t12 = icmp slt i64 %t11, %t9
|
|
br i1 %t12, label %for.body2736, label %for.end2738
|
|
for.body2736:
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = icmp eq ptr %t13, null
|
|
br i1 %t14, label %panic2739, label %ok2740
|
|
panic2739:
|
|
call void @finch_panic(ptr @.str.1736, i64 1058, ptr @.str.1737)
|
|
unreachable
|
|
ok2740:
|
|
%t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 14
|
|
%t16 = load i64, ptr %a10
|
|
%t17 = load { ptr, i64, i64 }, ptr %t15
|
|
%t18 = extractvalue { ptr, i64, i64 } %t17, 1
|
|
%t19 = icmp uge i64 %t16, %t18
|
|
br i1 %t19, label %range2741, label %inrange2742
|
|
range2741:
|
|
call void @finch_panic_index(ptr @.str.1738, i64 1058, i64 %t16, i64 %t18)
|
|
unreachable
|
|
inrange2742:
|
|
%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.from2743
|
|
logic.from2743:
|
|
br i1 %t28, label %logic.rhs2744, label %logic.end2745
|
|
logic.rhs2744:
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = icmp eq ptr %t29, null
|
|
br i1 %t30, label %panic2746, label %ok2747
|
|
panic2746:
|
|
call void @finch_panic(ptr @.str.1739, i64 1058, ptr @.str.1740)
|
|
unreachable
|
|
ok2747:
|
|
%t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 14
|
|
%t32 = load i64, ptr %a10
|
|
%t33 = load { ptr, i64, i64 }, ptr %t31
|
|
%t34 = extractvalue { ptr, i64, i64 } %t33, 1
|
|
%t35 = icmp uge i64 %t32, %t34
|
|
br i1 %t35, label %range2748, label %inrange2749
|
|
range2748:
|
|
call void @finch_panic_index(ptr @.str.1741, i64 1058, i64 %t32, i64 %t34)
|
|
unreachable
|
|
inrange2749:
|
|
%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.rend2750
|
|
logic.rend2750:
|
|
br label %logic.end2745
|
|
logic.end2745:
|
|
%t45 = phi i1 [ false, %logic.from2743 ], [ %t44, %logic.rend2750 ]
|
|
br label %logic.from2751
|
|
logic.from2751:
|
|
br i1 %t45, label %logic.rhs2752, label %logic.end2753
|
|
logic.rhs2752:
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = icmp eq ptr %t46, null
|
|
br i1 %t47, label %panic2754, label %ok2755
|
|
panic2754:
|
|
call void @finch_panic(ptr @.str.1742, i64 1058, ptr @.str.1743)
|
|
unreachable
|
|
ok2755:
|
|
%t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 14
|
|
%t49 = load i64, ptr %a10
|
|
%t50 = load { ptr, i64, i64 }, ptr %t48
|
|
%t51 = extractvalue { ptr, i64, i64 } %t50, 1
|
|
%t52 = icmp uge i64 %t49, %t51
|
|
br i1 %t52, label %range2756, label %inrange2757
|
|
range2756:
|
|
call void @finch_panic_index(ptr @.str.1744, i64 1058, i64 %t49, i64 %t51)
|
|
unreachable
|
|
inrange2757:
|
|
%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.rend2758
|
|
logic.rend2758:
|
|
br label %logic.end2753
|
|
logic.end2753:
|
|
%t62 = phi i1 [ false, %logic.from2751 ], [ %t61, %logic.rend2758 ]
|
|
br i1 %t62, label %then2759, label %endif2761
|
|
then2759:
|
|
%t63 = load i64, ptr %a10
|
|
ret i64 %t63
|
|
endif2761:
|
|
br label %for.step2737
|
|
for.step2737:
|
|
%t64 = load i64, ptr %a10
|
|
%t65 = add i64 %t64, 1
|
|
store i64 %t65, ptr %a10
|
|
br label %for.cond2735
|
|
for.end2738:
|
|
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.1745, i64 5, i64 0 }, ptr %t4
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.1746, i64 4, i64 0 }, ptr %t5
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.1747, i64 3, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.1748, i64 3, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.1749, i64 4, i64 0 }, ptr %t8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.1750, i64 5, i64 0 }, ptr %t9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.1751, i64 4, i64 0 }, ptr %t10
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.1752, i64 9, i64 0 }, ptr %t11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.1753, i64 10, i64 0 }, ptr %t12
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.1754, i64 11, i64 0 }, ptr %t13
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10
|
|
store { ptr, i64, i64 } { ptr @.str.1755, i64 5, i64 0 }, ptr %t14
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11
|
|
store { ptr, i64, i64 } { ptr @.str.1756, i64 4, i64 0 }, ptr %t15
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12
|
|
store { ptr, i64, i64 } { ptr @.str.1757, i64 5, i64 0 }, ptr %t16
|
|
%t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13
|
|
store { ptr, i64, i64 } { ptr @.str.1758, i64 3, i64 0 }, ptr %t17
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14
|
|
store { ptr, i64, i64 } { ptr @.str.1759, i64 4, i64 0 }, ptr %t18
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15
|
|
store { ptr, i64, i64 } { ptr @.str.1760, i64 3, i64 0 }, ptr %t19
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16
|
|
store { ptr, i64, i64 } { ptr @.str.1761, i64 11, i64 0 }, ptr %t20
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17
|
|
store { ptr, i64, i64 } { ptr @.str.1762, i64 2, i64 0 }, ptr %t21
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18
|
|
store { ptr, i64, i64 } { ptr @.str.1763, i64 3, i64 0 }, ptr %t22
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19
|
|
store { ptr, i64, i64 } { ptr @.str.1764, i64 3, i64 0 }, ptr %t23
|
|
%t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20
|
|
store { ptr, i64, i64 } { ptr @.str.1765, i64 3, i64 0 }, ptr %t24
|
|
%t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21
|
|
store { ptr, i64, i64 } { ptr @.str.1766, i64 2, i64 0 }, ptr %t25
|
|
%t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22
|
|
store { ptr, i64, i64 } { ptr @.str.1767, i64 3, i64 0 }, ptr %t26
|
|
%t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23
|
|
store { ptr, i64, i64 } { ptr @.str.1768, i64 3, i64 0 }, ptr %t27
|
|
%t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24
|
|
store { ptr, i64, i64 } { ptr @.str.1769, i64 3, i64 0 }, ptr %t28
|
|
%t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25
|
|
store { ptr, i64, i64 } { ptr @.str.1770, i64 3, i64 0 }, ptr %t29
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26
|
|
store { ptr, i64, i64 } { ptr @.str.1771, i64 3, i64 0 }, ptr %t30
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27
|
|
store { ptr, i64, i64 } { ptr @.str.1772, i64 5, i64 0 }, ptr %t31
|
|
%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.cond2762
|
|
find.cond2762:
|
|
%t42 = load i64, ptr %a41
|
|
%t43 = icmp slt i64 %t42, %t39
|
|
br i1 %t43, label %find.body2763, label %find.end2766
|
|
find.body2763:
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t42
|
|
%t45 = load { ptr, i64, i64 }, ptr %t44
|
|
store { ptr, i64, i64 } %t45, ptr %a46
|
|
store { ptr, i64, i64 } %t37, ptr %a47
|
|
%t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47)
|
|
%t49 = icmp ne i32 %t48, 0
|
|
br i1 %t49, label %find.hit2764, label %find.next2765
|
|
find.hit2764:
|
|
store i64 %t42, ptr %a38
|
|
br label %find.end2766
|
|
find.next2765:
|
|
%t50 = add i64 %t42, 1
|
|
store i64 %t50, ptr %a41
|
|
br label %find.cond2762
|
|
find.end2766:
|
|
%t51 = load i64, ptr %a38
|
|
%t52 = icmp sge i64 %t51, 0
|
|
ret i1 %t52
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca i1, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca %S.ast.Type, align 16
|
|
%a95 = alloca %S.ast.Type, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%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 { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
store { ptr, i64, i64 } %p4, ptr %a5
|
|
store i1 %p5, ptr %a6
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = load { ptr, i64, i64 }, ptr %a3
|
|
%t9 = call i64 @finch.gen.lookup(ptr %t7, { ptr, i64, i64 } %t8)
|
|
%t10 = icmp sge i64 %t9, 0
|
|
br label %logic.from2767
|
|
logic.from2767:
|
|
br i1 %t10, label %logic.rhs2768, label %logic.end2769
|
|
logic.rhs2768:
|
|
%t11 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t11, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.1773, i64 3, i64 0 }, ptr %a13
|
|
%t14 = call i32 @finch_str_eq(ptr %a12, ptr %a13)
|
|
%t15 = icmp eq i32 %t14, 0
|
|
br label %logic.rend2770
|
|
logic.rend2770:
|
|
br label %logic.end2769
|
|
logic.end2769:
|
|
%t16 = phi i1 [ false, %logic.from2767 ], [ %t15, %logic.rend2770 ]
|
|
br i1 %t16, label %then2771, label %endif2773
|
|
then2771:
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = load %S.ast.Node, ptr %a2
|
|
%t19 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.1774, i64 18, i64 0 }, ptr %a21
|
|
store { ptr, i64, i64 } %t19, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } %t23, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.1775, i64 21, i64 0 }, ptr %a26
|
|
call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a24
|
|
call void @finch.gen.fail(ptr %t17, %S.ast.Node %t18, { ptr, i64, i64 } %t27)
|
|
br label %endif2773
|
|
endif2773:
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = icmp eq ptr %t29, null
|
|
br i1 %t30, label %panic2774, label %ok2775
|
|
panic2774:
|
|
call void @finch_panic(ptr @.str.1776, i64 1076, ptr @.str.1777)
|
|
unreachable
|
|
ok2775:
|
|
%t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 13
|
|
%t32 = load { ptr, i64, i64 }, ptr %t31
|
|
%t33 = load { ptr, i64, i64 }, ptr %a3
|
|
%t34 = call i64 @finch.gen.findFn(ptr %t28, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33)
|
|
%t35 = icmp sge i64 %t34, 0
|
|
br i1 %t35, label %then2776, label %endif2778
|
|
then2776:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load %S.ast.Node, ptr %a2
|
|
%t38 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.1778, i64 1, i64 0 }, ptr %a40
|
|
store { ptr, i64, i64 } %t38, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
store { ptr, i64, i64 } %t42, ptr %a44
|
|
store { ptr, i64, i64 } { ptr @.str.1779, i64 35, i64 0 }, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } %t46)
|
|
br label %endif2778
|
|
endif2778:
|
|
%t47 = load { ptr, i64, i64 }, ptr %a3
|
|
%t48 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t47)
|
|
br i1 %t48, label %then2779, label %endif2781
|
|
then2779:
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = load %S.ast.Node, ptr %a2
|
|
%t51 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.1780, i64 1, i64 0 }, ptr %a53
|
|
store { ptr, i64, i64 } %t51, ptr %a54
|
|
call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a52
|
|
store { ptr, i64, i64 } %t55, ptr %a57
|
|
store { ptr, i64, i64 } { ptr @.str.1781, i64 38, i64 0 }, ptr %a58
|
|
call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a56
|
|
call void @finch.gen.fail(ptr %t49, %S.ast.Node %t50, { ptr, i64, i64 } %t59)
|
|
br label %endif2781
|
|
endif2781:
|
|
%t60 = load ptr, ptr %a1
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = load %S.ast.Type, ptr %a4
|
|
%t63 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t61, %S.ast.Type %t62)
|
|
%t64 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t60, { ptr, i64, i64 } %t63)
|
|
store { ptr, i64, i64 } %t64, ptr %a65
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = load ptr, ptr %a1
|
|
%t68 = load %S.ast.Type, ptr %a4
|
|
%t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a5
|
|
%t71 = load { ptr, i64, i64 }, ptr %a65
|
|
call void @finch.gen.store(ptr %t66, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t70, { ptr, i64, i64 } %t71)
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = icmp eq ptr %t72, null
|
|
br i1 %t73, label %panic2782, label %ok2783
|
|
panic2782:
|
|
call void @finch_panic(ptr @.str.1782, i64 1084, ptr @.str.1783)
|
|
unreachable
|
|
ok2783:
|
|
%t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 10
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = icmp eq ptr %t75, null
|
|
br i1 %t76, label %panic2784, label %ok2785
|
|
panic2784:
|
|
call void @finch_panic(ptr @.str.1784, i64 1084, ptr @.str.1785)
|
|
unreachable
|
|
ok2785:
|
|
%t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 10
|
|
%t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1
|
|
%t79 = load i64, ptr %t78
|
|
%t80 = sub i64 %t79, 1
|
|
%t81 = load { ptr, i64, i64 }, ptr %t74
|
|
%t82 = extractvalue { ptr, i64, i64 } %t81, 1
|
|
%t83 = icmp uge i64 %t80, %t82
|
|
br i1 %t83, label %range2786, label %inrange2787
|
|
range2786:
|
|
call void @finch_panic_index(ptr @.str.1786, i64 1084, i64 %t80, i64 %t82)
|
|
unreachable
|
|
inrange2787:
|
|
%t84 = extractvalue { ptr, i64, i64 } %t81, 0
|
|
%t85 = getelementptr inbounds %S.gen.Scope, ptr %t84, i64 %t80
|
|
%t86 = getelementptr inbounds %S.gen.Scope, ptr %t85, i32 0, i32 0
|
|
%t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1
|
|
%t88 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t88, ptr %a89
|
|
call void @finch_str_copy(ptr %a90, ptr %a89)
|
|
%t91 = load { ptr, i64, i64 }, ptr %a90
|
|
%t92 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } %t91, 0
|
|
%t93 = load %S.ast.Type, ptr %a4
|
|
store %S.ast.Type %t93, ptr %a94
|
|
call void @finch.copy.S_ast_Type(ptr %a95, ptr %a94)
|
|
%t96 = load %S.ast.Type, ptr %a95
|
|
%t97 = insertvalue %S.gen.Var %t92, %S.ast.Type %t96, 1
|
|
%t98 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t98, ptr %a99
|
|
call void @finch_str_copy(ptr %a100, ptr %a99)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a100
|
|
%t102 = insertvalue %S.gen.Var %t97, { ptr, i64, i64 } %t101, 2
|
|
%t103 = load i1, ptr %a6
|
|
%t104 = insertvalue %S.gen.Var %t102, i1 %t103, 3
|
|
%t105 = load ptr, ptr %a1
|
|
%t106 = icmp eq ptr %t105, null
|
|
br i1 %t106, label %panic2788, label %ok2789
|
|
panic2788:
|
|
call void @finch_panic(ptr @.str.1787, i64 1084, ptr @.str.1788)
|
|
unreachable
|
|
ok2789:
|
|
%t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 23
|
|
%t108 = load i64, ptr %t107
|
|
%t109 = insertvalue %S.gen.Var %t104, i64 %t108, 4
|
|
%t110 = load i64, ptr %t87
|
|
%t111 = add i64 %t110, 1
|
|
call void @finch_arr_reserve(ptr %t86, i64 %t111, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64))
|
|
%t112 = load ptr, ptr %t86
|
|
%t113 = getelementptr inbounds %S.gen.Var, ptr %t112, i64 %t110
|
|
store %S.gen.Var %t109, ptr %t113
|
|
store i64 %t111, ptr %t87
|
|
%t114 = load ptr, ptr %a1
|
|
%t115 = icmp eq ptr %t114, null
|
|
br i1 %t115, label %panic2790, label %ok2791
|
|
panic2790:
|
|
call void @finch_panic(ptr @.str.1789, i64 1085, ptr @.str.1790)
|
|
unreachable
|
|
ok2791:
|
|
%t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 23
|
|
%t117 = load i64, ptr %t116
|
|
%t118 = add i64 %t117, 1
|
|
store i64 %t118, ptr %t116
|
|
%t119 = load ptr, ptr %a1
|
|
%t120 = load %S.ast.Node, ptr %a2
|
|
%t121 = load { ptr, i64, i64 }, ptr %a3
|
|
%t122 = load %S.ast.Type, ptr %a4
|
|
%t123 = load { ptr, i64, i64 }, ptr %a65
|
|
call void @finch.gen.dbgVariable(ptr %t119, %S.ast.Node %t120, { ptr, i64, i64 } %t121, %S.ast.Type %t122, { ptr, i64, i64 } %t123)
|
|
%t124 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t124, ptr %a125
|
|
call void @finch_str_copy(ptr %a126, ptr %a125)
|
|
%t127 = load { ptr, i64, i64 }, ptr %a126
|
|
ret { ptr, i64, i64 } %t127
|
|
}
|
|
|
|
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 %panic2792, label %ok2793
|
|
panic2792:
|
|
call void @finch_panic(ptr @.str.1791, i64 1091, ptr @.str.1792)
|
|
unreachable
|
|
ok2793:
|
|
%t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 10
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = add i64 %t6, 1
|
|
call void @finch_arr_reserve(ptr %t4, i64 %t7, i64 ptrtoint (ptr getelementptr (%S.gen.Scope, ptr null, i32 1) to i64))
|
|
%t8 = load ptr, ptr %t4
|
|
%t9 = getelementptr inbounds %S.gen.Scope, ptr %t8, i64 %t6
|
|
store %S.gen.Scope zeroinitializer, ptr %t9
|
|
store i64 %t7, ptr %t5
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.popScope(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic2794, label %ok2795
|
|
panic2794:
|
|
call void @finch_panic(ptr @.str.1793, i64 1095, ptr @.str.1794)
|
|
unreachable
|
|
ok2795:
|
|
%t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 10
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = icmp eq i64 %t6, 0
|
|
br i1 %t7, label %panic2796, label %ok2797
|
|
panic2796:
|
|
call void @finch_panic(ptr @.str.1795, i64 1095, ptr @.str.1796)
|
|
unreachable
|
|
ok2797:
|
|
%t8 = sub i64 %t6, 1
|
|
%t9 = load ptr, ptr %t4
|
|
%t10 = getelementptr inbounds %S.gen.Scope, ptr %t9, i64 %t8
|
|
%t11 = load %S.gen.Scope, ptr %t10
|
|
store i64 %t8, ptr %t5
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.arr_S_gen_Var(ptr %dst, ptr %src) {
|
|
entry:
|
|
%a5 = alloca i64, align 16
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64))
|
|
%t1 = load ptr, ptr %dst
|
|
%t2 = load ptr, ptr %src
|
|
%t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1
|
|
%t4 = load i64, ptr %t3
|
|
store i64 0, ptr %a5
|
|
br label %n.cond2802
|
|
n.cond2802:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body2803, label %n.end2804
|
|
n.body2803:
|
|
%t8 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds %S.gen.Var, ptr %t2, i64 %t6
|
|
call void @finch.copy.S_gen_Var(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond2802
|
|
n.end2804:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Scope, ptr %src
|
|
store %S.gen.Scope %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0
|
|
call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1
|
|
call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2
|
|
call void @finch.copy.arr_int(ptr %t6, ptr %t7)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.runDefers(ptr %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a13 = alloca %S.gen.Scope, align 16
|
|
%a14 = alloca %S.gen.Scope, align 16
|
|
%a16 = alloca %S.gen.Scope, align 16
|
|
%a20 = alloca i64, align 16
|
|
%a29 = alloca i1, align 16
|
|
%a34 = alloca i64, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic2798, label %ok2799
|
|
panic2798:
|
|
call void @finch_panic(ptr @.str.1797, i64 1100, ptr @.str.1798)
|
|
unreachable
|
|
ok2799:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10
|
|
%t6 = load i64, ptr %a2
|
|
%t7 = load { ptr, i64, i64 }, ptr %t5
|
|
%t8 = extractvalue { ptr, i64, i64 } %t7, 1
|
|
%t9 = icmp uge i64 %t6, %t8
|
|
br i1 %t9, label %range2800, label %inrange2801
|
|
range2800:
|
|
call void @finch_panic_index(ptr @.str.1799, i64 1100, i64 %t6, i64 %t8)
|
|
unreachable
|
|
inrange2801:
|
|
%t10 = extractvalue { ptr, i64, i64 } %t7, 0
|
|
%t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6
|
|
%t12 = load %S.gen.Scope, ptr %t11
|
|
store %S.gen.Scope %t12, ptr %a13
|
|
call void @finch.copy.S_gen_Scope(ptr %a14, ptr %a13)
|
|
%t15 = load %S.gen.Scope, ptr %a14
|
|
store %S.gen.Scope %t15, ptr %a16
|
|
%t17 = getelementptr inbounds %S.gen.Scope, ptr %a16, i32 0, i32 1
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1
|
|
%t19 = load i64, ptr %t18
|
|
store i64 %t19, ptr %a20
|
|
br label %while.cond2805
|
|
while.cond2805:
|
|
%t21 = load i64, ptr %a20
|
|
%t22 = icmp sgt i64 %t21, 0
|
|
br i1 %t22, label %while.body2806, label %while.end2807
|
|
while.body2806:
|
|
%t23 = load i64, ptr %a20
|
|
%t24 = sub i64 %t23, 1
|
|
store i64 %t24, ptr %a20
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = icmp eq ptr %t25, null
|
|
br i1 %t26, label %panic2808, label %ok2809
|
|
panic2808:
|
|
call void @finch_panic(ptr @.str.1800, i64 1104, ptr @.str.1801)
|
|
unreachable
|
|
ok2809:
|
|
%t27 = getelementptr inbounds %S.gen.Gen, ptr %t25, i32 0, i32 40
|
|
%t28 = load i1, ptr %t27
|
|
store i1 %t28, ptr %a29
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = icmp eq ptr %t30, null
|
|
br i1 %t31, label %panic2810, label %ok2811
|
|
panic2810:
|
|
call void @finch_panic(ptr @.str.1802, i64 1105, ptr @.str.1803)
|
|
unreachable
|
|
ok2811:
|
|
%t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 41
|
|
%t33 = load i64, ptr %t32
|
|
store i64 %t33, ptr %a34
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = icmp eq ptr %t35, null
|
|
br i1 %t36, label %panic2812, label %ok2813
|
|
panic2812:
|
|
call void @finch_panic(ptr @.str.1804, i64 1106, ptr @.str.1805)
|
|
unreachable
|
|
ok2813:
|
|
%t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 40
|
|
store i1 true, ptr %t37
|
|
%t38 = getelementptr inbounds %S.gen.Scope, ptr %a16, i32 0, i32 2
|
|
%t39 = load i64, ptr %a20
|
|
%t40 = load { ptr, i64, i64 }, ptr %t38
|
|
%t41 = extractvalue { ptr, i64, i64 } %t40, 1
|
|
%t42 = icmp uge i64 %t39, %t41
|
|
br i1 %t42, label %range2814, label %inrange2815
|
|
range2814:
|
|
call void @finch_panic_index(ptr @.str.1806, i64 1107, i64 %t39, i64 %t41)
|
|
unreachable
|
|
inrange2815:
|
|
%t43 = extractvalue { ptr, i64, i64 } %t40, 0
|
|
%t44 = getelementptr inbounds i64, ptr %t43, i64 %t39
|
|
%t45 = load i64, ptr %t44
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = icmp eq ptr %t46, null
|
|
br i1 %t47, label %panic2816, label %ok2817
|
|
panic2816:
|
|
call void @finch_panic(ptr @.str.1807, i64 1107, ptr @.str.1808)
|
|
unreachable
|
|
ok2817:
|
|
%t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 41
|
|
store i64 %t45, ptr %t48
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = icmp eq ptr %t49, null
|
|
br i1 %t50, label %panic2818, label %ok2819
|
|
panic2818:
|
|
call void @finch_panic(ptr @.str.1809, i64 1108, ptr @.str.1810)
|
|
unreachable
|
|
ok2819:
|
|
%t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 42
|
|
%t52 = load i64, ptr %t51
|
|
%t53 = add i64 %t52, 1
|
|
store i64 %t53, ptr %t51
|
|
%t54 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t54)
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = getelementptr inbounds %S.gen.Scope, ptr %a16, i32 0, i32 1
|
|
%t57 = load i64, ptr %a20
|
|
%t58 = load { ptr, i64, i64 }, ptr %t56
|
|
%t59 = extractvalue { ptr, i64, i64 } %t58, 1
|
|
%t60 = icmp uge i64 %t57, %t59
|
|
br i1 %t60, label %range2820, label %inrange2821
|
|
range2820:
|
|
call void @finch_panic_index(ptr @.str.1811, i64 1110, i64 %t57, i64 %t59)
|
|
unreachable
|
|
inrange2821:
|
|
%t61 = extractvalue { ptr, i64, i64 } %t58, 0
|
|
%t62 = getelementptr inbounds %S.ast.Node, ptr %t61, i64 %t57
|
|
%t63 = load %S.ast.Node, ptr %t62
|
|
call void @finch.gen.stmt(ptr %t55, %S.ast.Node %t63)
|
|
%t64 = load ptr, ptr %a1
|
|
call void @finch.gen.popScope(ptr %t64)
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = icmp eq ptr %t65, null
|
|
br i1 %t66, label %panic2822, label %ok2823
|
|
panic2822:
|
|
call void @finch_panic(ptr @.str.1812, i64 1112, ptr @.str.1813)
|
|
unreachable
|
|
ok2823:
|
|
%t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 42
|
|
%t68 = load i64, ptr %t67
|
|
%t69 = sub i64 %t68, 1
|
|
store i64 %t69, ptr %t67
|
|
%t70 = load i1, ptr %a29
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = icmp eq ptr %t71, null
|
|
br i1 %t72, label %panic2824, label %ok2825
|
|
panic2824:
|
|
call void @finch_panic(ptr @.str.1814, i64 1113, ptr @.str.1815)
|
|
unreachable
|
|
ok2825:
|
|
%t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 40
|
|
store i1 %t70, ptr %t73
|
|
%t74 = load i64, ptr %a34
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = icmp eq ptr %t75, null
|
|
br i1 %t76, label %panic2826, label %ok2827
|
|
panic2826:
|
|
call void @finch_panic(ptr @.str.1816, i64 1114, ptr @.str.1817)
|
|
unreachable
|
|
ok2827:
|
|
%t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 41
|
|
store i64 %t74, ptr %t77
|
|
br label %while.cond2805
|
|
while.end2807:
|
|
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 %panic2828, label %ok2829
|
|
panic2828:
|
|
call void @finch_panic(ptr @.str.1818, i64 1120, ptr @.str.1819)
|
|
unreachable
|
|
ok2829:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1
|
|
%t7 = load i64, ptr %t6
|
|
store i64 %t7, ptr %a8
|
|
br label %while.cond2830
|
|
while.cond2830:
|
|
%t9 = load i64, ptr %a8
|
|
%t10 = load i64, ptr %a2
|
|
%t11 = icmp sgt i64 %t9, %t10
|
|
br i1 %t11, label %while.body2831, label %while.end2832
|
|
while.body2831:
|
|
%t12 = load i64, ptr %a8
|
|
%t13 = sub i64 %t12, 1
|
|
store i64 %t13, ptr %a8
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = load i64, ptr %a8
|
|
call void @finch.gen.runDefers(ptr %t14, i64 %t15)
|
|
br label %while.cond2830
|
|
while.end2832:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.endScope(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic2833, label %ok2834
|
|
panic2833:
|
|
call void @finch_panic(ptr @.str.1820, i64 1129, ptr @.str.1821)
|
|
unreachable
|
|
ok2834:
|
|
%t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 9
|
|
%t5 = load i1, ptr %t4
|
|
%t6 = xor i1 %t5, true
|
|
br i1 %t6, label %then2835, label %endif2837
|
|
then2835:
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = icmp eq ptr %t8, null
|
|
br i1 %t9, label %panic2838, label %ok2839
|
|
panic2838:
|
|
call void @finch_panic(ptr @.str.1822, i64 1130, ptr @.str.1823)
|
|
unreachable
|
|
ok2839:
|
|
%t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 10
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1
|
|
%t12 = load i64, ptr %t11
|
|
%t13 = sub i64 %t12, 1
|
|
call void @finch.gen.runDefers(ptr %t7, i64 %t13)
|
|
br label %endif2837
|
|
endif2837:
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = icmp eq ptr %t14, null
|
|
br i1 %t15, label %panic2840, label %ok2841
|
|
panic2840:
|
|
call void @finch_panic(ptr @.str.1824, i64 1132, ptr @.str.1825)
|
|
unreachable
|
|
ok2841:
|
|
%t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 10
|
|
%t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1
|
|
%t18 = load i64, ptr %t17
|
|
%t19 = icmp eq i64 %t18, 0
|
|
br i1 %t19, label %panic2842, label %ok2843
|
|
panic2842:
|
|
call void @finch_panic(ptr @.str.1826, i64 1132, ptr @.str.1827)
|
|
unreachable
|
|
ok2843:
|
|
%t20 = sub i64 %t18, 1
|
|
%t21 = load ptr, ptr %t16
|
|
%t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20
|
|
%t23 = load %S.gen.Scope, ptr %t22
|
|
store i64 %t20, ptr %t17
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %p0) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Node, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
store %S.ast.Node %p0, ptr %a1
|
|
%t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0
|
|
%t3 = load { ptr, i64, i64 }, ptr %t2
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.1828, i64 3, i64 0 }, ptr %a5
|
|
%t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5)
|
|
%t7 = icmp ne i32 %t6, 0
|
|
br i1 %t7, label %then2844, label %endif2846
|
|
then2844:
|
|
%t8 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 1
|
|
%t9 = load { ptr, i64, i64 }, ptr %t8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
call void @finch_str_copy(ptr %a11, ptr %a10)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a11
|
|
ret { ptr, i64, i64 } %t12
|
|
endif2846:
|
|
%t13 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0
|
|
%t14 = load { ptr, i64, i64 }, ptr %t13
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.1829, i64 6, i64 0 }, ptr %a16
|
|
%t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16)
|
|
%t18 = icmp ne i32 %t17, 0
|
|
br label %logic.from2847
|
|
logic.from2847:
|
|
br i1 %t18, label %logic.end2849, label %logic.rhs2848
|
|
logic.rhs2848:
|
|
%t19 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0
|
|
%t20 = load { ptr, i64, i64 }, ptr %t19
|
|
store { ptr, i64, i64 } %t20, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.1830, i64 5, i64 0 }, ptr %a22
|
|
%t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22)
|
|
%t24 = icmp ne i32 %t23, 0
|
|
br label %logic.rend2850
|
|
logic.rend2850:
|
|
br label %logic.end2849
|
|
logic.end2849:
|
|
%t25 = phi i1 [ true, %logic.from2847 ], [ %t24, %logic.rend2850 ]
|
|
br i1 %t25, label %then2851, label %endif2853
|
|
then2851:
|
|
%t26 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
%t28 = extractvalue { ptr, i64, i64 } %t27, 1
|
|
%t29 = icmp uge i64 0, %t28
|
|
br i1 %t29, label %range2854, label %inrange2855
|
|
range2854:
|
|
call void @finch_panic_index(ptr @.str.1831, i64 1142, i64 0, i64 %t28)
|
|
unreachable
|
|
inrange2855:
|
|
%t30 = extractvalue { ptr, i64, i64 } %t27, 0
|
|
%t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0
|
|
%t32 = load %S.ast.Node, ptr %t31
|
|
%t33 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t32)
|
|
ret { ptr, i64, i64 } %t33
|
|
endif2853:
|
|
ret { ptr, i64, i64 } { ptr @.str.1832, i64 0, i64 0 }
|
|
}
|
|
|
|
define internal i1 @finch.gen.mutates(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Node %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Node, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca i64, align 16
|
|
%a50 = alloca i64, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca i64, align 16
|
|
%a71 = alloca i64, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca i64, align 16
|
|
%a140 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Node %p2, ptr %a3
|
|
%t4 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t5 = call ptr @finch_alloc(i64 %t4)
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.1833, i64 4, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.1834, i64 3, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.1835, i64 6, i64 0 }, ptr %t8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.1836, i64 6, i64 0 }, ptr %t9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.1837, i64 5, i64 0 }, ptr %t10
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.1838, i64 6, i64 0 }, ptr %t11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.1839, i64 4, i64 0 }, ptr %t12
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.1840, i64 7, i64 0 }, ptr %t13
|
|
%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.1841, i64 6, i64 0 }, ptr %a21
|
|
%t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21)
|
|
%t23 = icmp ne i32 %t22, 0
|
|
br label %logic.from2856
|
|
logic.from2856:
|
|
br i1 %t23, label %logic.rhs2857, label %logic.end2858
|
|
logic.rhs2857:
|
|
%t24 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9
|
|
%t25 = load { ptr, i64, i64 }, ptr %t24
|
|
%t26 = extractvalue { ptr, i64, i64 } %t25, 1
|
|
%t27 = icmp uge i64 0, %t26
|
|
br i1 %t27, label %range2859, label %inrange2860
|
|
range2859:
|
|
call void @finch_panic_index(ptr @.str.1842, i64 1149, i64 0, i64 %t26)
|
|
unreachable
|
|
inrange2860:
|
|
%t28 = extractvalue { ptr, i64, i64 } %t25, 0
|
|
%t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0
|
|
%t30 = load %S.ast.Node, ptr %t29
|
|
%t31 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t30)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t31, ptr %a33
|
|
store { ptr, i64, i64 } %t32, ptr %a34
|
|
%t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34)
|
|
%t36 = icmp ne i32 %t35, 0
|
|
br label %logic.rend2861
|
|
logic.rend2861:
|
|
br label %logic.end2858
|
|
logic.end2858:
|
|
%t37 = phi i1 [ false, %logic.from2856 ], [ %t36, %logic.rend2861 ]
|
|
br i1 %t37, label %then2862, label %endif2864
|
|
then2862:
|
|
ret i1 true
|
|
endif2864:
|
|
%t38 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0
|
|
%t39 = load { ptr, i64, i64 }, ptr %t38
|
|
store { ptr, i64, i64 } %t39, ptr %a40
|
|
store { ptr, i64, i64 } { ptr @.str.1843, i64 6, i64 0 }, ptr %a41
|
|
%t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41)
|
|
%t43 = icmp ne i32 %t42, 0
|
|
br label %logic.from2865
|
|
logic.from2865:
|
|
br i1 %t43, label %logic.rhs2866, label %logic.end2867
|
|
logic.rhs2866:
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1
|
|
%t45 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1
|
|
%t46 = load { ptr, i64, i64 }, ptr %t45
|
|
store i64 -1, ptr %a47
|
|
%t48 = load i64, ptr %t44
|
|
%t49 = load ptr, ptr %a17
|
|
store i64 0, ptr %a50
|
|
br label %find.cond2868
|
|
find.cond2868:
|
|
%t51 = load i64, ptr %a50
|
|
%t52 = icmp slt i64 %t51, %t48
|
|
br i1 %t52, label %find.body2869, label %find.end2872
|
|
find.body2869:
|
|
%t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t51
|
|
%t54 = load { ptr, i64, i64 }, ptr %t53
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
store { ptr, i64, i64 } %t46, ptr %a56
|
|
%t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56)
|
|
%t58 = icmp ne i32 %t57, 0
|
|
br i1 %t58, label %find.hit2870, label %find.next2871
|
|
find.hit2870:
|
|
store i64 %t51, ptr %a47
|
|
br label %find.end2872
|
|
find.next2871:
|
|
%t59 = add i64 %t51, 1
|
|
store i64 %t59, ptr %a50
|
|
br label %find.cond2868
|
|
find.end2872:
|
|
%t60 = load i64, ptr %a47
|
|
%t61 = icmp sge i64 %t60, 0
|
|
br label %logic.from2873
|
|
logic.from2873:
|
|
br i1 %t61, label %logic.end2875, label %logic.rhs2874
|
|
logic.rhs2874:
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = icmp eq ptr %t62, null
|
|
br i1 %t63, label %panic2876, label %ok2877
|
|
panic2876:
|
|
call void @finch_panic(ptr @.str.1844, i64 1155, ptr @.str.1845)
|
|
unreachable
|
|
ok2877:
|
|
%t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 22
|
|
%t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1
|
|
%t66 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1
|
|
%t67 = load { ptr, i64, i64 }, ptr %t66
|
|
store i64 -1, ptr %a68
|
|
%t69 = load i64, ptr %t65
|
|
%t70 = load ptr, ptr %t64
|
|
store i64 0, ptr %a71
|
|
br label %find.cond2878
|
|
find.cond2878:
|
|
%t72 = load i64, ptr %a71
|
|
%t73 = icmp slt i64 %t72, %t69
|
|
br i1 %t73, label %find.body2879, label %find.end2882
|
|
find.body2879:
|
|
%t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t72
|
|
%t75 = load { ptr, i64, i64 }, ptr %t74
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
store { ptr, i64, i64 } %t67, ptr %a77
|
|
%t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77)
|
|
%t79 = icmp ne i32 %t78, 0
|
|
br i1 %t79, label %find.hit2880, label %find.next2881
|
|
find.hit2880:
|
|
store i64 %t72, ptr %a68
|
|
br label %find.end2882
|
|
find.next2881:
|
|
%t80 = add i64 %t72, 1
|
|
store i64 %t80, ptr %a71
|
|
br label %find.cond2878
|
|
find.end2882:
|
|
%t81 = load i64, ptr %a68
|
|
%t82 = icmp sge i64 %t81, 0
|
|
br label %logic.rend2883
|
|
logic.rend2883:
|
|
br label %logic.end2875
|
|
logic.end2875:
|
|
%t83 = phi i1 [ true, %logic.from2873 ], [ %t82, %logic.rend2883 ]
|
|
br label %logic.rend2884
|
|
logic.rend2884:
|
|
br label %logic.end2867
|
|
logic.end2867:
|
|
%t84 = phi i1 [ false, %logic.from2865 ], [ %t83, %logic.rend2884 ]
|
|
br label %logic.from2885
|
|
logic.from2885:
|
|
br i1 %t84, label %logic.rhs2886, label %logic.end2887
|
|
logic.rhs2886:
|
|
%t85 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9
|
|
%t86 = load { ptr, i64, i64 }, ptr %t85
|
|
%t87 = extractvalue { ptr, i64, i64 } %t86, 1
|
|
%t88 = icmp uge i64 0, %t87
|
|
br i1 %t88, label %range2888, label %inrange2889
|
|
range2888:
|
|
call void @finch_panic_index(ptr @.str.1846, i64 1155, i64 0, i64 %t87)
|
|
unreachable
|
|
inrange2889:
|
|
%t89 = extractvalue { ptr, i64, i64 } %t86, 0
|
|
%t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 0
|
|
%t91 = load %S.ast.Node, ptr %t90
|
|
%t92 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t91)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t92, ptr %a94
|
|
store { ptr, i64, i64 } %t93, ptr %a95
|
|
%t96 = call i32 @finch_str_eq(ptr %a94, ptr %a95)
|
|
%t97 = icmp ne i32 %t96, 0
|
|
br label %logic.rend2890
|
|
logic.rend2890:
|
|
br label %logic.end2887
|
|
logic.end2887:
|
|
%t98 = phi i1 [ false, %logic.from2885 ], [ %t97, %logic.rend2890 ]
|
|
br i1 %t98, label %then2891, label %endif2893
|
|
then2891:
|
|
ret i1 true
|
|
endif2893:
|
|
%t99 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0
|
|
%t100 = load { ptr, i64, i64 }, ptr %t99
|
|
store { ptr, i64, i64 } %t100, ptr %a101
|
|
store { ptr, i64, i64 } { ptr @.str.1847, i64 4, i64 0 }, ptr %a102
|
|
%t103 = call i32 @finch_str_eq(ptr %a101, ptr %a102)
|
|
%t104 = icmp ne i32 %t103, 0
|
|
br label %logic.from2894
|
|
logic.from2894:
|
|
br i1 %t104, label %logic.rhs2895, label %logic.end2896
|
|
logic.rhs2895:
|
|
%t105 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1
|
|
%t106 = load { ptr, i64, i64 }, ptr %t105
|
|
store { ptr, i64, i64 } %t106, ptr %a107
|
|
store { ptr, i64, i64 } { ptr @.str.1848, i64 4, i64 0 }, ptr %a108
|
|
%t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108)
|
|
%t110 = icmp ne i32 %t109, 0
|
|
br label %logic.rend2897
|
|
logic.rend2897:
|
|
br label %logic.end2896
|
|
logic.end2896:
|
|
%t111 = phi i1 [ false, %logic.from2894 ], [ %t110, %logic.rend2897 ]
|
|
br label %logic.from2898
|
|
logic.from2898:
|
|
br i1 %t111, label %logic.rhs2899, label %logic.end2900
|
|
logic.rhs2899:
|
|
%t112 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9
|
|
%t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1
|
|
%t114 = load i64, ptr %t113
|
|
%t115 = icmp eq i64 %t114, 1
|
|
br label %logic.rend2901
|
|
logic.rend2901:
|
|
br label %logic.end2900
|
|
logic.end2900:
|
|
%t116 = phi i1 [ false, %logic.from2898 ], [ %t115, %logic.rend2901 ]
|
|
br label %logic.from2902
|
|
logic.from2902:
|
|
br i1 %t116, label %logic.rhs2903, label %logic.end2904
|
|
logic.rhs2903:
|
|
%t117 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9
|
|
%t118 = load { ptr, i64, i64 }, ptr %t117
|
|
%t119 = extractvalue { ptr, i64, i64 } %t118, 1
|
|
%t120 = icmp uge i64 0, %t119
|
|
br i1 %t120, label %range2905, label %inrange2906
|
|
range2905:
|
|
call void @finch_panic_index(ptr @.str.1849, i64 1158, i64 0, i64 %t119)
|
|
unreachable
|
|
inrange2906:
|
|
%t121 = extractvalue { ptr, i64, i64 } %t118, 0
|
|
%t122 = getelementptr inbounds %S.ast.Node, ptr %t121, i64 0
|
|
%t123 = load %S.ast.Node, ptr %t122
|
|
%t124 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t123)
|
|
%t125 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t124, ptr %a126
|
|
store { ptr, i64, i64 } %t125, ptr %a127
|
|
%t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127)
|
|
%t129 = icmp ne i32 %t128, 0
|
|
br label %logic.rend2907
|
|
logic.rend2907:
|
|
br label %logic.end2904
|
|
logic.end2904:
|
|
%t130 = phi i1 [ false, %logic.from2902 ], [ %t129, %logic.rend2907 ]
|
|
br i1 %t130, label %then2908, label %endif2910
|
|
then2908:
|
|
ret i1 true
|
|
endif2910:
|
|
%t131 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9
|
|
store i64 0, ptr %a132
|
|
br label %each.cond2911
|
|
each.cond2911:
|
|
%t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1
|
|
%t134 = load i64, ptr %t133
|
|
%t135 = load i64, ptr %a132
|
|
%t136 = icmp slt i64 %t135, %t134
|
|
br i1 %t136, label %each.body2912, label %each.end2914
|
|
each.body2912:
|
|
%t137 = load ptr, ptr %t131
|
|
%t138 = getelementptr inbounds %S.ast.Node, ptr %t137, i64 %t135
|
|
%t139 = load %S.ast.Node, ptr %t138
|
|
store %S.ast.Node %t139, ptr %a140
|
|
%t141 = load ptr, ptr %a1
|
|
%t142 = load { ptr, i64, i64 }, ptr %a2
|
|
%t143 = load %S.ast.Node, ptr %a140
|
|
%t144 = call i1 @finch.gen.mutates(ptr %t141, { ptr, i64, i64 } %t142, %S.ast.Node %t143)
|
|
br i1 %t144, label %then2915, label %endif2917
|
|
then2915:
|
|
ret i1 true
|
|
endif2917:
|
|
br label %each.step2913
|
|
each.step2913:
|
|
%t145 = load i64, ptr %a132
|
|
%t146 = add i64 %t145, 1
|
|
store i64 %t146, ptr %a132
|
|
br label %each.cond2911
|
|
each.end2914:
|
|
ret i1 false
|
|
}
|
|
|
|
define internal void @finch.copy.arr_bool(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64))
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_FnSig(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.FnSig, ptr %src
|
|
store %S.gen.FnSig %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 2
|
|
call void @finch_str_copy(ptr %t6, ptr %t7)
|
|
%t8 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 3
|
|
%t9 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 3
|
|
call void @finch_str_copy(ptr %t8, ptr %t9)
|
|
%t10 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 6
|
|
%t11 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 6
|
|
call void @finch.copy.arr_str(ptr %t10, ptr %t11)
|
|
%t12 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 7
|
|
%t13 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 7
|
|
call void @finch.copy.arr_S_ast_Type(ptr %t12, ptr %t13)
|
|
%t14 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 8
|
|
%t15 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 8
|
|
call void @finch_str_copy(ptr %t14, ptr %t15)
|
|
%t16 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 11
|
|
%t17 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 11
|
|
call void @finch_str_copy(ptr %t16, ptr %t17)
|
|
%t18 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 12
|
|
%t19 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 12
|
|
call void @finch.copy.S_ast_Type(ptr %t18, ptr %t19)
|
|
%t20 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 13
|
|
%t21 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 13
|
|
call void @finch.copy.arr_S_ast_Type(ptr %t20, ptr %t21)
|
|
%t22 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 14
|
|
%t23 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 14
|
|
call void @finch.copy.arr_str(ptr %t22, ptr %t23)
|
|
%t24 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 15
|
|
%t25 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 15
|
|
call void @finch.copy.arr_bool(ptr %t24, ptr %t25)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Template, ptr %src
|
|
store %S.gen.Template %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 2
|
|
call void @finch_str_copy(ptr %t6, ptr %t7)
|
|
%t8 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 3
|
|
%t9 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 3
|
|
call void @finch.copy.arr_str(ptr %t8, ptr %t9)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.declare(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a7 = alloca i64, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca i64, align 16
|
|
%a59 = alloca %S.ast.Node, align 16
|
|
%a60 = alloca %S.ast.Node, align 16
|
|
%a62 = alloca %S.ast.Node, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca i64, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca i64, align 16
|
|
%a218 = alloca %S.ast.Node, align 16
|
|
%a219 = alloca %S.ast.Node, align 16
|
|
%a221 = alloca %S.ast.Node, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a247 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca %S.gen.EnumDef, align 16
|
|
%a268 = alloca i64, align 16
|
|
%a270 = alloca i64, align 16
|
|
%a278 = alloca %S.ast.Node, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca i64, align 16
|
|
%a294 = alloca i64, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a314 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a316 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca i64, align 16
|
|
%a334 = alloca i64, align 16
|
|
%a347 = alloca { ptr, i64, i64 }, align 16
|
|
%a348 = alloca { ptr, i64, i64 }, align 16
|
|
%a349 = alloca { ptr, i64, i64 }, align 16
|
|
%a351 = alloca { ptr, i64, i64 }, align 16
|
|
%a352 = alloca { ptr, i64, i64 }, align 16
|
|
%a353 = alloca { ptr, i64, i64 }, align 16
|
|
%a356 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = alloca { ptr, i64, i64 }, align 16
|
|
%a359 = alloca { ptr, i64, i64 }, align 16
|
|
%a360 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a363 = alloca { ptr, i64, i64 }, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca %S.gen.EnumDef, align 16
|
|
%a394 = alloca %S.gen.EnumDef, align 16
|
|
%a410 = alloca i64, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a448 = alloca i64, align 16
|
|
%a460 = alloca i64, align 16
|
|
%a477 = alloca { ptr, i64, i64 }, align 16
|
|
%a478 = alloca { ptr, i64, i64 }, align 16
|
|
%a492 = alloca i64, align 16
|
|
%a512 = alloca %S.ast.Node, align 16
|
|
%a513 = alloca %S.ast.Node, align 16
|
|
%a515 = alloca %S.ast.Node, align 16
|
|
%a535 = alloca { ptr, i64, i64 }, align 16
|
|
%a536 = alloca { ptr, i64, i64 }, align 16
|
|
%a537 = alloca { ptr, i64, i64 }, align 16
|
|
%a539 = alloca { ptr, i64, i64 }, align 16
|
|
%a540 = alloca { ptr, i64, i64 }, align 16
|
|
%a541 = alloca { ptr, i64, i64 }, align 16
|
|
%a561 = alloca { ptr, i64, i64 }, align 16
|
|
%a562 = alloca { ptr, i64, i64 }, align 16
|
|
%a563 = alloca { ptr, i64, i64 }, align 16
|
|
%a565 = alloca { ptr, i64, i64 }, align 16
|
|
%a566 = alloca { ptr, i64, i64 }, align 16
|
|
%a567 = alloca { ptr, i64, i64 }, align 16
|
|
%a577 = alloca { ptr, i64, i64 }, align 16
|
|
%a578 = alloca { ptr, i64, i64 }, align 16
|
|
%a583 = alloca { ptr, i64, i64 }, align 16
|
|
%a584 = alloca { ptr, i64, i64 }, align 16
|
|
%a589 = alloca { ptr, i64, i64 }, align 16
|
|
%a590 = alloca { ptr, i64, i64 }, align 16
|
|
%a595 = alloca { ptr, i64, i64 }, align 16
|
|
%a596 = alloca { ptr, i64, i64 }, align 16
|
|
%a611 = alloca { ptr, i64, i64 }, align 16
|
|
%a612 = alloca { ptr, i64, i64 }, align 16
|
|
%a614 = alloca { ptr, i64, i64 }, align 16
|
|
%a615 = alloca i1, align 16
|
|
%a642 = alloca { ptr, i64, i64 }, align 16
|
|
%a643 = alloca { ptr, i64, i64 }, align 16
|
|
%a644 = alloca { ptr, i64, i64 }, align 16
|
|
%a646 = alloca { ptr, i64, i64 }, align 16
|
|
%a647 = alloca { ptr, i64, i64 }, align 16
|
|
%a648 = alloca { ptr, i64, i64 }, align 16
|
|
%a652 = alloca { ptr, i64, i64 }, align 16
|
|
%a653 = alloca { ptr, i64, i64 }, align 16
|
|
%a654 = alloca { ptr, i64, i64 }, align 16
|
|
%a656 = alloca { ptr, i64, i64 }, align 16
|
|
%a657 = alloca { ptr, i64, i64 }, align 16
|
|
%a658 = alloca { ptr, i64, i64 }, align 16
|
|
%a672 = alloca i64, align 16
|
|
%a691 = alloca { ptr, i64, i64 }, align 16
|
|
%a692 = alloca { ptr, i64, i64 }, align 16
|
|
%a693 = alloca { ptr, i64, i64 }, align 16
|
|
%a695 = alloca { ptr, i64, i64 }, align 16
|
|
%a696 = alloca { ptr, i64, i64 }, align 16
|
|
%a697 = alloca { ptr, i64, i64 }, align 16
|
|
%a711 = alloca { ptr, i64, i64 }, align 16
|
|
%a712 = alloca { ptr, i64, i64 }, align 16
|
|
%a713 = alloca { ptr, i64, i64 }, align 16
|
|
%a715 = alloca { ptr, i64, i64 }, align 16
|
|
%a716 = alloca { ptr, i64, i64 }, align 16
|
|
%a717 = alloca { ptr, i64, i64 }, align 16
|
|
%a721 = alloca { ptr, i64, i64 }, align 16
|
|
%a722 = alloca { ptr, i64, i64 }, align 16
|
|
%a723 = alloca { ptr, i64, i64 }, align 16
|
|
%a725 = alloca { ptr, i64, i64 }, align 16
|
|
%a726 = alloca { ptr, i64, i64 }, align 16
|
|
%a727 = alloca { ptr, i64, i64 }, align 16
|
|
%a742 = alloca i64, align 16
|
|
%a745 = alloca i64, align 16
|
|
%a750 = alloca { ptr, i64, i64 }, align 16
|
|
%a751 = alloca { ptr, i64, i64 }, align 16
|
|
%a761 = alloca { ptr, i64, i64 }, align 16
|
|
%a762 = alloca { ptr, i64, i64 }, align 16
|
|
%a763 = alloca { ptr, i64, i64 }, align 16
|
|
%a765 = alloca { ptr, i64, i64 }, align 16
|
|
%a766 = alloca { ptr, i64, i64 }, align 16
|
|
%a767 = alloca { ptr, i64, i64 }, align 16
|
|
%a771 = alloca { ptr, i64, i64 }, align 16
|
|
%a772 = alloca { ptr, i64, i64 }, align 16
|
|
%a773 = alloca { ptr, i64, i64 }, align 16
|
|
%a775 = alloca { ptr, i64, i64 }, align 16
|
|
%a776 = alloca { ptr, i64, i64 }, align 16
|
|
%a777 = alloca { ptr, i64, i64 }, align 16
|
|
%a792 = alloca { ptr, i64, i64 }, align 16
|
|
%a793 = alloca { ptr, i64, i64 }, align 16
|
|
%a794 = alloca { ptr, i64, i64 }, align 16
|
|
%a796 = alloca { ptr, i64, i64 }, align 16
|
|
%a797 = alloca { ptr, i64, i64 }, align 16
|
|
%a798 = alloca { ptr, i64, i64 }, align 16
|
|
%a807 = alloca { ptr, i64, i64 }, align 16
|
|
%a808 = alloca { ptr, i64, i64 }, align 16
|
|
%a809 = alloca { ptr, i64, i64 }, align 16
|
|
%a811 = alloca { ptr, i64, i64 }, align 16
|
|
%a812 = alloca { ptr, i64, i64 }, align 16
|
|
%a813 = alloca { ptr, i64, i64 }, align 16
|
|
%a819 = alloca { ptr, i64, i64 }, align 16
|
|
%a820 = alloca { ptr, i64, i64 }, align 16
|
|
%a825 = alloca { ptr, i64, i64 }, align 16
|
|
%a826 = alloca { ptr, i64, i64 }, align 16
|
|
%a831 = alloca { ptr, i64, i64 }, align 16
|
|
%a832 = alloca { ptr, i64, i64 }, align 16
|
|
%a836 = alloca { ptr, i64, i64 }, align 16
|
|
%a837 = alloca { ptr, i64, i64 }, align 16
|
|
%a852 = alloca %S.gen.FnSig, align 16
|
|
%a858 = alloca { ptr, i64, i64 }, align 16
|
|
%a859 = alloca { ptr, i64, i64 }, align 16
|
|
%a860 = alloca { ptr, i64, i64 }, align 16
|
|
%a862 = alloca { ptr, i64, i64 }, align 16
|
|
%a863 = alloca { ptr, i64, i64 }, align 16
|
|
%a864 = alloca { ptr, i64, i64 }, align 16
|
|
%a868 = alloca { ptr, i64, i64 }, align 16
|
|
%a869 = alloca { ptr, i64, i64 }, align 16
|
|
%a870 = alloca { ptr, i64, i64 }, align 16
|
|
%a882 = alloca { ptr, i64, i64 }, align 16
|
|
%a883 = alloca { ptr, i64, i64 }, align 16
|
|
%a884 = alloca { ptr, i64, i64 }, align 16
|
|
%a886 = alloca { ptr, i64, i64 }, align 16
|
|
%a887 = alloca { ptr, i64, i64 }, align 16
|
|
%a888 = alloca { ptr, i64, i64 }, align 16
|
|
%a892 = alloca { ptr, i64, i64 }, align 16
|
|
%a893 = alloca { ptr, i64, i64 }, align 16
|
|
%a894 = alloca { ptr, i64, i64 }, align 16
|
|
%a896 = alloca { ptr, i64, i64 }, align 16
|
|
%a897 = alloca { ptr, i64, i64 }, align 16
|
|
%a898 = alloca { ptr, i64, i64 }, align 16
|
|
%a902 = alloca { ptr, i64, i64 }, align 16
|
|
%a903 = alloca { ptr, i64, i64 }, align 16
|
|
%a904 = alloca { ptr, i64, i64 }, align 16
|
|
%a917 = alloca i64, align 16
|
|
%a929 = alloca { ptr, i64, i64 }, align 16
|
|
%a930 = alloca { ptr, i64, i64 }, align 16
|
|
%a949 = alloca { ptr, i64, i64 }, align 16
|
|
%a950 = alloca { ptr, i64, i64 }, align 16
|
|
%a951 = alloca { ptr, i64, i64 }, align 16
|
|
%a953 = alloca { ptr, i64, i64 }, align 16
|
|
%a954 = alloca { ptr, i64, i64 }, align 16
|
|
%a955 = alloca { ptr, i64, i64 }, align 16
|
|
%a993 = alloca { ptr, i64, i64 }, align 16
|
|
%a994 = alloca { ptr, i64, i64 }, align 16
|
|
%a1012 = alloca %S.gen.FnSig, align 16
|
|
%a1013 = alloca %S.gen.FnSig, align 16
|
|
%a1023 = alloca i1, align 16
|
|
%a1030 = alloca i64, align 16
|
|
%a1096 = alloca %S.ast.Node, align 16
|
|
%a1097 = alloca %S.ast.Node, align 16
|
|
%a1099 = alloca %S.ast.Node, align 16
|
|
%a1138 = alloca { ptr, i64, i64 }, align 16
|
|
%a1139 = alloca { ptr, i64, i64 }, align 16
|
|
%a1152 = alloca i64, align 16
|
|
%a1165 = alloca %S.gen.Template, align 16
|
|
%a1166 = alloca %S.gen.Template, align 16
|
|
%a1168 = alloca %S.gen.Template, align 16
|
|
%a1196 = alloca %S.ast.Node, align 16
|
|
%a1197 = alloca %S.ast.Node, align 16
|
|
%a1199 = alloca %S.ast.Node, align 16
|
|
%a1229 = alloca { ptr, i64, i64 }, align 16
|
|
%a1230 = alloca { ptr, i64, i64 }, align 16
|
|
%a1243 = alloca i64, align 16
|
|
%a1283 = alloca %S.ast.Node, align 16
|
|
%a1284 = alloca %S.ast.Node, align 16
|
|
%a1286 = alloca %S.ast.Node, align 16
|
|
%a1298 = alloca %S.ast.Node, align 16
|
|
%a1299 = alloca %S.ast.Node, align 16
|
|
%a1301 = alloca %S.ast.Node, align 16
|
|
%a1314 = alloca i64, align 16
|
|
%a1334 = alloca %S.ast.Type, align 16
|
|
%a1335 = alloca %S.ast.Type, align 16
|
|
%a1337 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic2918, label %ok2919
|
|
panic2918:
|
|
call void @finch_panic(ptr @.str.1850, i64 1172, ptr @.str.1851)
|
|
unreachable
|
|
ok2919:
|
|
%t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 0
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1
|
|
%t6 = load i64, ptr %t5
|
|
store i64 0, ptr %a7
|
|
br label %for.cond2920
|
|
for.cond2920:
|
|
%t8 = load i64, ptr %a7
|
|
%t9 = icmp slt i64 %t8, %t6
|
|
br i1 %t9, label %for.body2921, label %for.end2923
|
|
for.body2921:
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = icmp eq ptr %t10, null
|
|
br i1 %t11, label %panic2924, label %ok2925
|
|
panic2924:
|
|
call void @finch_panic(ptr @.str.1852, i64 1173, ptr @.str.1853)
|
|
unreachable
|
|
ok2925:
|
|
%t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 0
|
|
%t13 = load i64, ptr %a7
|
|
%t14 = load { ptr, i64, i64 }, ptr %t12
|
|
%t15 = extractvalue { ptr, i64, i64 } %t14, 1
|
|
%t16 = icmp uge i64 %t13, %t15
|
|
br i1 %t16, label %range2926, label %inrange2927
|
|
range2926:
|
|
call void @finch_panic_index(ptr @.str.1854, i64 1173, i64 %t13, i64 %t15)
|
|
unreachable
|
|
inrange2927:
|
|
%t17 = extractvalue { ptr, i64, i64 } %t14, 0
|
|
%t18 = getelementptr inbounds %S.ast.Program, ptr %t17, i64 %t13
|
|
%t19 = getelementptr inbounds %S.ast.Program, ptr %t18, i32 0, i32 0
|
|
%t20 = load { ptr, i64, i64 }, ptr %t19
|
|
%t21 = load ptr, ptr %a1
|
|
%t22 = icmp eq ptr %t21, null
|
|
br i1 %t22, label %panic2928, label %ok2929
|
|
panic2928:
|
|
call void @finch_panic(ptr @.str.1855, i64 1173, ptr @.str.1856)
|
|
unreachable
|
|
ok2929:
|
|
%t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t20, ptr %a24
|
|
call void @finch_str_copy(ptr %a25, ptr %a24)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t26, ptr %t23
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = icmp eq ptr %t27, null
|
|
br i1 %t28, label %panic2930, label %ok2931
|
|
panic2930:
|
|
call void @finch_panic(ptr @.str.1857, i64 1174, ptr @.str.1858)
|
|
unreachable
|
|
ok2931:
|
|
%t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 0
|
|
%t30 = load i64, ptr %a7
|
|
%t31 = load { ptr, i64, i64 }, ptr %t29
|
|
%t32 = extractvalue { ptr, i64, i64 } %t31, 1
|
|
%t33 = icmp uge i64 %t30, %t32
|
|
br i1 %t33, label %range2932, label %inrange2933
|
|
range2932:
|
|
call void @finch_panic_index(ptr @.str.1859, i64 1174, i64 %t30, i64 %t32)
|
|
unreachable
|
|
inrange2933:
|
|
%t34 = extractvalue { ptr, i64, i64 } %t31, 0
|
|
%t35 = getelementptr inbounds %S.ast.Program, ptr %t34, i64 %t30
|
|
%t36 = getelementptr inbounds %S.ast.Program, ptr %t35, i32 0, i32 6
|
|
%t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1
|
|
%t38 = load i64, ptr %t37
|
|
store i64 0, ptr %a39
|
|
br label %for.cond2934
|
|
for.cond2934:
|
|
%t40 = load i64, ptr %a39
|
|
%t41 = icmp slt i64 %t40, %t38
|
|
br i1 %t41, label %for.body2935, label %for.end2937
|
|
for.body2935:
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = icmp eq ptr %t42, null
|
|
br i1 %t43, label %panic2938, label %ok2939
|
|
panic2938:
|
|
call void @finch_panic(ptr @.str.1860, i64 1175, ptr @.str.1861)
|
|
unreachable
|
|
ok2939:
|
|
%t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 0
|
|
%t45 = load i64, ptr %a7
|
|
%t46 = load { ptr, i64, i64 }, ptr %t44
|
|
%t47 = extractvalue { ptr, i64, i64 } %t46, 1
|
|
%t48 = icmp uge i64 %t45, %t47
|
|
br i1 %t48, label %range2940, label %inrange2941
|
|
range2940:
|
|
call void @finch_panic_index(ptr @.str.1862, i64 1175, i64 %t45, i64 %t47)
|
|
unreachable
|
|
inrange2941:
|
|
%t49 = extractvalue { ptr, i64, i64 } %t46, 0
|
|
%t50 = getelementptr inbounds %S.ast.Program, ptr %t49, i64 %t45
|
|
%t51 = getelementptr inbounds %S.ast.Program, ptr %t50, i32 0, i32 6
|
|
%t52 = load i64, ptr %a39
|
|
%t53 = load { ptr, i64, i64 }, ptr %t51
|
|
%t54 = extractvalue { ptr, i64, i64 } %t53, 1
|
|
%t55 = icmp uge i64 %t52, %t54
|
|
br i1 %t55, label %range2942, label %inrange2943
|
|
range2942:
|
|
call void @finch_panic_index(ptr @.str.1863, i64 1175, i64 %t52, i64 %t54)
|
|
unreachable
|
|
inrange2943:
|
|
%t56 = extractvalue { ptr, i64, i64 } %t53, 0
|
|
%t57 = getelementptr inbounds %S.ast.Node, ptr %t56, i64 %t52
|
|
%t58 = load %S.ast.Node, ptr %t57
|
|
store %S.ast.Node %t58, ptr %a59
|
|
call void @finch.copy.S_ast_Node(ptr %a60, ptr %a59)
|
|
%t61 = load %S.ast.Node, ptr %a60
|
|
store %S.ast.Node %t61, ptr %a62
|
|
%t63 = load ptr, ptr %a1
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = icmp eq ptr %t64, null
|
|
br i1 %t65, label %panic2944, label %ok2945
|
|
panic2944:
|
|
call void @finch_panic(ptr @.str.1864, i64 1176, ptr @.str.1865)
|
|
unreachable
|
|
ok2945:
|
|
%t66 = getelementptr inbounds %S.gen.Gen, ptr %t64, i32 0, i32 13
|
|
%t67 = load { ptr, i64, i64 }, ptr %t66
|
|
%t68 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1
|
|
%t69 = load { ptr, i64, i64 }, ptr %t68
|
|
%t70 = call i64 @finch.gen.findStruct(ptr %t63, { ptr, i64, i64 } %t67, { ptr, i64, i64 } %t69)
|
|
%t71 = icmp sge i64 %t70, 0
|
|
br label %logic.from2946
|
|
logic.from2946:
|
|
br i1 %t71, label %logic.end2948, label %logic.rhs2947
|
|
logic.rhs2947:
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = load ptr, ptr %a1
|
|
%t74 = icmp eq ptr %t73, null
|
|
br i1 %t74, label %panic2949, label %ok2950
|
|
panic2949:
|
|
call void @finch_panic(ptr @.str.1866, i64 1176, ptr @.str.1867)
|
|
unreachable
|
|
ok2950:
|
|
%t75 = getelementptr inbounds %S.gen.Gen, ptr %t73, i32 0, i32 13
|
|
%t76 = load { ptr, i64, i64 }, ptr %t75
|
|
%t77 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1
|
|
%t78 = load { ptr, i64, i64 }, ptr %t77
|
|
%t79 = call i64 @finch.gen.findTemplate(ptr %t72, { ptr, i64, i64 } %t76, { ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.1868, i64 0, i64 0 }, i1 true)
|
|
%t80 = icmp sge i64 %t79, 0
|
|
br label %logic.rend2951
|
|
logic.rend2951:
|
|
br label %logic.end2948
|
|
logic.end2948:
|
|
%t81 = phi i1 [ true, %logic.from2946 ], [ %t80, %logic.rend2951 ]
|
|
br i1 %t81, label %then2952, label %endif2954
|
|
then2952:
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = load %S.ast.Node, ptr %a62
|
|
%t84 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1
|
|
%t85 = load { ptr, i64, i64 }, ptr %t84
|
|
store { ptr, i64, i64 } { ptr @.str.1869, i64 12, i64 0 }, ptr %a87
|
|
store { ptr, i64, i64 } %t85, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t89, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.1870, i64 18, i64 0 }, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
call void @finch.gen.fail(ptr %t82, %S.ast.Node %t83, { ptr, i64, i64 } %t93)
|
|
br label %endif2954
|
|
endif2954:
|
|
%t94 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 3
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1
|
|
%t96 = load i64, ptr %t95
|
|
%t97 = icmp sgt i64 %t96, 0
|
|
br i1 %t97, label %then2955, label %endif2957
|
|
then2955:
|
|
%t98 = load ptr, ptr %a1
|
|
%t99 = icmp eq ptr %t98, null
|
|
br i1 %t99, label %panic2958, label %ok2959
|
|
panic2958:
|
|
call void @finch_panic(ptr @.str.1871, i64 1181, ptr @.str.1872)
|
|
unreachable
|
|
ok2959:
|
|
%t100 = getelementptr inbounds %S.gen.Gen, ptr %t98, i32 0, i32 16
|
|
%t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i32 0, i32 1
|
|
%t102 = load ptr, ptr %a1
|
|
%t103 = icmp eq ptr %t102, null
|
|
br i1 %t103, label %panic2960, label %ok2961
|
|
panic2960:
|
|
call void @finch_panic(ptr @.str.1873, i64 1181, ptr @.str.1874)
|
|
unreachable
|
|
ok2961:
|
|
%t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 13
|
|
%t105 = load { ptr, i64, i64 }, ptr %t104
|
|
store { ptr, i64, i64 } %t105, ptr %a106
|
|
call void @finch_str_copy(ptr %a107, ptr %a106)
|
|
%t108 = load { ptr, i64, i64 }, ptr %a107
|
|
%t109 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t108, 0
|
|
%t110 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1
|
|
%t111 = load { ptr, i64, i64 }, ptr %t110
|
|
store { ptr, i64, i64 } %t111, ptr %a112
|
|
call void @finch_str_copy(ptr %a113, ptr %a112)
|
|
%t114 = load { ptr, i64, i64 }, ptr %a113
|
|
%t115 = insertvalue %S.gen.Template %t109, { ptr, i64, i64 } %t114, 1
|
|
%t116 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 3
|
|
%t117 = load { ptr, i64, i64 }, ptr %t116
|
|
store { ptr, i64, i64 } %t117, ptr %a118
|
|
call void @finch.copy.arr_str(ptr %a119, ptr %a118)
|
|
%t120 = load { ptr, i64, i64 }, ptr %a119
|
|
%t121 = insertvalue %S.gen.Template %t115, { ptr, i64, i64 } %t120, 3
|
|
%t122 = load i64, ptr %a7
|
|
%t123 = insertvalue %S.gen.Template %t121, i64 %t122, 4
|
|
%t124 = load i64, ptr %a39
|
|
%t125 = insertvalue %S.gen.Template %t123, i64 %t124, 5
|
|
%t126 = insertvalue %S.gen.Template %t125, i1 true, 6
|
|
%t127 = load i64, ptr %t101
|
|
%t128 = add i64 %t127, 1
|
|
call void @finch_arr_reserve(ptr %t100, i64 %t128, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64))
|
|
%t129 = load ptr, ptr %t100
|
|
%t130 = getelementptr inbounds %S.gen.Template, ptr %t129, i64 %t127
|
|
store %S.gen.Template %t126, ptr %t130
|
|
store i64 %t128, ptr %t101
|
|
br label %for.step2936
|
|
endif2957:
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = icmp eq ptr %t131, null
|
|
br i1 %t132, label %panic2962, label %ok2963
|
|
panic2962:
|
|
call void @finch_panic(ptr @.str.1875, i64 1184, ptr @.str.1876)
|
|
unreachable
|
|
ok2963:
|
|
%t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 15
|
|
%t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1
|
|
%t135 = load ptr, ptr %a1
|
|
%t136 = icmp eq ptr %t135, null
|
|
br i1 %t136, label %panic2964, label %ok2965
|
|
panic2964:
|
|
call void @finch_panic(ptr @.str.1877, i64 1184, ptr @.str.1878)
|
|
unreachable
|
|
ok2965:
|
|
%t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 13
|
|
%t138 = load { ptr, i64, i64 }, ptr %t137
|
|
store { ptr, i64, i64 } %t138, ptr %a139
|
|
call void @finch_str_copy(ptr %a140, ptr %a139)
|
|
%t141 = load { ptr, i64, i64 }, ptr %a140
|
|
%t142 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t141, 0
|
|
%t143 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1
|
|
%t144 = load { ptr, i64, i64 }, ptr %t143
|
|
store { ptr, i64, i64 } %t144, ptr %a145
|
|
call void @finch_str_copy(ptr %a146, ptr %a145)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a146
|
|
%t148 = insertvalue %S.gen.StructDef %t142, { ptr, i64, i64 } %t147, 1
|
|
%t149 = load i64, ptr %a7
|
|
%t150 = insertvalue %S.gen.StructDef %t148, i64 %t149, 13
|
|
%t151 = load i64, ptr %a39
|
|
%t152 = insertvalue %S.gen.StructDef %t150, i64 %t151, 14
|
|
%t153 = load i64, ptr %t134
|
|
%t154 = add i64 %t153, 1
|
|
call void @finch_arr_reserve(ptr %t133, i64 %t154, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64))
|
|
%t155 = load ptr, ptr %t133
|
|
%t156 = getelementptr inbounds %S.gen.StructDef, ptr %t155, i64 %t153
|
|
store %S.gen.StructDef %t152, ptr %t156
|
|
store i64 %t154, ptr %t134
|
|
br label %for.step2936
|
|
for.step2936:
|
|
%t157 = load i64, ptr %a39
|
|
%t158 = add i64 %t157, 1
|
|
store i64 %t158, ptr %a39
|
|
br label %for.cond2934
|
|
for.end2937:
|
|
br label %for.step2922
|
|
for.step2922:
|
|
%t159 = load i64, ptr %a7
|
|
%t160 = add i64 %t159, 1
|
|
store i64 %t160, ptr %a7
|
|
br label %for.cond2920
|
|
for.end2923:
|
|
%t161 = load ptr, ptr %a1
|
|
%t162 = icmp eq ptr %t161, null
|
|
br i1 %t162, label %panic2966, label %ok2967
|
|
panic2966:
|
|
call void @finch_panic(ptr @.str.1879, i64 1187, ptr @.str.1880)
|
|
unreachable
|
|
ok2967:
|
|
%t163 = getelementptr inbounds %S.gen.Gen, ptr %t161, i32 0, i32 0
|
|
%t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1
|
|
%t165 = load i64, ptr %t164
|
|
store i64 0, ptr %a166
|
|
br label %for.cond2968
|
|
for.cond2968:
|
|
%t167 = load i64, ptr %a166
|
|
%t168 = icmp slt i64 %t167, %t165
|
|
br i1 %t168, label %for.body2969, label %for.end2971
|
|
for.body2969:
|
|
%t169 = load ptr, ptr %a1
|
|
%t170 = icmp eq ptr %t169, null
|
|
br i1 %t170, label %panic2972, label %ok2973
|
|
panic2972:
|
|
call void @finch_panic(ptr @.str.1881, i64 1188, ptr @.str.1882)
|
|
unreachable
|
|
ok2973:
|
|
%t171 = getelementptr inbounds %S.gen.Gen, ptr %t169, i32 0, i32 0
|
|
%t172 = load i64, ptr %a166
|
|
%t173 = load { ptr, i64, i64 }, ptr %t171
|
|
%t174 = extractvalue { ptr, i64, i64 } %t173, 1
|
|
%t175 = icmp uge i64 %t172, %t174
|
|
br i1 %t175, label %range2974, label %inrange2975
|
|
range2974:
|
|
call void @finch_panic_index(ptr @.str.1883, i64 1188, i64 %t172, i64 %t174)
|
|
unreachable
|
|
inrange2975:
|
|
%t176 = extractvalue { ptr, i64, i64 } %t173, 0
|
|
%t177 = getelementptr inbounds %S.ast.Program, ptr %t176, i64 %t172
|
|
%t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i32 0, i32 0
|
|
%t179 = load { ptr, i64, i64 }, ptr %t178
|
|
%t180 = load ptr, ptr %a1
|
|
%t181 = icmp eq ptr %t180, null
|
|
br i1 %t181, label %panic2976, label %ok2977
|
|
panic2976:
|
|
call void @finch_panic(ptr @.str.1884, i64 1188, ptr @.str.1885)
|
|
unreachable
|
|
ok2977:
|
|
%t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t179, ptr %a183
|
|
call void @finch_str_copy(ptr %a184, ptr %a183)
|
|
%t185 = load { ptr, i64, i64 }, ptr %a184
|
|
store { ptr, i64, i64 } %t185, ptr %t182
|
|
%t186 = load ptr, ptr %a1
|
|
%t187 = icmp eq ptr %t186, null
|
|
br i1 %t187, label %panic2978, label %ok2979
|
|
panic2978:
|
|
call void @finch_panic(ptr @.str.1886, i64 1189, ptr @.str.1887)
|
|
unreachable
|
|
ok2979:
|
|
%t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 0
|
|
%t189 = load i64, ptr %a166
|
|
%t190 = load { ptr, i64, i64 }, ptr %t188
|
|
%t191 = extractvalue { ptr, i64, i64 } %t190, 1
|
|
%t192 = icmp uge i64 %t189, %t191
|
|
br i1 %t192, label %range2980, label %inrange2981
|
|
range2980:
|
|
call void @finch_panic_index(ptr @.str.1888, i64 1189, i64 %t189, i64 %t191)
|
|
unreachable
|
|
inrange2981:
|
|
%t193 = extractvalue { ptr, i64, i64 } %t190, 0
|
|
%t194 = getelementptr inbounds %S.ast.Program, ptr %t193, i64 %t189
|
|
%t195 = getelementptr inbounds %S.ast.Program, ptr %t194, i32 0, i32 7
|
|
%t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i32 0, i32 1
|
|
%t197 = load i64, ptr %t196
|
|
store i64 0, ptr %a198
|
|
br label %for.cond2982
|
|
for.cond2982:
|
|
%t199 = load i64, ptr %a198
|
|
%t200 = icmp slt i64 %t199, %t197
|
|
br i1 %t200, label %for.body2983, label %for.end2985
|
|
for.body2983:
|
|
%t201 = load ptr, ptr %a1
|
|
%t202 = icmp eq ptr %t201, null
|
|
br i1 %t202, label %panic2986, label %ok2987
|
|
panic2986:
|
|
call void @finch_panic(ptr @.str.1889, i64 1190, ptr @.str.1890)
|
|
unreachable
|
|
ok2987:
|
|
%t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 0
|
|
%t204 = load i64, ptr %a166
|
|
%t205 = load { ptr, i64, i64 }, ptr %t203
|
|
%t206 = extractvalue { ptr, i64, i64 } %t205, 1
|
|
%t207 = icmp uge i64 %t204, %t206
|
|
br i1 %t207, label %range2988, label %inrange2989
|
|
range2988:
|
|
call void @finch_panic_index(ptr @.str.1891, i64 1190, i64 %t204, i64 %t206)
|
|
unreachable
|
|
inrange2989:
|
|
%t208 = extractvalue { ptr, i64, i64 } %t205, 0
|
|
%t209 = getelementptr inbounds %S.ast.Program, ptr %t208, i64 %t204
|
|
%t210 = getelementptr inbounds %S.ast.Program, ptr %t209, i32 0, i32 7
|
|
%t211 = load i64, ptr %a198
|
|
%t212 = load { ptr, i64, i64 }, ptr %t210
|
|
%t213 = extractvalue { ptr, i64, i64 } %t212, 1
|
|
%t214 = icmp uge i64 %t211, %t213
|
|
br i1 %t214, label %range2990, label %inrange2991
|
|
range2990:
|
|
call void @finch_panic_index(ptr @.str.1892, i64 1190, i64 %t211, i64 %t213)
|
|
unreachable
|
|
inrange2991:
|
|
%t215 = extractvalue { ptr, i64, i64 } %t212, 0
|
|
%t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211
|
|
%t217 = load %S.ast.Node, ptr %t216
|
|
store %S.ast.Node %t217, ptr %a218
|
|
call void @finch.copy.S_ast_Node(ptr %a219, ptr %a218)
|
|
%t220 = load %S.ast.Node, ptr %a219
|
|
store %S.ast.Node %t220, ptr %a221
|
|
%t222 = load ptr, ptr %a1
|
|
%t223 = load ptr, ptr %a1
|
|
%t224 = icmp eq ptr %t223, null
|
|
br i1 %t224, label %panic2992, label %ok2993
|
|
panic2992:
|
|
call void @finch_panic(ptr @.str.1893, i64 1191, ptr @.str.1894)
|
|
unreachable
|
|
ok2993:
|
|
%t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 13
|
|
%t226 = load { ptr, i64, i64 }, ptr %t225
|
|
%t227 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1
|
|
%t228 = load { ptr, i64, i64 }, ptr %t227
|
|
%t229 = call i64 @finch.gen.findEnum(ptr %t222, { ptr, i64, i64 } %t226, { ptr, i64, i64 } %t228)
|
|
%t230 = icmp sge i64 %t229, 0
|
|
br label %logic.from2994
|
|
logic.from2994:
|
|
br i1 %t230, label %logic.end2996, label %logic.rhs2995
|
|
logic.rhs2995:
|
|
%t231 = load ptr, ptr %a1
|
|
%t232 = load ptr, ptr %a1
|
|
%t233 = icmp eq ptr %t232, null
|
|
br i1 %t233, label %panic2997, label %ok2998
|
|
panic2997:
|
|
call void @finch_panic(ptr @.str.1895, i64 1191, ptr @.str.1896)
|
|
unreachable
|
|
ok2998:
|
|
%t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 13
|
|
%t235 = load { ptr, i64, i64 }, ptr %t234
|
|
%t236 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1
|
|
%t237 = load { ptr, i64, i64 }, ptr %t236
|
|
%t238 = call i64 @finch.gen.findStruct(ptr %t231, { ptr, i64, i64 } %t235, { ptr, i64, i64 } %t237)
|
|
%t239 = icmp sge i64 %t238, 0
|
|
br label %logic.rend2999
|
|
logic.rend2999:
|
|
br label %logic.end2996
|
|
logic.end2996:
|
|
%t240 = phi i1 [ true, %logic.from2994 ], [ %t239, %logic.rend2999 ]
|
|
br i1 %t240, label %then3000, label %endif3002
|
|
then3000:
|
|
%t241 = load ptr, ptr %a1
|
|
%t242 = load %S.ast.Node, ptr %a221
|
|
%t243 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1
|
|
%t244 = load { ptr, i64, i64 }, ptr %t243
|
|
store { ptr, i64, i64 } { ptr @.str.1897, i64 1, i64 0 }, ptr %a246
|
|
store { ptr, i64, i64 } %t244, ptr %a247
|
|
call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247)
|
|
%t248 = load { ptr, i64, i64 }, ptr %a245
|
|
store { ptr, i64, i64 } %t248, ptr %a250
|
|
store { ptr, i64, i64 } { ptr @.str.1898, i64 18, i64 0 }, ptr %a251
|
|
call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251)
|
|
%t252 = load { ptr, i64, i64 }, ptr %a249
|
|
call void @finch.gen.fail(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t252)
|
|
br label %endif3002
|
|
endif3002:
|
|
%t253 = load ptr, ptr %a1
|
|
%t254 = icmp eq ptr %t253, null
|
|
br i1 %t254, label %panic3003, label %ok3004
|
|
panic3003:
|
|
call void @finch_panic(ptr @.str.1899, i64 1194, ptr @.str.1900)
|
|
unreachable
|
|
ok3004:
|
|
%t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 13
|
|
%t256 = load { ptr, i64, i64 }, ptr %t255
|
|
store { ptr, i64, i64 } %t256, ptr %a257
|
|
call void @finch_str_copy(ptr %a258, ptr %a257)
|
|
%t259 = load { ptr, i64, i64 }, ptr %a258
|
|
%t260 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t259, 0
|
|
%t261 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1
|
|
%t262 = load { ptr, i64, i64 }, ptr %t261
|
|
store { ptr, i64, i64 } %t262, ptr %a263
|
|
call void @finch_str_copy(ptr %a264, ptr %a263)
|
|
%t265 = load { ptr, i64, i64 }, ptr %a264
|
|
%t266 = insertvalue %S.gen.EnumDef %t260, { ptr, i64, i64 } %t265, 1
|
|
store %S.gen.EnumDef %t266, ptr %a267
|
|
store i64 0, ptr %a268
|
|
%t269 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 9
|
|
store i64 0, ptr %a270
|
|
br label %each.cond3005
|
|
each.cond3005:
|
|
%t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t269, i32 0, i32 1
|
|
%t272 = load i64, ptr %t271
|
|
%t273 = load i64, ptr %a270
|
|
%t274 = icmp slt i64 %t273, %t272
|
|
br i1 %t274, label %each.body3006, label %each.end3008
|
|
each.body3006:
|
|
%t275 = load ptr, ptr %t269
|
|
%t276 = getelementptr inbounds %S.ast.Node, ptr %t275, i64 %t273
|
|
%t277 = load %S.ast.Node, ptr %t276
|
|
store %S.ast.Node %t277, ptr %a278
|
|
%t279 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 4
|
|
%t280 = getelementptr inbounds { ptr, i64, i64 }, ptr %t279, i32 0, i32 1
|
|
%t281 = load i64, ptr %t280
|
|
%t282 = icmp sgt i64 %t281, 0
|
|
br i1 %t282, label %then3009, label %endif3011
|
|
then3009:
|
|
%t283 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 4
|
|
%t284 = load { ptr, i64, i64 }, ptr %t283
|
|
store { ptr, i64, i64 } %t284, ptr %a285
|
|
%t286 = call i64 @finch_str_to_int(ptr %a285, ptr @.str.1901, i64 1198)
|
|
store i64 %t286, ptr %a268
|
|
br label %endif3011
|
|
endif3011:
|
|
%t287 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 2
|
|
%t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1
|
|
%t289 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1
|
|
%t290 = load { ptr, i64, i64 }, ptr %t289
|
|
store i64 -1, ptr %a291
|
|
%t292 = load i64, ptr %t288
|
|
%t293 = load ptr, ptr %t287
|
|
store i64 0, ptr %a294
|
|
br label %find.cond3012
|
|
find.cond3012:
|
|
%t295 = load i64, ptr %a294
|
|
%t296 = icmp slt i64 %t295, %t292
|
|
br i1 %t296, label %find.body3013, label %find.end3016
|
|
find.body3013:
|
|
%t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t295
|
|
%t298 = load { ptr, i64, i64 }, ptr %t297
|
|
store { ptr, i64, i64 } %t298, ptr %a299
|
|
store { ptr, i64, i64 } %t290, ptr %a300
|
|
%t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300)
|
|
%t302 = icmp ne i32 %t301, 0
|
|
br i1 %t302, label %find.hit3014, label %find.next3015
|
|
find.hit3014:
|
|
store i64 %t295, ptr %a291
|
|
br label %find.end3016
|
|
find.next3015:
|
|
%t303 = add i64 %t295, 1
|
|
store i64 %t303, ptr %a294
|
|
br label %find.cond3012
|
|
find.end3016:
|
|
%t304 = load i64, ptr %a291
|
|
%t305 = icmp sge i64 %t304, 0
|
|
br i1 %t305, label %then3017, label %endif3019
|
|
then3017:
|
|
%t306 = load ptr, ptr %a1
|
|
%t307 = load %S.ast.Node, ptr %a278
|
|
%t308 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1
|
|
%t309 = load { ptr, i64, i64 }, ptr %t308
|
|
store { ptr, i64, i64 } { ptr @.str.1902, i64 9, i64 0 }, ptr %a311
|
|
store { ptr, i64, i64 } %t309, ptr %a312
|
|
call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312)
|
|
%t313 = load { ptr, i64, i64 }, ptr %a310
|
|
store { ptr, i64, i64 } %t313, ptr %a315
|
|
store { ptr, i64, i64 } { ptr @.str.1903, i64 17, i64 0 }, ptr %a316
|
|
call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316)
|
|
%t317 = load { ptr, i64, i64 }, ptr %a314
|
|
%t318 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1
|
|
%t319 = load { ptr, i64, i64 }, ptr %t318
|
|
store { ptr, i64, i64 } %t317, ptr %a321
|
|
store { ptr, i64, i64 } %t319, ptr %a322
|
|
call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322)
|
|
%t323 = load { ptr, i64, i64 }, ptr %a320
|
|
store { ptr, i64, i64 } %t323, ptr %a325
|
|
store { ptr, i64, i64 } { ptr @.str.1904, i64 6, i64 0 }, ptr %a326
|
|
call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326)
|
|
%t327 = load { ptr, i64, i64 }, ptr %a324
|
|
call void @finch.gen.fail(ptr %t306, %S.ast.Node %t307, { ptr, i64, i64 } %t327)
|
|
br label %endif3019
|
|
endif3019:
|
|
%t328 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 3
|
|
%t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i32 0, i32 1
|
|
%t330 = load i64, ptr %a268
|
|
store i64 -1, ptr %a331
|
|
%t332 = load i64, ptr %t329
|
|
%t333 = load ptr, ptr %t328
|
|
store i64 0, ptr %a334
|
|
br label %find.cond3020
|
|
find.cond3020:
|
|
%t335 = load i64, ptr %a334
|
|
%t336 = icmp slt i64 %t335, %t332
|
|
br i1 %t336, label %find.body3021, label %find.end3024
|
|
find.body3021:
|
|
%t337 = getelementptr inbounds i64, ptr %t333, i64 %t335
|
|
%t338 = load i64, ptr %t337
|
|
%t339 = icmp eq i64 %t338, %t330
|
|
br i1 %t339, label %find.hit3022, label %find.next3023
|
|
find.hit3022:
|
|
store i64 %t335, ptr %a331
|
|
br label %find.end3024
|
|
find.next3023:
|
|
%t340 = add i64 %t335, 1
|
|
store i64 %t340, ptr %a334
|
|
br label %find.cond3020
|
|
find.end3024:
|
|
%t341 = load i64, ptr %a331
|
|
%t342 = icmp sge i64 %t341, 0
|
|
br i1 %t342, label %then3025, label %endif3027
|
|
then3025:
|
|
%t343 = load ptr, ptr %a1
|
|
%t344 = load %S.ast.Node, ptr %a278
|
|
%t345 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1
|
|
%t346 = load { ptr, i64, i64 }, ptr %t345
|
|
store { ptr, i64, i64 } { ptr @.str.1905, i64 16, i64 0 }, ptr %a348
|
|
store { ptr, i64, i64 } %t346, ptr %a349
|
|
call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349)
|
|
%t350 = load { ptr, i64, i64 }, ptr %a347
|
|
store { ptr, i64, i64 } %t350, ptr %a352
|
|
store { ptr, i64, i64 } { ptr @.str.1906, i64 17, i64 0 }, ptr %a353
|
|
call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353)
|
|
%t354 = load { ptr, i64, i64 }, ptr %a351
|
|
%t355 = load i64, ptr %a268
|
|
call void @finch_str_from_int(ptr %a356, i64 %t355)
|
|
%t357 = load { ptr, i64, i64 }, ptr %a356
|
|
store { ptr, i64, i64 } %t354, ptr %a359
|
|
store { ptr, i64, i64 } %t357, ptr %a360
|
|
call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360)
|
|
%t361 = load { ptr, i64, i64 }, ptr %a358
|
|
store { ptr, i64, i64 } %t361, ptr %a363
|
|
store { ptr, i64, i64 } { ptr @.str.1907, i64 20, i64 0 }, ptr %a364
|
|
call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364)
|
|
%t365 = load { ptr, i64, i64 }, ptr %a362
|
|
call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t365)
|
|
br label %endif3027
|
|
endif3027:
|
|
%t366 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 2
|
|
%t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1
|
|
%t368 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1
|
|
%t369 = load { ptr, i64, i64 }, ptr %t368
|
|
store { ptr, i64, i64 } %t369, ptr %a370
|
|
call void @finch_str_copy(ptr %a371, ptr %a370)
|
|
%t372 = load { ptr, i64, i64 }, ptr %a371
|
|
%t373 = load i64, ptr %t367
|
|
%t374 = add i64 %t373, 1
|
|
call void @finch_arr_reserve(ptr %t366, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t375 = load ptr, ptr %t366
|
|
%t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373
|
|
store { ptr, i64, i64 } %t372, ptr %t376
|
|
store i64 %t374, ptr %t367
|
|
%t377 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 3
|
|
%t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %t377, i32 0, i32 1
|
|
%t379 = load i64, ptr %a268
|
|
%t380 = load i64, ptr %t378
|
|
%t381 = add i64 %t380, 1
|
|
call void @finch_arr_reserve(ptr %t377, i64 %t381, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64))
|
|
%t382 = load ptr, ptr %t377
|
|
%t383 = getelementptr inbounds i64, ptr %t382, i64 %t380
|
|
store i64 %t379, ptr %t383
|
|
store i64 %t381, ptr %t378
|
|
%t384 = load i64, ptr %a268
|
|
%t385 = add i64 %t384, 1
|
|
store i64 %t385, ptr %a268
|
|
br label %each.step3007
|
|
each.step3007:
|
|
%t386 = load i64, ptr %a270
|
|
%t387 = add i64 %t386, 1
|
|
store i64 %t387, ptr %a270
|
|
br label %each.cond3005
|
|
each.end3008:
|
|
%t388 = load ptr, ptr %a1
|
|
%t389 = icmp eq ptr %t388, null
|
|
br i1 %t389, label %panic3028, label %ok3029
|
|
panic3028:
|
|
call void @finch_panic(ptr @.str.1908, i64 1210, ptr @.str.1909)
|
|
unreachable
|
|
ok3029:
|
|
%t390 = getelementptr inbounds %S.gen.Gen, ptr %t388, i32 0, i32 20
|
|
%t391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t390, i32 0, i32 1
|
|
%t392 = load %S.gen.EnumDef, ptr %a267
|
|
store %S.gen.EnumDef %t392, ptr %a393
|
|
call void @finch.copy.S_gen_EnumDef(ptr %a394, ptr %a393)
|
|
%t395 = load %S.gen.EnumDef, ptr %a394
|
|
%t396 = load i64, ptr %t391
|
|
%t397 = add i64 %t396, 1
|
|
call void @finch_arr_reserve(ptr %t390, i64 %t397, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64))
|
|
%t398 = load ptr, ptr %t390
|
|
%t399 = getelementptr inbounds %S.gen.EnumDef, ptr %t398, i64 %t396
|
|
store %S.gen.EnumDef %t395, ptr %t399
|
|
store i64 %t397, ptr %t391
|
|
br label %for.step2984
|
|
for.step2984:
|
|
%t400 = load i64, ptr %a198
|
|
%t401 = add i64 %t400, 1
|
|
store i64 %t401, ptr %a198
|
|
br label %for.cond2982
|
|
for.end2985:
|
|
br label %for.step2970
|
|
for.step2970:
|
|
%t402 = load i64, ptr %a166
|
|
%t403 = add i64 %t402, 1
|
|
store i64 %t403, ptr %a166
|
|
br label %for.cond2968
|
|
for.end2971:
|
|
%t404 = load ptr, ptr %a1
|
|
%t405 = icmp eq ptr %t404, null
|
|
br i1 %t405, label %panic3030, label %ok3031
|
|
panic3030:
|
|
call void @finch_panic(ptr @.str.1910, i64 1213, ptr @.str.1911)
|
|
unreachable
|
|
ok3031:
|
|
%t406 = getelementptr inbounds %S.gen.Gen, ptr %t404, i32 0, i32 24
|
|
%t407 = getelementptr inbounds %S.cimport.CImports, ptr %t406, i32 0, i32 4
|
|
%t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %t407, i32 0, i32 1
|
|
%t409 = load i64, ptr %t408
|
|
store i64 0, ptr %a410
|
|
br label %for.cond3032
|
|
for.cond3032:
|
|
%t411 = load i64, ptr %a410
|
|
%t412 = icmp slt i64 %t411, %t409
|
|
br i1 %t412, label %for.body3033, label %for.end3035
|
|
for.body3033:
|
|
%t413 = load ptr, ptr %a1
|
|
%t414 = icmp eq ptr %t413, null
|
|
br i1 %t414, label %panic3036, label %ok3037
|
|
panic3036:
|
|
call void @finch_panic(ptr @.str.1912, i64 1214, ptr @.str.1913)
|
|
unreachable
|
|
ok3037:
|
|
%t415 = getelementptr inbounds %S.gen.Gen, ptr %t413, i32 0, i32 15
|
|
%t416 = getelementptr inbounds { ptr, i64, i64 }, ptr %t415, i32 0, i32 1
|
|
%t417 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.1914, i64 1, i64 0 }, 0
|
|
%t418 = load ptr, ptr %a1
|
|
%t419 = icmp eq ptr %t418, null
|
|
br i1 %t419, label %panic3038, label %ok3039
|
|
panic3038:
|
|
call void @finch_panic(ptr @.str.1915, i64 1214, ptr @.str.1916)
|
|
unreachable
|
|
ok3039:
|
|
%t420 = getelementptr inbounds %S.gen.Gen, ptr %t418, i32 0, i32 24
|
|
%t421 = getelementptr inbounds %S.cimport.CImports, ptr %t420, i32 0, i32 4
|
|
%t422 = load i64, ptr %a410
|
|
%t423 = load { ptr, i64, i64 }, ptr %t421
|
|
%t424 = extractvalue { ptr, i64, i64 } %t423, 1
|
|
%t425 = icmp uge i64 %t422, %t424
|
|
br i1 %t425, label %range3040, label %inrange3041
|
|
range3040:
|
|
call void @finch_panic_index(ptr @.str.1917, i64 1214, i64 %t422, i64 %t424)
|
|
unreachable
|
|
inrange3041:
|
|
%t426 = extractvalue { ptr, i64, i64 } %t423, 0
|
|
%t427 = getelementptr inbounds { ptr, i64, i64 }, ptr %t426, i64 %t422
|
|
%t428 = load { ptr, i64, i64 }, ptr %t427
|
|
store { ptr, i64, i64 } %t428, ptr %a429
|
|
call void @finch_str_copy(ptr %a430, ptr %a429)
|
|
%t431 = load { ptr, i64, i64 }, ptr %a430
|
|
%t432 = insertvalue %S.gen.StructDef %t417, { ptr, i64, i64 } %t431, 1
|
|
%t433 = insertvalue %S.gen.StructDef %t432, i1 true, 2
|
|
%t434 = insertvalue %S.gen.StructDef %t433, i64 -1, 13
|
|
%t435 = load i64, ptr %a410
|
|
%t436 = insertvalue %S.gen.StructDef %t434, i64 %t435, 14
|
|
%t437 = load i64, ptr %t416
|
|
%t438 = add i64 %t437, 1
|
|
call void @finch_arr_reserve(ptr %t415, i64 %t438, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64))
|
|
%t439 = load ptr, ptr %t415
|
|
%t440 = getelementptr inbounds %S.gen.StructDef, ptr %t439, i64 %t437
|
|
store %S.gen.StructDef %t436, ptr %t440
|
|
store i64 %t438, ptr %t416
|
|
br label %for.step3034
|
|
for.step3034:
|
|
%t441 = load i64, ptr %a410
|
|
%t442 = add i64 %t441, 1
|
|
store i64 %t442, ptr %a410
|
|
br label %for.cond3032
|
|
for.end3035:
|
|
%t443 = load ptr, ptr %a1
|
|
%t444 = icmp eq ptr %t443, null
|
|
br i1 %t444, label %panic3042, label %ok3043
|
|
panic3042:
|
|
call void @finch_panic(ptr @.str.1918, i64 1216, ptr @.str.1919)
|
|
unreachable
|
|
ok3043:
|
|
%t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 15
|
|
%t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i32 0, i32 1
|
|
%t447 = load i64, ptr %t446
|
|
store i64 0, ptr %a448
|
|
br label %for.cond3044
|
|
for.cond3044:
|
|
%t449 = load i64, ptr %a448
|
|
%t450 = icmp slt i64 %t449, %t447
|
|
br i1 %t450, label %for.body3045, label %for.end3047
|
|
for.body3045:
|
|
%t451 = load ptr, ptr %a1
|
|
%t452 = load i64, ptr %a448
|
|
call void @finch.gen.resolveStruct(ptr %t451, i64 %t452)
|
|
br label %for.step3046
|
|
for.step3046:
|
|
%t453 = load i64, ptr %a448
|
|
%t454 = add i64 %t453, 1
|
|
store i64 %t454, ptr %a448
|
|
br label %for.cond3044
|
|
for.end3047:
|
|
%t455 = load ptr, ptr %a1
|
|
%t456 = icmp eq ptr %t455, null
|
|
br i1 %t456, label %panic3048, label %ok3049
|
|
panic3048:
|
|
call void @finch_panic(ptr @.str.1920, i64 1219, ptr @.str.1921)
|
|
unreachable
|
|
ok3049:
|
|
%t457 = getelementptr inbounds %S.gen.Gen, ptr %t455, i32 0, i32 0
|
|
%t458 = getelementptr inbounds { ptr, i64, i64 }, ptr %t457, i32 0, i32 1
|
|
%t459 = load i64, ptr %t458
|
|
store i64 0, ptr %a460
|
|
br label %for.cond3050
|
|
for.cond3050:
|
|
%t461 = load i64, ptr %a460
|
|
%t462 = icmp slt i64 %t461, %t459
|
|
br i1 %t462, label %for.body3051, label %for.end3053
|
|
for.body3051:
|
|
%t463 = load ptr, ptr %a1
|
|
%t464 = icmp eq ptr %t463, null
|
|
br i1 %t464, label %panic3054, label %ok3055
|
|
panic3054:
|
|
call void @finch_panic(ptr @.str.1922, i64 1220, ptr @.str.1923)
|
|
unreachable
|
|
ok3055:
|
|
%t465 = getelementptr inbounds %S.gen.Gen, ptr %t463, i32 0, i32 0
|
|
%t466 = load i64, ptr %a460
|
|
%t467 = load { ptr, i64, i64 }, ptr %t465
|
|
%t468 = extractvalue { ptr, i64, i64 } %t467, 1
|
|
%t469 = icmp uge i64 %t466, %t468
|
|
br i1 %t469, label %range3056, label %inrange3057
|
|
range3056:
|
|
call void @finch_panic_index(ptr @.str.1924, i64 1220, i64 %t466, i64 %t468)
|
|
unreachable
|
|
inrange3057:
|
|
%t470 = extractvalue { ptr, i64, i64 } %t467, 0
|
|
%t471 = getelementptr inbounds %S.ast.Program, ptr %t470, i64 %t466
|
|
%t472 = getelementptr inbounds %S.ast.Program, ptr %t471, i32 0, i32 0
|
|
%t473 = load { ptr, i64, i64 }, ptr %t472
|
|
%t474 = load ptr, ptr %a1
|
|
%t475 = icmp eq ptr %t474, null
|
|
br i1 %t475, label %panic3058, label %ok3059
|
|
panic3058:
|
|
call void @finch_panic(ptr @.str.1925, i64 1220, ptr @.str.1926)
|
|
unreachable
|
|
ok3059:
|
|
%t476 = getelementptr inbounds %S.gen.Gen, ptr %t474, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t473, ptr %a477
|
|
call void @finch_str_copy(ptr %a478, ptr %a477)
|
|
%t479 = load { ptr, i64, i64 }, ptr %a478
|
|
store { ptr, i64, i64 } %t479, ptr %t476
|
|
%t480 = load ptr, ptr %a1
|
|
%t481 = icmp eq ptr %t480, null
|
|
br i1 %t481, label %panic3060, label %ok3061
|
|
panic3060:
|
|
call void @finch_panic(ptr @.str.1927, i64 1221, ptr @.str.1928)
|
|
unreachable
|
|
ok3061:
|
|
%t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 0
|
|
%t483 = load i64, ptr %a460
|
|
%t484 = load { ptr, i64, i64 }, ptr %t482
|
|
%t485 = extractvalue { ptr, i64, i64 } %t484, 1
|
|
%t486 = icmp uge i64 %t483, %t485
|
|
br i1 %t486, label %range3062, label %inrange3063
|
|
range3062:
|
|
call void @finch_panic_index(ptr @.str.1929, i64 1221, i64 %t483, i64 %t485)
|
|
unreachable
|
|
inrange3063:
|
|
%t487 = extractvalue { ptr, i64, i64 } %t484, 0
|
|
%t488 = getelementptr inbounds %S.ast.Program, ptr %t487, i64 %t483
|
|
%t489 = getelementptr inbounds %S.ast.Program, ptr %t488, i32 0, i32 8
|
|
%t490 = getelementptr inbounds { ptr, i64, i64 }, ptr %t489, i32 0, i32 1
|
|
%t491 = load i64, ptr %t490
|
|
store i64 0, ptr %a492
|
|
br label %for.cond3064
|
|
for.cond3064:
|
|
%t493 = load i64, ptr %a492
|
|
%t494 = icmp slt i64 %t493, %t491
|
|
br i1 %t494, label %for.body3065, label %for.end3067
|
|
for.body3065:
|
|
%t495 = load ptr, ptr %a1
|
|
%t496 = icmp eq ptr %t495, null
|
|
br i1 %t496, label %panic3068, label %ok3069
|
|
panic3068:
|
|
call void @finch_panic(ptr @.str.1930, i64 1222, ptr @.str.1931)
|
|
unreachable
|
|
ok3069:
|
|
%t497 = getelementptr inbounds %S.gen.Gen, ptr %t495, i32 0, i32 0
|
|
%t498 = load i64, ptr %a460
|
|
%t499 = load { ptr, i64, i64 }, ptr %t497
|
|
%t500 = extractvalue { ptr, i64, i64 } %t499, 1
|
|
%t501 = icmp uge i64 %t498, %t500
|
|
br i1 %t501, label %range3070, label %inrange3071
|
|
range3070:
|
|
call void @finch_panic_index(ptr @.str.1932, i64 1222, i64 %t498, i64 %t500)
|
|
unreachable
|
|
inrange3071:
|
|
%t502 = extractvalue { ptr, i64, i64 } %t499, 0
|
|
%t503 = getelementptr inbounds %S.ast.Program, ptr %t502, i64 %t498
|
|
%t504 = getelementptr inbounds %S.ast.Program, ptr %t503, i32 0, i32 8
|
|
%t505 = load i64, ptr %a492
|
|
%t506 = load { ptr, i64, i64 }, ptr %t504
|
|
%t507 = extractvalue { ptr, i64, i64 } %t506, 1
|
|
%t508 = icmp uge i64 %t505, %t507
|
|
br i1 %t508, label %range3072, label %inrange3073
|
|
range3072:
|
|
call void @finch_panic_index(ptr @.str.1933, i64 1222, i64 %t505, i64 %t507)
|
|
unreachable
|
|
inrange3073:
|
|
%t509 = extractvalue { ptr, i64, i64 } %t506, 0
|
|
%t510 = getelementptr inbounds %S.ast.Node, ptr %t509, i64 %t505
|
|
%t511 = load %S.ast.Node, ptr %t510
|
|
store %S.ast.Node %t511, ptr %a512
|
|
call void @finch.copy.S_ast_Node(ptr %a513, ptr %a512)
|
|
%t514 = load %S.ast.Node, ptr %a513
|
|
store %S.ast.Node %t514, ptr %a515
|
|
%t516 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 3
|
|
%t517 = getelementptr inbounds { ptr, i64, i64 }, ptr %t516, i32 0, i32 1
|
|
%t518 = load i64, ptr %t517
|
|
%t519 = icmp sgt i64 %t518, 0
|
|
br i1 %t519, label %then3074, label %endif3076
|
|
then3074:
|
|
%t520 = load ptr, ptr %a1
|
|
%t521 = load ptr, ptr %a1
|
|
%t522 = icmp eq ptr %t521, null
|
|
br i1 %t522, label %panic3077, label %ok3078
|
|
panic3077:
|
|
call void @finch_panic(ptr @.str.1934, i64 1225, ptr @.str.1935)
|
|
unreachable
|
|
ok3078:
|
|
%t523 = getelementptr inbounds %S.gen.Gen, ptr %t521, i32 0, i32 13
|
|
%t524 = load { ptr, i64, i64 }, ptr %t523
|
|
%t525 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t526 = load { ptr, i64, i64 }, ptr %t525
|
|
%t527 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t528 = load { ptr, i64, i64 }, ptr %t527
|
|
%t529 = call i64 @finch.gen.findTemplate(ptr %t520, { ptr, i64, i64 } %t524, { ptr, i64, i64 } %t526, { ptr, i64, i64 } %t528, i1 false)
|
|
%t530 = icmp sge i64 %t529, 0
|
|
br i1 %t530, label %then3079, label %endif3081
|
|
then3079:
|
|
%t531 = load ptr, ptr %a1
|
|
%t532 = load %S.ast.Node, ptr %a515
|
|
%t533 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t534 = load { ptr, i64, i64 }, ptr %t533
|
|
store { ptr, i64, i64 } { ptr @.str.1936, i64 10, i64 0 }, ptr %a536
|
|
store { ptr, i64, i64 } %t534, ptr %a537
|
|
call void @finch_str_concat(ptr %a535, ptr %a536, ptr %a537)
|
|
%t538 = load { ptr, i64, i64 }, ptr %a535
|
|
store { ptr, i64, i64 } %t538, ptr %a540
|
|
store { ptr, i64, i64 } { ptr @.str.1937, i64 18, i64 0 }, ptr %a541
|
|
call void @finch_str_concat(ptr %a539, ptr %a540, ptr %a541)
|
|
%t542 = load { ptr, i64, i64 }, ptr %a539
|
|
call void @finch.gen.fail(ptr %t531, %S.ast.Node %t532, { ptr, i64, i64 } %t542)
|
|
br label %endif3081
|
|
endif3081:
|
|
%t543 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1
|
|
%t545 = load i64, ptr %t544
|
|
%t546 = icmp sgt i64 %t545, 0
|
|
br label %logic.from3082
|
|
logic.from3082:
|
|
br i1 %t546, label %logic.rhs3083, label %logic.end3084
|
|
logic.rhs3083:
|
|
%t547 = load ptr, ptr %a1
|
|
%t548 = load ptr, ptr %a1
|
|
%t549 = icmp eq ptr %t548, null
|
|
br i1 %t549, label %panic3085, label %ok3086
|
|
panic3085:
|
|
call void @finch_panic(ptr @.str.1938, i64 1228, ptr @.str.1939)
|
|
unreachable
|
|
ok3086:
|
|
%t550 = getelementptr inbounds %S.gen.Gen, ptr %t548, i32 0, i32 13
|
|
%t551 = load { ptr, i64, i64 }, ptr %t550
|
|
%t552 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t553 = load { ptr, i64, i64 }, ptr %t552
|
|
%t554 = call i64 @finch.gen.findTemplate(ptr %t547, { ptr, i64, i64 } %t551, { ptr, i64, i64 } %t553, { ptr, i64, i64 } { ptr @.str.1940, i64 0, i64 0 }, i1 true)
|
|
%t555 = icmp slt i64 %t554, 0
|
|
br label %logic.rend3087
|
|
logic.rend3087:
|
|
br label %logic.end3084
|
|
logic.end3084:
|
|
%t556 = phi i1 [ false, %logic.from3082 ], [ %t555, %logic.rend3087 ]
|
|
br i1 %t556, label %then3088, label %endif3090
|
|
then3088:
|
|
%t557 = load ptr, ptr %a1
|
|
%t558 = load %S.ast.Node, ptr %a515
|
|
%t559 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t560 = load { ptr, i64, i64 }, ptr %t559
|
|
store { ptr, i64, i64 } { ptr @.str.1941, i64 34, i64 0 }, ptr %a562
|
|
store { ptr, i64, i64 } %t560, ptr %a563
|
|
call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563)
|
|
%t564 = load { ptr, i64, i64 }, ptr %a561
|
|
store { ptr, i64, i64 } %t564, ptr %a566
|
|
store { ptr, i64, i64 } { ptr @.str.1942, i64 53, i64 0 }, ptr %a567
|
|
call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567)
|
|
%t568 = load { ptr, i64, i64 }, ptr %a565
|
|
call void @finch.gen.fail(ptr %t557, %S.ast.Node %t558, { ptr, i64, i64 } %t568)
|
|
br label %endif3090
|
|
endif3090:
|
|
%t569 = load ptr, ptr %a1
|
|
%t570 = icmp eq ptr %t569, null
|
|
br i1 %t570, label %panic3091, label %ok3092
|
|
panic3091:
|
|
call void @finch_panic(ptr @.str.1943, i64 1231, ptr @.str.1944)
|
|
unreachable
|
|
ok3092:
|
|
%t571 = getelementptr inbounds %S.gen.Gen, ptr %t569, i32 0, i32 16
|
|
%t572 = getelementptr inbounds { ptr, i64, i64 }, ptr %t571, i32 0, i32 1
|
|
%t573 = load ptr, ptr %a1
|
|
%t574 = icmp eq ptr %t573, null
|
|
br i1 %t574, label %panic3093, label %ok3094
|
|
panic3093:
|
|
call void @finch_panic(ptr @.str.1945, i64 1231, ptr @.str.1946)
|
|
unreachable
|
|
ok3094:
|
|
%t575 = getelementptr inbounds %S.gen.Gen, ptr %t573, i32 0, i32 13
|
|
%t576 = load { ptr, i64, i64 }, ptr %t575
|
|
store { ptr, i64, i64 } %t576, ptr %a577
|
|
call void @finch_str_copy(ptr %a578, ptr %a577)
|
|
%t579 = load { ptr, i64, i64 }, ptr %a578
|
|
%t580 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t579, 0
|
|
%t581 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t582 = load { ptr, i64, i64 }, ptr %t581
|
|
store { ptr, i64, i64 } %t582, ptr %a583
|
|
call void @finch_str_copy(ptr %a584, ptr %a583)
|
|
%t585 = load { ptr, i64, i64 }, ptr %a584
|
|
%t586 = insertvalue %S.gen.Template %t580, { ptr, i64, i64 } %t585, 1
|
|
%t587 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t588 = load { ptr, i64, i64 }, ptr %t587
|
|
store { ptr, i64, i64 } %t588, ptr %a589
|
|
call void @finch_str_copy(ptr %a590, ptr %a589)
|
|
%t591 = load { ptr, i64, i64 }, ptr %a590
|
|
%t592 = insertvalue %S.gen.Template %t586, { ptr, i64, i64 } %t591, 2
|
|
%t593 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 3
|
|
%t594 = load { ptr, i64, i64 }, ptr %t593
|
|
store { ptr, i64, i64 } %t594, ptr %a595
|
|
call void @finch.copy.arr_str(ptr %a596, ptr %a595)
|
|
%t597 = load { ptr, i64, i64 }, ptr %a596
|
|
%t598 = insertvalue %S.gen.Template %t592, { ptr, i64, i64 } %t597, 3
|
|
%t599 = load i64, ptr %a460
|
|
%t600 = insertvalue %S.gen.Template %t598, i64 %t599, 4
|
|
%t601 = load i64, ptr %a492
|
|
%t602 = insertvalue %S.gen.Template %t600, i64 %t601, 5
|
|
%t603 = load i64, ptr %t572
|
|
%t604 = add i64 %t603, 1
|
|
call void @finch_arr_reserve(ptr %t571, i64 %t604, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64))
|
|
%t605 = load ptr, ptr %t571
|
|
%t606 = getelementptr inbounds %S.gen.Template, ptr %t605, i64 %t603
|
|
store %S.gen.Template %t602, ptr %t606
|
|
store i64 %t604, ptr %t572
|
|
br label %for.step3066
|
|
endif3076:
|
|
%t607 = load ptr, ptr %a1
|
|
%t608 = icmp eq ptr %t607, null
|
|
br i1 %t608, label %panic3095, label %ok3096
|
|
panic3095:
|
|
call void @finch_panic(ptr @.str.1947, i64 1234, ptr @.str.1948)
|
|
unreachable
|
|
ok3096:
|
|
%t609 = getelementptr inbounds %S.gen.Gen, ptr %t607, i32 0, i32 13
|
|
%t610 = load { ptr, i64, i64 }, ptr %t609
|
|
store { ptr, i64, i64 } %t610, ptr %a611
|
|
call void @finch_str_copy(ptr %a612, ptr %a611)
|
|
%t613 = load { ptr, i64, i64 }, ptr %a612
|
|
store { ptr, i64, i64 } %t613, ptr %a614
|
|
store i1 false, ptr %a615
|
|
%t616 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i32 0, i32 1
|
|
%t618 = load i64, ptr %t617
|
|
%t619 = icmp sgt i64 %t618, 0
|
|
br label %logic.from3097
|
|
logic.from3097:
|
|
br i1 %t619, label %logic.rhs3098, label %logic.end3099
|
|
logic.rhs3098:
|
|
%t620 = load ptr, ptr %a1
|
|
%t621 = load ptr, ptr %a1
|
|
%t622 = icmp eq ptr %t621, null
|
|
br i1 %t622, label %panic3100, label %ok3101
|
|
panic3100:
|
|
call void @finch_panic(ptr @.str.1949, i64 1236, ptr @.str.1950)
|
|
unreachable
|
|
ok3101:
|
|
%t623 = getelementptr inbounds %S.gen.Gen, ptr %t621, i32 0, i32 13
|
|
%t624 = load { ptr, i64, i64 }, ptr %t623
|
|
%t625 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t626 = load { ptr, i64, i64 }, ptr %t625
|
|
%t627 = call i64 @finch.gen.findEnum(ptr %t620, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626)
|
|
%t628 = icmp sge i64 %t627, 0
|
|
br label %logic.rend3102
|
|
logic.rend3102:
|
|
br label %logic.end3099
|
|
logic.end3099:
|
|
%t629 = phi i1 [ false, %logic.from3097 ], [ %t628, %logic.rend3102 ]
|
|
br i1 %t629, label %then3103, label %else3104
|
|
then3103:
|
|
store i1 true, ptr %a615
|
|
%t630 = load ptr, ptr %a1
|
|
%t631 = load { ptr, i64, i64 }, ptr %a614
|
|
%t632 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t633 = load { ptr, i64, i64 }, ptr %t632
|
|
%t634 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t635 = load { ptr, i64, i64 }, ptr %t634
|
|
%t636 = call i64 @finch.gen.findMethod(ptr %t630, { ptr, i64, i64 } %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635)
|
|
%t637 = icmp sge i64 %t636, 0
|
|
br i1 %t637, label %then3106, label %endif3108
|
|
then3106:
|
|
%t638 = load ptr, ptr %a1
|
|
%t639 = load %S.ast.Node, ptr %a515
|
|
%t640 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t641 = load { ptr, i64, i64 }, ptr %t640
|
|
store { ptr, i64, i64 } { ptr @.str.1951, i64 11, i64 0 }, ptr %a643
|
|
store { ptr, i64, i64 } %t641, ptr %a644
|
|
call void @finch_str_concat(ptr %a642, ptr %a643, ptr %a644)
|
|
%t645 = load { ptr, i64, i64 }, ptr %a642
|
|
store { ptr, i64, i64 } %t645, ptr %a647
|
|
store { ptr, i64, i64 } { ptr @.str.1952, i64 1, i64 0 }, ptr %a648
|
|
call void @finch_str_concat(ptr %a646, ptr %a647, ptr %a648)
|
|
%t649 = load { ptr, i64, i64 }, ptr %a646
|
|
%t650 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t651 = load { ptr, i64, i64 }, ptr %t650
|
|
store { ptr, i64, i64 } %t649, ptr %a653
|
|
store { ptr, i64, i64 } %t651, ptr %a654
|
|
call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654)
|
|
%t655 = load { ptr, i64, i64 }, ptr %a652
|
|
store { ptr, i64, i64 } %t655, ptr %a657
|
|
store { ptr, i64, i64 } { ptr @.str.1953, i64 17, i64 0 }, ptr %a658
|
|
call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658)
|
|
%t659 = load { ptr, i64, i64 }, ptr %a656
|
|
call void @finch.gen.fail(ptr %t638, %S.ast.Node %t639, { ptr, i64, i64 } %t659)
|
|
br label %endif3108
|
|
endif3108:
|
|
br label %endif3105
|
|
else3104:
|
|
%t660 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t661 = getelementptr inbounds { ptr, i64, i64 }, ptr %t660, i32 0, i32 1
|
|
%t662 = load i64, ptr %t661
|
|
%t663 = icmp sgt i64 %t662, 0
|
|
br i1 %t663, label %then3109, label %else3110
|
|
then3109:
|
|
%t664 = load ptr, ptr %a1
|
|
%t665 = load ptr, ptr %a1
|
|
%t666 = icmp eq ptr %t665, null
|
|
br i1 %t666, label %panic3112, label %ok3113
|
|
panic3112:
|
|
call void @finch_panic(ptr @.str.1954, i64 1242, ptr @.str.1955)
|
|
unreachable
|
|
ok3113:
|
|
%t667 = getelementptr inbounds %S.gen.Gen, ptr %t665, i32 0, i32 13
|
|
%t668 = load { ptr, i64, i64 }, ptr %t667
|
|
%t669 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t670 = load { ptr, i64, i64 }, ptr %t669
|
|
%t671 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t668, { ptr, i64, i64 } %t670)
|
|
store i64 %t671, ptr %a672
|
|
%t673 = load i64, ptr %a672
|
|
%t674 = icmp slt i64 %t673, 0
|
|
br label %logic.from3114
|
|
logic.from3114:
|
|
br i1 %t674, label %logic.rhs3115, label %logic.end3116
|
|
logic.rhs3115:
|
|
%t675 = load ptr, ptr %a1
|
|
%t676 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t677 = load { ptr, i64, i64 }, ptr %t676
|
|
%t678 = call i64 @finch.gen.findStruct(ptr %t675, { ptr, i64, i64 } { ptr @.str.1956, i64 1, i64 0 }, { ptr, i64, i64 } %t677)
|
|
%t679 = icmp sge i64 %t678, 0
|
|
br label %logic.rend3117
|
|
logic.rend3117:
|
|
br label %logic.end3116
|
|
logic.end3116:
|
|
%t680 = phi i1 [ false, %logic.from3114 ], [ %t679, %logic.rend3117 ]
|
|
br i1 %t680, label %then3118, label %endif3120
|
|
then3118:
|
|
%t681 = load ptr, ptr %a1
|
|
%t682 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t683 = load { ptr, i64, i64 }, ptr %t682
|
|
%t684 = call i64 @finch.gen.findStruct(ptr %t681, { ptr, i64, i64 } { ptr @.str.1957, i64 1, i64 0 }, { ptr, i64, i64 } %t683)
|
|
store i64 %t684, ptr %a672
|
|
store { ptr, i64, i64 } { ptr @.str.1958, i64 1, i64 0 }, ptr %a614
|
|
br label %endif3120
|
|
endif3120:
|
|
%t685 = load i64, ptr %a672
|
|
%t686 = icmp slt i64 %t685, 0
|
|
br i1 %t686, label %then3121, label %endif3123
|
|
then3121:
|
|
%t687 = load ptr, ptr %a1
|
|
%t688 = load %S.ast.Node, ptr %a515
|
|
%t689 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t690 = load { ptr, i64, i64 }, ptr %t689
|
|
store { ptr, i64, i64 } { ptr @.str.1959, i64 26, i64 0 }, ptr %a692
|
|
store { ptr, i64, i64 } %t690, ptr %a693
|
|
call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693)
|
|
%t694 = load { ptr, i64, i64 }, ptr %a691
|
|
store { ptr, i64, i64 } %t694, ptr %a696
|
|
store { ptr, i64, i64 } { ptr @.str.1960, i64 76, i64 0 }, ptr %a697
|
|
call void @finch_str_concat(ptr %a695, ptr %a696, ptr %a697)
|
|
%t698 = load { ptr, i64, i64 }, ptr %a695
|
|
call void @finch.gen.fail(ptr %t687, %S.ast.Node %t688, { ptr, i64, i64 } %t698)
|
|
br label %endif3123
|
|
endif3123:
|
|
%t699 = load ptr, ptr %a1
|
|
%t700 = load { ptr, i64, i64 }, ptr %a614
|
|
%t701 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t702 = load { ptr, i64, i64 }, ptr %t701
|
|
%t703 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t704 = load { ptr, i64, i64 }, ptr %t703
|
|
%t705 = call i64 @finch.gen.findMethod(ptr %t699, { ptr, i64, i64 } %t700, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t704)
|
|
%t706 = icmp sge i64 %t705, 0
|
|
br i1 %t706, label %then3124, label %endif3126
|
|
then3124:
|
|
%t707 = load ptr, ptr %a1
|
|
%t708 = load %S.ast.Node, ptr %a515
|
|
%t709 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t710 = load { ptr, i64, i64 }, ptr %t709
|
|
store { ptr, i64, i64 } { ptr @.str.1961, i64 11, i64 0 }, ptr %a712
|
|
store { ptr, i64, i64 } %t710, ptr %a713
|
|
call void @finch_str_concat(ptr %a711, ptr %a712, ptr %a713)
|
|
%t714 = load { ptr, i64, i64 }, ptr %a711
|
|
store { ptr, i64, i64 } %t714, ptr %a716
|
|
store { ptr, i64, i64 } { ptr @.str.1962, i64 1, i64 0 }, ptr %a717
|
|
call void @finch_str_concat(ptr %a715, ptr %a716, ptr %a717)
|
|
%t718 = load { ptr, i64, i64 }, ptr %a715
|
|
%t719 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t720 = load { ptr, i64, i64 }, ptr %t719
|
|
store { ptr, i64, i64 } %t718, ptr %a722
|
|
store { ptr, i64, i64 } %t720, ptr %a723
|
|
call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723)
|
|
%t724 = load { ptr, i64, i64 }, ptr %a721
|
|
store { ptr, i64, i64 } %t724, ptr %a726
|
|
store { ptr, i64, i64 } { ptr @.str.1963, i64 17, i64 0 }, ptr %a727
|
|
call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727)
|
|
%t728 = load { ptr, i64, i64 }, ptr %a725
|
|
call void @finch.gen.fail(ptr %t707, %S.ast.Node %t708, { ptr, i64, i64 } %t728)
|
|
br label %endif3126
|
|
endif3126:
|
|
%t729 = load ptr, ptr %a1
|
|
%t730 = icmp eq ptr %t729, null
|
|
br i1 %t730, label %panic3127, label %ok3128
|
|
panic3127:
|
|
call void @finch_panic(ptr @.str.1964, i64 1253, ptr @.str.1965)
|
|
unreachable
|
|
ok3128:
|
|
%t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 15
|
|
%t732 = load i64, ptr %a672
|
|
%t733 = load { ptr, i64, i64 }, ptr %t731
|
|
%t734 = extractvalue { ptr, i64, i64 } %t733, 1
|
|
%t735 = icmp uge i64 %t732, %t734
|
|
br i1 %t735, label %range3129, label %inrange3130
|
|
range3129:
|
|
call void @finch_panic_index(ptr @.str.1966, i64 1253, i64 %t732, i64 %t734)
|
|
unreachable
|
|
inrange3130:
|
|
%t736 = extractvalue { ptr, i64, i64 } %t733, 0
|
|
%t737 = getelementptr inbounds %S.gen.StructDef, ptr %t736, i64 %t732
|
|
%t738 = getelementptr inbounds %S.gen.StructDef, ptr %t737, i32 0, i32 11
|
|
%t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i32 0, i32 1
|
|
%t740 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t741 = load { ptr, i64, i64 }, ptr %t740
|
|
store i64 -1, ptr %a742
|
|
%t743 = load i64, ptr %t739
|
|
%t744 = load ptr, ptr %t738
|
|
store i64 0, ptr %a745
|
|
br label %find.cond3131
|
|
find.cond3131:
|
|
%t746 = load i64, ptr %a745
|
|
%t747 = icmp slt i64 %t746, %t743
|
|
br i1 %t747, label %find.body3132, label %find.end3135
|
|
find.body3132:
|
|
%t748 = getelementptr inbounds { ptr, i64, i64 }, ptr %t744, i64 %t746
|
|
%t749 = load { ptr, i64, i64 }, ptr %t748
|
|
store { ptr, i64, i64 } %t749, ptr %a750
|
|
store { ptr, i64, i64 } %t741, ptr %a751
|
|
%t752 = call i32 @finch_str_eq(ptr %a750, ptr %a751)
|
|
%t753 = icmp ne i32 %t752, 0
|
|
br i1 %t753, label %find.hit3133, label %find.next3134
|
|
find.hit3133:
|
|
store i64 %t746, ptr %a742
|
|
br label %find.end3135
|
|
find.next3134:
|
|
%t754 = add i64 %t746, 1
|
|
store i64 %t754, ptr %a745
|
|
br label %find.cond3131
|
|
find.end3135:
|
|
%t755 = load i64, ptr %a742
|
|
%t756 = icmp sge i64 %t755, 0
|
|
br i1 %t756, label %then3136, label %endif3138
|
|
then3136:
|
|
%t757 = load ptr, ptr %a1
|
|
%t758 = load %S.ast.Node, ptr %a515
|
|
%t759 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t760 = load { ptr, i64, i64 }, ptr %t759
|
|
store { ptr, i64, i64 } { ptr @.str.1967, i64 11, i64 0 }, ptr %a762
|
|
store { ptr, i64, i64 } %t760, ptr %a763
|
|
call void @finch_str_concat(ptr %a761, ptr %a762, ptr %a763)
|
|
%t764 = load { ptr, i64, i64 }, ptr %a761
|
|
store { ptr, i64, i64 } %t764, ptr %a766
|
|
store { ptr, i64, i64 } { ptr @.str.1968, i64 28, i64 0 }, ptr %a767
|
|
call void @finch_str_concat(ptr %a765, ptr %a766, ptr %a767)
|
|
%t768 = load { ptr, i64, i64 }, ptr %a765
|
|
%t769 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t770 = load { ptr, i64, i64 }, ptr %t769
|
|
store { ptr, i64, i64 } %t768, ptr %a772
|
|
store { ptr, i64, i64 } %t770, ptr %a773
|
|
call void @finch_str_concat(ptr %a771, ptr %a772, ptr %a773)
|
|
%t774 = load { ptr, i64, i64 }, ptr %a771
|
|
store { ptr, i64, i64 } %t774, ptr %a776
|
|
store { ptr, i64, i64 } { ptr @.str.1969, i64 1, i64 0 }, ptr %a777
|
|
call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777)
|
|
%t778 = load { ptr, i64, i64 }, ptr %a775
|
|
call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t778)
|
|
br label %endif3138
|
|
endif3138:
|
|
br label %endif3111
|
|
else3110:
|
|
%t779 = load ptr, ptr %a1
|
|
%t780 = load ptr, ptr %a1
|
|
%t781 = icmp eq ptr %t780, null
|
|
br i1 %t781, label %panic3139, label %ok3140
|
|
panic3139:
|
|
call void @finch_panic(ptr @.str.1970, i64 1257, ptr @.str.1971)
|
|
unreachable
|
|
ok3140:
|
|
%t782 = getelementptr inbounds %S.gen.Gen, ptr %t780, i32 0, i32 13
|
|
%t783 = load { ptr, i64, i64 }, ptr %t782
|
|
%t784 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t785 = load { ptr, i64, i64 }, ptr %t784
|
|
%t786 = call i64 @finch.gen.findFn(ptr %t779, { ptr, i64, i64 } %t783, { ptr, i64, i64 } %t785)
|
|
%t787 = icmp sge i64 %t786, 0
|
|
br i1 %t787, label %then3141, label %endif3143
|
|
then3141:
|
|
%t788 = load ptr, ptr %a1
|
|
%t789 = load %S.ast.Node, ptr %a515
|
|
%t790 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t791 = load { ptr, i64, i64 }, ptr %t790
|
|
store { ptr, i64, i64 } { ptr @.str.1972, i64 10, i64 0 }, ptr %a793
|
|
store { ptr, i64, i64 } %t791, ptr %a794
|
|
call void @finch_str_concat(ptr %a792, ptr %a793, ptr %a794)
|
|
%t795 = load { ptr, i64, i64 }, ptr %a792
|
|
store { ptr, i64, i64 } %t795, ptr %a797
|
|
store { ptr, i64, i64 } { ptr @.str.1973, i64 18, i64 0 }, ptr %a798
|
|
call void @finch_str_concat(ptr %a796, ptr %a797, ptr %a798)
|
|
%t799 = load { ptr, i64, i64 }, ptr %a796
|
|
call void @finch.gen.fail(ptr %t788, %S.ast.Node %t789, { ptr, i64, i64 } %t799)
|
|
br label %endif3143
|
|
endif3143:
|
|
%t800 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t801 = load { ptr, i64, i64 }, ptr %t800
|
|
%t802 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t801)
|
|
br i1 %t802, label %then3144, label %endif3146
|
|
then3144:
|
|
%t803 = load ptr, ptr %a1
|
|
%t804 = load %S.ast.Node, ptr %a515
|
|
%t805 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t806 = load { ptr, i64, i64 }, ptr %t805
|
|
store { ptr, i64, i64 } { ptr @.str.1974, i64 1, i64 0 }, ptr %a808
|
|
store { ptr, i64, i64 } %t806, ptr %a809
|
|
call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809)
|
|
%t810 = load { ptr, i64, i64 }, ptr %a807
|
|
store { ptr, i64, i64 } %t810, ptr %a812
|
|
store { ptr, i64, i64 } { ptr @.str.1975, i64 43, i64 0 }, ptr %a813
|
|
call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813)
|
|
%t814 = load { ptr, i64, i64 }, ptr %a811
|
|
call void @finch.gen.fail(ptr %t803, %S.ast.Node %t804, { ptr, i64, i64 } %t814)
|
|
br label %endif3146
|
|
endif3146:
|
|
br label %endif3111
|
|
endif3111:
|
|
br label %endif3105
|
|
endif3105:
|
|
%t815 = load ptr, ptr %a1
|
|
%t816 = icmp eq ptr %t815, null
|
|
br i1 %t816, label %panic3147, label %ok3148
|
|
panic3147:
|
|
call void @finch_panic(ptr @.str.1976, i64 1264, ptr @.str.1977)
|
|
unreachable
|
|
ok3148:
|
|
%t817 = getelementptr inbounds %S.gen.Gen, ptr %t815, i32 0, i32 13
|
|
%t818 = load { ptr, i64, i64 }, ptr %t817
|
|
store { ptr, i64, i64 } %t818, ptr %a819
|
|
call void @finch_str_copy(ptr %a820, ptr %a819)
|
|
%t821 = load { ptr, i64, i64 }, ptr %a820
|
|
%t822 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t821, 0
|
|
%t823 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t824 = load { ptr, i64, i64 }, ptr %t823
|
|
store { ptr, i64, i64 } %t824, ptr %a825
|
|
call void @finch_str_copy(ptr %a826, ptr %a825)
|
|
%t827 = load { ptr, i64, i64 }, ptr %a826
|
|
%t828 = insertvalue %S.gen.FnSig %t822, { ptr, i64, i64 } %t827, 1
|
|
%t829 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t830 = load { ptr, i64, i64 }, ptr %t829
|
|
store { ptr, i64, i64 } %t830, ptr %a831
|
|
call void @finch_str_copy(ptr %a832, ptr %a831)
|
|
%t833 = load { ptr, i64, i64 }, ptr %a832
|
|
%t834 = insertvalue %S.gen.FnSig %t828, { ptr, i64, i64 } %t833, 2
|
|
%t835 = load { ptr, i64, i64 }, ptr %a614
|
|
store { ptr, i64, i64 } %t835, ptr %a836
|
|
call void @finch_str_copy(ptr %a837, ptr %a836)
|
|
%t838 = load { ptr, i64, i64 }, ptr %a837
|
|
%t839 = insertvalue %S.gen.FnSig %t834, { ptr, i64, i64 } %t838, 3
|
|
%t840 = load i1, ptr %a615
|
|
%t841 = insertvalue %S.gen.FnSig %t839, i1 %t840, 4
|
|
%t842 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 8
|
|
%t843 = load i1, ptr %t842
|
|
%t844 = insertvalue %S.gen.FnSig %t841, i1 %t843, 5
|
|
%t845 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 7
|
|
%t846 = load i1, ptr %t845
|
|
%t847 = insertvalue %S.gen.FnSig %t844, i1 %t846, 9
|
|
%t848 = load i64, ptr %a460
|
|
%t849 = insertvalue %S.gen.FnSig %t847, i64 %t848, 16
|
|
%t850 = load i64, ptr %a492
|
|
%t851 = insertvalue %S.gen.FnSig %t849, i64 %t850, 17
|
|
store %S.gen.FnSig %t851, ptr %a852
|
|
%t853 = load ptr, ptr %a1
|
|
%t854 = icmp eq ptr %t853, null
|
|
br i1 %t854, label %panic3149, label %ok3150
|
|
panic3149:
|
|
call void @finch_panic(ptr @.str.1979, i64 1265, ptr @.str.1980)
|
|
unreachable
|
|
ok3150:
|
|
%t855 = getelementptr inbounds %S.gen.Gen, ptr %t853, i32 0, i32 13
|
|
%t856 = load { ptr, i64, i64 }, ptr %t855
|
|
%t857 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t856)
|
|
store { ptr, i64, i64 } { ptr @.str.1978, i64 7, i64 0 }, ptr %a859
|
|
store { ptr, i64, i64 } %t857, ptr %a860
|
|
call void @finch_str_concat(ptr %a858, ptr %a859, ptr %a860)
|
|
%t861 = load { ptr, i64, i64 }, ptr %a858
|
|
store { ptr, i64, i64 } %t861, ptr %a863
|
|
store { ptr, i64, i64 } { ptr @.str.1981, i64 1, i64 0 }, ptr %a864
|
|
call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864)
|
|
%t865 = load { ptr, i64, i64 }, ptr %a862
|
|
%t866 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t867 = load { ptr, i64, i64 }, ptr %t866
|
|
store { ptr, i64, i64 } %t865, ptr %a869
|
|
store { ptr, i64, i64 } %t867, ptr %a870
|
|
call void @finch_str_concat(ptr %a868, ptr %a869, ptr %a870)
|
|
%t871 = load { ptr, i64, i64 }, ptr %a868
|
|
%t872 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 11
|
|
store { ptr, i64, i64 } %t871, ptr %t872
|
|
%t873 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t874 = getelementptr inbounds { ptr, i64, i64 }, ptr %t873, i32 0, i32 1
|
|
%t875 = load i64, ptr %t874
|
|
%t876 = icmp sgt i64 %t875, 0
|
|
br i1 %t876, label %then3151, label %endif3153
|
|
then3151:
|
|
%t877 = load ptr, ptr %a1
|
|
%t878 = icmp eq ptr %t877, null
|
|
br i1 %t878, label %panic3154, label %ok3155
|
|
panic3154:
|
|
call void @finch_panic(ptr @.str.1983, i64 1267, ptr @.str.1984)
|
|
unreachable
|
|
ok3155:
|
|
%t879 = getelementptr inbounds %S.gen.Gen, ptr %t877, i32 0, i32 13
|
|
%t880 = load { ptr, i64, i64 }, ptr %t879
|
|
%t881 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t880)
|
|
store { ptr, i64, i64 } { ptr @.str.1982, i64 7, i64 0 }, ptr %a883
|
|
store { ptr, i64, i64 } %t881, ptr %a884
|
|
call void @finch_str_concat(ptr %a882, ptr %a883, ptr %a884)
|
|
%t885 = load { ptr, i64, i64 }, ptr %a882
|
|
store { ptr, i64, i64 } %t885, ptr %a887
|
|
store { ptr, i64, i64 } { ptr @.str.1985, i64 1, i64 0 }, ptr %a888
|
|
call void @finch_str_concat(ptr %a886, ptr %a887, ptr %a888)
|
|
%t889 = load { ptr, i64, i64 }, ptr %a886
|
|
%t890 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t891 = load { ptr, i64, i64 }, ptr %t890
|
|
store { ptr, i64, i64 } %t889, ptr %a893
|
|
store { ptr, i64, i64 } %t891, ptr %a894
|
|
call void @finch_str_concat(ptr %a892, ptr %a893, ptr %a894)
|
|
%t895 = load { ptr, i64, i64 }, ptr %a892
|
|
store { ptr, i64, i64 } %t895, ptr %a897
|
|
store { ptr, i64, i64 } { ptr @.str.1986, i64 1, i64 0 }, ptr %a898
|
|
call void @finch_str_concat(ptr %a896, ptr %a897, ptr %a898)
|
|
%t899 = load { ptr, i64, i64 }, ptr %a896
|
|
%t900 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1
|
|
%t901 = load { ptr, i64, i64 }, ptr %t900
|
|
store { ptr, i64, i64 } %t899, ptr %a903
|
|
store { ptr, i64, i64 } %t901, ptr %a904
|
|
call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904)
|
|
%t905 = load { ptr, i64, i64 }, ptr %a902
|
|
%t906 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 11
|
|
store { ptr, i64, i64 } %t905, ptr %t906
|
|
br label %endif3153
|
|
endif3153:
|
|
%t907 = load ptr, ptr %a1
|
|
%t908 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 5
|
|
%t909 = load %S.ast.Type, ptr %t908
|
|
%t910 = load %S.ast.Node, ptr %a515
|
|
%t911 = call %S.ast.Type @finch.gen.resolve(ptr %t907, %S.ast.Type %t909, %S.ast.Node %t910)
|
|
%t912 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 12
|
|
store %S.ast.Type %t911, ptr %t912
|
|
%t913 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9
|
|
%t914 = getelementptr inbounds { ptr, i64, i64 }, ptr %t913, i32 0, i32 1
|
|
%t915 = load i64, ptr %t914
|
|
%t916 = sub i64 %t915, 1
|
|
store i64 0, ptr %a917
|
|
br label %for.cond3156
|
|
for.cond3156:
|
|
%t918 = load i64, ptr %a917
|
|
%t919 = icmp slt i64 %t918, %t916
|
|
br i1 %t919, label %for.body3157, label %for.end3159
|
|
for.body3157:
|
|
%t920 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9
|
|
%t921 = load i64, ptr %a917
|
|
%t922 = load { ptr, i64, i64 }, ptr %t920
|
|
%t923 = extractvalue { ptr, i64, i64 } %t922, 1
|
|
%t924 = icmp uge i64 %t921, %t923
|
|
br i1 %t924, label %range3160, label %inrange3161
|
|
range3160:
|
|
call void @finch_panic_index(ptr @.str.1987, i64 1271, i64 %t921, i64 %t923)
|
|
unreachable
|
|
inrange3161:
|
|
%t925 = extractvalue { ptr, i64, i64 } %t922, 0
|
|
%t926 = getelementptr inbounds %S.ast.Node, ptr %t925, i64 %t921
|
|
%t927 = getelementptr inbounds %S.ast.Node, ptr %t926, i32 0, i32 1
|
|
%t928 = load { ptr, i64, i64 }, ptr %t927
|
|
store { ptr, i64, i64 } %t928, ptr %a929
|
|
store { ptr, i64, i64 } { ptr @.str.1988, i64 4, i64 0 }, ptr %a930
|
|
%t931 = call i32 @finch_str_eq(ptr %a929, ptr %a930)
|
|
%t932 = icmp ne i32 %t931, 0
|
|
br label %logic.from3162
|
|
logic.from3162:
|
|
br i1 %t932, label %logic.rhs3163, label %logic.end3164
|
|
logic.rhs3163:
|
|
%t933 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t934 = getelementptr inbounds { ptr, i64, i64 }, ptr %t933, i32 0, i32 1
|
|
%t935 = load i64, ptr %t934
|
|
%t936 = icmp sgt i64 %t935, 0
|
|
br label %logic.rend3165
|
|
logic.rend3165:
|
|
br label %logic.end3164
|
|
logic.end3164:
|
|
%t937 = phi i1 [ false, %logic.from3162 ], [ %t936, %logic.rend3165 ]
|
|
br i1 %t937, label %then3166, label %endif3168
|
|
then3166:
|
|
%t938 = load ptr, ptr %a1
|
|
%t939 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9
|
|
%t940 = load i64, ptr %a917
|
|
%t941 = load { ptr, i64, i64 }, ptr %t939
|
|
%t942 = extractvalue { ptr, i64, i64 } %t941, 1
|
|
%t943 = icmp uge i64 %t940, %t942
|
|
br i1 %t943, label %range3169, label %inrange3170
|
|
range3169:
|
|
call void @finch_panic_index(ptr @.str.1989, i64 1272, i64 %t940, i64 %t942)
|
|
unreachable
|
|
inrange3170:
|
|
%t944 = extractvalue { ptr, i64, i64 } %t941, 0
|
|
%t945 = getelementptr inbounds %S.ast.Node, ptr %t944, i64 %t940
|
|
%t946 = load %S.ast.Node, ptr %t945
|
|
%t947 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2
|
|
%t948 = load { ptr, i64, i64 }, ptr %t947
|
|
store { ptr, i64, i64 } { ptr @.str.1990, i64 22, i64 0 }, ptr %a950
|
|
store { ptr, i64, i64 } %t948, ptr %a951
|
|
call void @finch_str_concat(ptr %a949, ptr %a950, ptr %a951)
|
|
%t952 = load { ptr, i64, i64 }, ptr %a949
|
|
store { ptr, i64, i64 } %t952, ptr %a954
|
|
store { ptr, i64, i64 } { ptr @.str.1991, i64 24, i64 0 }, ptr %a955
|
|
call void @finch_str_concat(ptr %a953, ptr %a954, ptr %a955)
|
|
%t956 = load { ptr, i64, i64 }, ptr %a953
|
|
call void @finch.gen.fail(ptr %t938, %S.ast.Node %t946, { ptr, i64, i64 } %t956)
|
|
br label %endif3168
|
|
endif3168:
|
|
%t957 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 13
|
|
%t958 = getelementptr inbounds { ptr, i64, i64 }, ptr %t957, i32 0, i32 1
|
|
%t959 = load ptr, ptr %a1
|
|
%t960 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9
|
|
%t961 = load i64, ptr %a917
|
|
%t962 = load { ptr, i64, i64 }, ptr %t960
|
|
%t963 = extractvalue { ptr, i64, i64 } %t962, 1
|
|
%t964 = icmp uge i64 %t961, %t963
|
|
br i1 %t964, label %range3171, label %inrange3172
|
|
range3171:
|
|
call void @finch_panic_index(ptr @.str.1992, i64 1274, i64 %t961, i64 %t963)
|
|
unreachable
|
|
inrange3172:
|
|
%t965 = extractvalue { ptr, i64, i64 } %t962, 0
|
|
%t966 = getelementptr inbounds %S.ast.Node, ptr %t965, i64 %t961
|
|
%t967 = getelementptr inbounds %S.ast.Node, ptr %t966, i32 0, i32 5
|
|
%t968 = load %S.ast.Type, ptr %t967
|
|
%t969 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9
|
|
%t970 = load i64, ptr %a917
|
|
%t971 = load { ptr, i64, i64 }, ptr %t969
|
|
%t972 = extractvalue { ptr, i64, i64 } %t971, 1
|
|
%t973 = icmp uge i64 %t970, %t972
|
|
br i1 %t973, label %range3173, label %inrange3174
|
|
range3173:
|
|
call void @finch_panic_index(ptr @.str.1993, i64 1274, i64 %t970, i64 %t972)
|
|
unreachable
|
|
inrange3174:
|
|
%t974 = extractvalue { ptr, i64, i64 } %t971, 0
|
|
%t975 = getelementptr inbounds %S.ast.Node, ptr %t974, i64 %t970
|
|
%t976 = load %S.ast.Node, ptr %t975
|
|
%t977 = call %S.ast.Type @finch.gen.resolve(ptr %t959, %S.ast.Type %t968, %S.ast.Node %t976)
|
|
%t978 = load i64, ptr %t958
|
|
%t979 = add i64 %t978, 1
|
|
call void @finch_arr_reserve(ptr %t957, i64 %t979, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t980 = load ptr, ptr %t957
|
|
%t981 = getelementptr inbounds %S.ast.Type, ptr %t980, i64 %t978
|
|
store %S.ast.Type %t977, ptr %t981
|
|
store i64 %t979, ptr %t958
|
|
%t982 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 14
|
|
%t983 = getelementptr inbounds { ptr, i64, i64 }, ptr %t982, i32 0, i32 1
|
|
%t984 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9
|
|
%t985 = load i64, ptr %a917
|
|
%t986 = load { ptr, i64, i64 }, ptr %t984
|
|
%t987 = extractvalue { ptr, i64, i64 } %t986, 1
|
|
%t988 = icmp uge i64 %t985, %t987
|
|
br i1 %t988, label %range3175, label %inrange3176
|
|
range3175:
|
|
call void @finch_panic_index(ptr @.str.1994, i64 1275, i64 %t985, i64 %t987)
|
|
unreachable
|
|
inrange3176:
|
|
%t989 = extractvalue { ptr, i64, i64 } %t986, 0
|
|
%t990 = getelementptr inbounds %S.ast.Node, ptr %t989, i64 %t985
|
|
%t991 = getelementptr inbounds %S.ast.Node, ptr %t990, i32 0, i32 1
|
|
%t992 = load { ptr, i64, i64 }, ptr %t991
|
|
store { ptr, i64, i64 } %t992, ptr %a993
|
|
call void @finch_str_copy(ptr %a994, ptr %a993)
|
|
%t995 = load { ptr, i64, i64 }, ptr %a994
|
|
%t996 = load i64, ptr %t983
|
|
%t997 = add i64 %t996, 1
|
|
call void @finch_arr_reserve(ptr %t982, i64 %t997, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t998 = load ptr, ptr %t982
|
|
%t999 = getelementptr inbounds { ptr, i64, i64 }, ptr %t998, i64 %t996
|
|
store { ptr, i64, i64 } %t995, ptr %t999
|
|
store i64 %t997, ptr %t983
|
|
br label %for.step3158
|
|
for.step3158:
|
|
%t1000 = load i64, ptr %a917
|
|
%t1001 = add i64 %t1000, 1
|
|
store i64 %t1001, ptr %a917
|
|
br label %for.cond3156
|
|
for.end3159:
|
|
%t1002 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 8
|
|
%t1003 = load i1, ptr %t1002
|
|
br i1 %t1003, label %then3177, label %endif3179
|
|
then3177:
|
|
%t1004 = load ptr, ptr %a1
|
|
%t1005 = load %S.ast.Node, ptr %a515
|
|
%t1006 = load %S.gen.FnSig, ptr %a852
|
|
call void @finch.gen.checkExport(ptr %t1004, %S.ast.Node %t1005, %S.gen.FnSig %t1006)
|
|
br label %endif3179
|
|
endif3179:
|
|
%t1007 = load ptr, ptr %a1
|
|
%t1008 = icmp eq ptr %t1007, null
|
|
br i1 %t1008, label %panic3180, label %ok3181
|
|
panic3180:
|
|
call void @finch_panic(ptr @.str.1995, i64 1280, ptr @.str.1996)
|
|
unreachable
|
|
ok3181:
|
|
%t1009 = getelementptr inbounds %S.gen.Gen, ptr %t1007, i32 0, i32 14
|
|
%t1010 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1009, i32 0, i32 1
|
|
%t1011 = load %S.gen.FnSig, ptr %a852
|
|
store %S.gen.FnSig %t1011, ptr %a1012
|
|
call void @finch.copy.S_gen_FnSig(ptr %a1013, ptr %a1012)
|
|
%t1014 = load %S.gen.FnSig, ptr %a1013
|
|
%t1015 = load i64, ptr %t1010
|
|
%t1016 = add i64 %t1015, 1
|
|
call void @finch_arr_reserve(ptr %t1009, i64 %t1016, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64))
|
|
%t1017 = load ptr, ptr %t1009
|
|
%t1018 = getelementptr inbounds %S.gen.FnSig, ptr %t1017, i64 %t1015
|
|
store %S.gen.FnSig %t1014, ptr %t1018
|
|
store i64 %t1016, ptr %t1010
|
|
br label %for.step3066
|
|
for.step3066:
|
|
%t1019 = load i64, ptr %a492
|
|
%t1020 = add i64 %t1019, 1
|
|
store i64 %t1020, ptr %a492
|
|
br label %for.cond3064
|
|
for.end3067:
|
|
br label %for.step3052
|
|
for.step3052:
|
|
%t1021 = load i64, ptr %a460
|
|
%t1022 = add i64 %t1021, 1
|
|
store i64 %t1022, ptr %a460
|
|
br label %for.cond3050
|
|
for.end3053:
|
|
store i1 true, ptr %a1023
|
|
br label %while.cond3182
|
|
while.cond3182:
|
|
%t1024 = load i1, ptr %a1023
|
|
br i1 %t1024, label %while.body3183, label %while.end3184
|
|
while.body3183:
|
|
store i1 false, ptr %a1023
|
|
%t1025 = load ptr, ptr %a1
|
|
%t1026 = icmp eq ptr %t1025, null
|
|
br i1 %t1026, label %panic3185, label %ok3186
|
|
panic3185:
|
|
call void @finch_panic(ptr @.str.1997, i64 1288, ptr @.str.1998)
|
|
unreachable
|
|
ok3186:
|
|
%t1027 = getelementptr inbounds %S.gen.Gen, ptr %t1025, i32 0, i32 14
|
|
%t1028 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1027, i32 0, i32 1
|
|
%t1029 = load i64, ptr %t1028
|
|
store i64 0, ptr %a1030
|
|
br label %for.cond3187
|
|
for.cond3187:
|
|
%t1031 = load i64, ptr %a1030
|
|
%t1032 = icmp slt i64 %t1031, %t1029
|
|
br i1 %t1032, label %for.body3188, label %for.end3190
|
|
for.body3188:
|
|
%t1033 = load ptr, ptr %a1
|
|
%t1034 = icmp eq ptr %t1033, null
|
|
br i1 %t1034, label %panic3191, label %ok3192
|
|
panic3191:
|
|
call void @finch_panic(ptr @.str.1999, i64 1289, ptr @.str.2000)
|
|
unreachable
|
|
ok3192:
|
|
%t1035 = getelementptr inbounds %S.gen.Gen, ptr %t1033, i32 0, i32 14
|
|
%t1036 = load i64, ptr %a1030
|
|
%t1037 = load { ptr, i64, i64 }, ptr %t1035
|
|
%t1038 = extractvalue { ptr, i64, i64 } %t1037, 1
|
|
%t1039 = icmp uge i64 %t1036, %t1038
|
|
br i1 %t1039, label %range3193, label %inrange3194
|
|
range3193:
|
|
call void @finch_panic_index(ptr @.str.2001, i64 1289, i64 %t1036, i64 %t1038)
|
|
unreachable
|
|
inrange3194:
|
|
%t1040 = extractvalue { ptr, i64, i64 } %t1037, 0
|
|
%t1041 = getelementptr inbounds %S.gen.FnSig, ptr %t1040, i64 %t1036
|
|
%t1042 = getelementptr inbounds %S.gen.FnSig, ptr %t1041, i32 0, i32 2
|
|
%t1043 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1042, i32 0, i32 1
|
|
%t1044 = load i64, ptr %t1043
|
|
%t1045 = icmp sgt i64 %t1044, 0
|
|
br label %logic.from3195
|
|
logic.from3195:
|
|
br i1 %t1045, label %logic.rhs3196, label %logic.end3197
|
|
logic.rhs3196:
|
|
%t1046 = load ptr, ptr %a1
|
|
%t1047 = icmp eq ptr %t1046, null
|
|
br i1 %t1047, label %panic3198, label %ok3199
|
|
panic3198:
|
|
call void @finch_panic(ptr @.str.2002, i64 1289, ptr @.str.2003)
|
|
unreachable
|
|
ok3199:
|
|
%t1048 = getelementptr inbounds %S.gen.Gen, ptr %t1046, i32 0, i32 14
|
|
%t1049 = load i64, ptr %a1030
|
|
%t1050 = load { ptr, i64, i64 }, ptr %t1048
|
|
%t1051 = extractvalue { ptr, i64, i64 } %t1050, 1
|
|
%t1052 = icmp uge i64 %t1049, %t1051
|
|
br i1 %t1052, label %range3200, label %inrange3201
|
|
range3200:
|
|
call void @finch_panic_index(ptr @.str.2004, i64 1289, i64 %t1049, i64 %t1051)
|
|
unreachable
|
|
inrange3201:
|
|
%t1053 = extractvalue { ptr, i64, i64 } %t1050, 0
|
|
%t1054 = getelementptr inbounds %S.gen.FnSig, ptr %t1053, i64 %t1049
|
|
%t1055 = getelementptr inbounds %S.gen.FnSig, ptr %t1054, i32 0, i32 10
|
|
%t1056 = load i1, ptr %t1055
|
|
%t1057 = xor i1 %t1056, true
|
|
br label %logic.rend3202
|
|
logic.rend3202:
|
|
br label %logic.end3197
|
|
logic.end3197:
|
|
%t1058 = phi i1 [ false, %logic.from3195 ], [ %t1057, %logic.rend3202 ]
|
|
br i1 %t1058, label %then3203, label %endif3205
|
|
then3203:
|
|
%t1059 = load ptr, ptr %a1
|
|
%t1060 = icmp eq ptr %t1059, null
|
|
br i1 %t1060, label %panic3206, label %ok3207
|
|
panic3206:
|
|
call void @finch_panic(ptr @.str.2005, i64 1290, ptr @.str.2006)
|
|
unreachable
|
|
ok3207:
|
|
%t1061 = getelementptr inbounds %S.gen.Gen, ptr %t1059, i32 0, i32 0
|
|
%t1062 = load ptr, ptr %a1
|
|
%t1063 = icmp eq ptr %t1062, null
|
|
br i1 %t1063, label %panic3208, label %ok3209
|
|
panic3208:
|
|
call void @finch_panic(ptr @.str.2007, i64 1290, ptr @.str.2008)
|
|
unreachable
|
|
ok3209:
|
|
%t1064 = getelementptr inbounds %S.gen.Gen, ptr %t1062, i32 0, i32 14
|
|
%t1065 = load i64, ptr %a1030
|
|
%t1066 = load { ptr, i64, i64 }, ptr %t1064
|
|
%t1067 = extractvalue { ptr, i64, i64 } %t1066, 1
|
|
%t1068 = icmp uge i64 %t1065, %t1067
|
|
br i1 %t1068, label %range3210, label %inrange3211
|
|
range3210:
|
|
call void @finch_panic_index(ptr @.str.2009, i64 1290, i64 %t1065, i64 %t1067)
|
|
unreachable
|
|
inrange3211:
|
|
%t1069 = extractvalue { ptr, i64, i64 } %t1066, 0
|
|
%t1070 = getelementptr inbounds %S.gen.FnSig, ptr %t1069, i64 %t1065
|
|
%t1071 = getelementptr inbounds %S.gen.FnSig, ptr %t1070, i32 0, i32 16
|
|
%t1072 = load i64, ptr %t1071
|
|
%t1073 = load { ptr, i64, i64 }, ptr %t1061
|
|
%t1074 = extractvalue { ptr, i64, i64 } %t1073, 1
|
|
%t1075 = icmp uge i64 %t1072, %t1074
|
|
br i1 %t1075, label %range3212, label %inrange3213
|
|
range3212:
|
|
call void @finch_panic_index(ptr @.str.2010, i64 1290, i64 %t1072, i64 %t1074)
|
|
unreachable
|
|
inrange3213:
|
|
%t1076 = extractvalue { ptr, i64, i64 } %t1073, 0
|
|
%t1077 = getelementptr inbounds %S.ast.Program, ptr %t1076, i64 %t1072
|
|
%t1078 = getelementptr inbounds %S.ast.Program, ptr %t1077, i32 0, i32 8
|
|
%t1079 = load ptr, ptr %a1
|
|
%t1080 = icmp eq ptr %t1079, null
|
|
br i1 %t1080, label %panic3214, label %ok3215
|
|
panic3214:
|
|
call void @finch_panic(ptr @.str.2011, i64 1290, ptr @.str.2012)
|
|
unreachable
|
|
ok3215:
|
|
%t1081 = getelementptr inbounds %S.gen.Gen, ptr %t1079, i32 0, i32 14
|
|
%t1082 = load i64, ptr %a1030
|
|
%t1083 = load { ptr, i64, i64 }, ptr %t1081
|
|
%t1084 = extractvalue { ptr, i64, i64 } %t1083, 1
|
|
%t1085 = icmp uge i64 %t1082, %t1084
|
|
br i1 %t1085, label %range3216, label %inrange3217
|
|
range3216:
|
|
call void @finch_panic_index(ptr @.str.2013, i64 1290, i64 %t1082, i64 %t1084)
|
|
unreachable
|
|
inrange3217:
|
|
%t1086 = extractvalue { ptr, i64, i64 } %t1083, 0
|
|
%t1087 = getelementptr inbounds %S.gen.FnSig, ptr %t1086, i64 %t1082
|
|
%t1088 = getelementptr inbounds %S.gen.FnSig, ptr %t1087, i32 0, i32 17
|
|
%t1089 = load i64, ptr %t1088
|
|
%t1090 = load { ptr, i64, i64 }, ptr %t1078
|
|
%t1091 = extractvalue { ptr, i64, i64 } %t1090, 1
|
|
%t1092 = icmp uge i64 %t1089, %t1091
|
|
br i1 %t1092, label %range3218, label %inrange3219
|
|
range3218:
|
|
call void @finch_panic_index(ptr @.str.2014, i64 1290, i64 %t1089, i64 %t1091)
|
|
unreachable
|
|
inrange3219:
|
|
%t1093 = extractvalue { ptr, i64, i64 } %t1090, 0
|
|
%t1094 = getelementptr inbounds %S.ast.Node, ptr %t1093, i64 %t1089
|
|
%t1095 = load %S.ast.Node, ptr %t1094
|
|
store %S.ast.Node %t1095, ptr %a1096
|
|
call void @finch.copy.S_ast_Node(ptr %a1097, ptr %a1096)
|
|
%t1098 = load %S.ast.Node, ptr %a1097
|
|
store %S.ast.Node %t1098, ptr %a1099
|
|
%t1100 = load ptr, ptr %a1
|
|
%t1101 = getelementptr inbounds %S.ast.Node, ptr %a1099, i32 0, i32 9
|
|
%t1102 = getelementptr inbounds %S.ast.Node, ptr %a1099, i32 0, i32 9
|
|
%t1103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1102, i32 0, i32 1
|
|
%t1104 = load i64, ptr %t1103
|
|
%t1105 = sub i64 %t1104, 1
|
|
%t1106 = load { ptr, i64, i64 }, ptr %t1101
|
|
%t1107 = extractvalue { ptr, i64, i64 } %t1106, 1
|
|
%t1108 = icmp uge i64 %t1105, %t1107
|
|
br i1 %t1108, label %range3220, label %inrange3221
|
|
range3220:
|
|
call void @finch_panic_index(ptr @.str.2016, i64 1291, i64 %t1105, i64 %t1107)
|
|
unreachable
|
|
inrange3221:
|
|
%t1109 = extractvalue { ptr, i64, i64 } %t1106, 0
|
|
%t1110 = getelementptr inbounds %S.ast.Node, ptr %t1109, i64 %t1105
|
|
%t1111 = load %S.ast.Node, ptr %t1110
|
|
%t1112 = call i1 @finch.gen.mutates(ptr %t1100, { ptr, i64, i64 } { ptr @.str.2015, i64 4, i64 0 }, %S.ast.Node %t1111)
|
|
br i1 %t1112, label %then3222, label %endif3224
|
|
then3222:
|
|
%t1113 = load ptr, ptr %a1
|
|
%t1114 = icmp eq ptr %t1113, null
|
|
br i1 %t1114, label %panic3225, label %ok3226
|
|
panic3225:
|
|
call void @finch_panic(ptr @.str.2017, i64 1292, ptr @.str.2018)
|
|
unreachable
|
|
ok3226:
|
|
%t1115 = getelementptr inbounds %S.gen.Gen, ptr %t1113, i32 0, i32 14
|
|
%t1116 = load i64, ptr %a1030
|
|
%t1117 = load { ptr, i64, i64 }, ptr %t1115
|
|
%t1118 = extractvalue { ptr, i64, i64 } %t1117, 1
|
|
%t1119 = icmp uge i64 %t1116, %t1118
|
|
br i1 %t1119, label %range3227, label %inrange3228
|
|
range3227:
|
|
call void @finch_panic_index(ptr @.str.2019, i64 1292, i64 %t1116, i64 %t1118)
|
|
unreachable
|
|
inrange3228:
|
|
%t1120 = extractvalue { ptr, i64, i64 } %t1117, 0
|
|
%t1121 = getelementptr inbounds %S.gen.FnSig, ptr %t1120, i64 %t1116
|
|
%t1122 = getelementptr inbounds %S.gen.FnSig, ptr %t1121, i32 0, i32 10
|
|
store i1 true, ptr %t1122
|
|
%t1123 = load ptr, ptr %a1
|
|
%t1124 = icmp eq ptr %t1123, null
|
|
br i1 %t1124, label %panic3229, label %ok3230
|
|
panic3229:
|
|
call void @finch_panic(ptr @.str.2020, i64 1293, ptr @.str.2021)
|
|
unreachable
|
|
ok3230:
|
|
%t1125 = getelementptr inbounds %S.gen.Gen, ptr %t1123, i32 0, i32 22
|
|
%t1126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1125, i32 0, i32 1
|
|
%t1127 = load ptr, ptr %a1
|
|
%t1128 = icmp eq ptr %t1127, null
|
|
br i1 %t1128, label %panic3231, label %ok3232
|
|
panic3231:
|
|
call void @finch_panic(ptr @.str.2022, i64 1293, ptr @.str.2023)
|
|
unreachable
|
|
ok3232:
|
|
%t1129 = getelementptr inbounds %S.gen.Gen, ptr %t1127, i32 0, i32 14
|
|
%t1130 = load i64, ptr %a1030
|
|
%t1131 = load { ptr, i64, i64 }, ptr %t1129
|
|
%t1132 = extractvalue { ptr, i64, i64 } %t1131, 1
|
|
%t1133 = icmp uge i64 %t1130, %t1132
|
|
br i1 %t1133, label %range3233, label %inrange3234
|
|
range3233:
|
|
call void @finch_panic_index(ptr @.str.2024, i64 1293, i64 %t1130, i64 %t1132)
|
|
unreachable
|
|
inrange3234:
|
|
%t1134 = extractvalue { ptr, i64, i64 } %t1131, 0
|
|
%t1135 = getelementptr inbounds %S.gen.FnSig, ptr %t1134, i64 %t1130
|
|
%t1136 = getelementptr inbounds %S.gen.FnSig, ptr %t1135, i32 0, i32 1
|
|
%t1137 = load { ptr, i64, i64 }, ptr %t1136
|
|
store { ptr, i64, i64 } %t1137, ptr %a1138
|
|
call void @finch_str_copy(ptr %a1139, ptr %a1138)
|
|
%t1140 = load { ptr, i64, i64 }, ptr %a1139
|
|
%t1141 = load i64, ptr %t1126
|
|
%t1142 = add i64 %t1141, 1
|
|
call void @finch_arr_reserve(ptr %t1125, i64 %t1142, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t1143 = load ptr, ptr %t1125
|
|
%t1144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1143, i64 %t1141
|
|
store { ptr, i64, i64 } %t1140, ptr %t1144
|
|
store i64 %t1142, ptr %t1126
|
|
store i1 true, ptr %a1023
|
|
br label %endif3224
|
|
endif3224:
|
|
br label %endif3205
|
|
endif3205:
|
|
br label %for.step3189
|
|
for.step3189:
|
|
%t1145 = load i64, ptr %a1030
|
|
%t1146 = add i64 %t1145, 1
|
|
store i64 %t1146, ptr %a1030
|
|
br label %for.cond3187
|
|
for.end3190:
|
|
%t1147 = load ptr, ptr %a1
|
|
%t1148 = icmp eq ptr %t1147, null
|
|
br i1 %t1148, label %panic3235, label %ok3236
|
|
panic3235:
|
|
call void @finch_panic(ptr @.str.2025, i64 1298, ptr @.str.2026)
|
|
unreachable
|
|
ok3236:
|
|
%t1149 = getelementptr inbounds %S.gen.Gen, ptr %t1147, i32 0, i32 16
|
|
%t1150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1149, i32 0, i32 1
|
|
%t1151 = load i64, ptr %t1150
|
|
store i64 0, ptr %a1152
|
|
br label %for.cond3237
|
|
for.cond3237:
|
|
%t1153 = load i64, ptr %a1152
|
|
%t1154 = icmp slt i64 %t1153, %t1151
|
|
br i1 %t1154, label %for.body3238, label %for.end3240
|
|
for.body3238:
|
|
%t1155 = load ptr, ptr %a1
|
|
%t1156 = icmp eq ptr %t1155, null
|
|
br i1 %t1156, label %panic3241, label %ok3242
|
|
panic3241:
|
|
call void @finch_panic(ptr @.str.2027, i64 1299, ptr @.str.2028)
|
|
unreachable
|
|
ok3242:
|
|
%t1157 = getelementptr inbounds %S.gen.Gen, ptr %t1155, i32 0, i32 16
|
|
%t1158 = load i64, ptr %a1152
|
|
%t1159 = load { ptr, i64, i64 }, ptr %t1157
|
|
%t1160 = extractvalue { ptr, i64, i64 } %t1159, 1
|
|
%t1161 = icmp uge i64 %t1158, %t1160
|
|
br i1 %t1161, label %range3243, label %inrange3244
|
|
range3243:
|
|
call void @finch_panic_index(ptr @.str.2029, i64 1299, i64 %t1158, i64 %t1160)
|
|
unreachable
|
|
inrange3244:
|
|
%t1162 = extractvalue { ptr, i64, i64 } %t1159, 0
|
|
%t1163 = getelementptr inbounds %S.gen.Template, ptr %t1162, i64 %t1158
|
|
%t1164 = load %S.gen.Template, ptr %t1163
|
|
store %S.gen.Template %t1164, ptr %a1165
|
|
call void @finch.copy.S_gen_Template(ptr %a1166, ptr %a1165)
|
|
%t1167 = load %S.gen.Template, ptr %a1166
|
|
store %S.gen.Template %t1167, ptr %a1168
|
|
%t1169 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 2
|
|
%t1170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1169, i32 0, i32 1
|
|
%t1171 = load i64, ptr %t1170
|
|
%t1172 = icmp sgt i64 %t1171, 0
|
|
br label %logic.from3245
|
|
logic.from3245:
|
|
br i1 %t1172, label %logic.rhs3246, label %logic.end3247
|
|
logic.rhs3246:
|
|
%t1173 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 7
|
|
%t1174 = load i1, ptr %t1173
|
|
%t1175 = xor i1 %t1174, true
|
|
br label %logic.rend3248
|
|
logic.rend3248:
|
|
br label %logic.end3247
|
|
logic.end3247:
|
|
%t1176 = phi i1 [ false, %logic.from3245 ], [ %t1175, %logic.rend3248 ]
|
|
br i1 %t1176, label %then3249, label %endif3251
|
|
then3249:
|
|
%t1177 = load ptr, ptr %a1
|
|
%t1178 = icmp eq ptr %t1177, null
|
|
br i1 %t1178, label %panic3252, label %ok3253
|
|
panic3252:
|
|
call void @finch_panic(ptr @.str.2030, i64 1301, ptr @.str.2031)
|
|
unreachable
|
|
ok3253:
|
|
%t1179 = getelementptr inbounds %S.gen.Gen, ptr %t1177, i32 0, i32 0
|
|
%t1180 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 4
|
|
%t1181 = load i64, ptr %t1180
|
|
%t1182 = load { ptr, i64, i64 }, ptr %t1179
|
|
%t1183 = extractvalue { ptr, i64, i64 } %t1182, 1
|
|
%t1184 = icmp uge i64 %t1181, %t1183
|
|
br i1 %t1184, label %range3254, label %inrange3255
|
|
range3254:
|
|
call void @finch_panic_index(ptr @.str.2032, i64 1301, i64 %t1181, i64 %t1183)
|
|
unreachable
|
|
inrange3255:
|
|
%t1185 = extractvalue { ptr, i64, i64 } %t1182, 0
|
|
%t1186 = getelementptr inbounds %S.ast.Program, ptr %t1185, i64 %t1181
|
|
%t1187 = getelementptr inbounds %S.ast.Program, ptr %t1186, i32 0, i32 8
|
|
%t1188 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 5
|
|
%t1189 = load i64, ptr %t1188
|
|
%t1190 = load { ptr, i64, i64 }, ptr %t1187
|
|
%t1191 = extractvalue { ptr, i64, i64 } %t1190, 1
|
|
%t1192 = icmp uge i64 %t1189, %t1191
|
|
br i1 %t1192, label %range3256, label %inrange3257
|
|
range3256:
|
|
call void @finch_panic_index(ptr @.str.2033, i64 1301, i64 %t1189, i64 %t1191)
|
|
unreachable
|
|
inrange3257:
|
|
%t1193 = extractvalue { ptr, i64, i64 } %t1190, 0
|
|
%t1194 = getelementptr inbounds %S.ast.Node, ptr %t1193, i64 %t1189
|
|
%t1195 = load %S.ast.Node, ptr %t1194
|
|
store %S.ast.Node %t1195, ptr %a1196
|
|
call void @finch.copy.S_ast_Node(ptr %a1197, ptr %a1196)
|
|
%t1198 = load %S.ast.Node, ptr %a1197
|
|
store %S.ast.Node %t1198, ptr %a1199
|
|
%t1200 = load ptr, ptr %a1
|
|
%t1201 = getelementptr inbounds %S.ast.Node, ptr %a1199, i32 0, i32 9
|
|
%t1202 = getelementptr inbounds %S.ast.Node, ptr %a1199, i32 0, i32 9
|
|
%t1203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1202, i32 0, i32 1
|
|
%t1204 = load i64, ptr %t1203
|
|
%t1205 = sub i64 %t1204, 1
|
|
%t1206 = load { ptr, i64, i64 }, ptr %t1201
|
|
%t1207 = extractvalue { ptr, i64, i64 } %t1206, 1
|
|
%t1208 = icmp uge i64 %t1205, %t1207
|
|
br i1 %t1208, label %range3258, label %inrange3259
|
|
range3258:
|
|
call void @finch_panic_index(ptr @.str.2035, i64 1302, i64 %t1205, i64 %t1207)
|
|
unreachable
|
|
inrange3259:
|
|
%t1209 = extractvalue { ptr, i64, i64 } %t1206, 0
|
|
%t1210 = getelementptr inbounds %S.ast.Node, ptr %t1209, i64 %t1205
|
|
%t1211 = load %S.ast.Node, ptr %t1210
|
|
%t1212 = call i1 @finch.gen.mutates(ptr %t1200, { ptr, i64, i64 } { ptr @.str.2034, i64 4, i64 0 }, %S.ast.Node %t1211)
|
|
br i1 %t1212, label %then3260, label %endif3262
|
|
then3260:
|
|
%t1213 = load ptr, ptr %a1
|
|
%t1214 = icmp eq ptr %t1213, null
|
|
br i1 %t1214, label %panic3263, label %ok3264
|
|
panic3263:
|
|
call void @finch_panic(ptr @.str.2036, i64 1303, ptr @.str.2037)
|
|
unreachable
|
|
ok3264:
|
|
%t1215 = getelementptr inbounds %S.gen.Gen, ptr %t1213, i32 0, i32 16
|
|
%t1216 = load i64, ptr %a1152
|
|
%t1217 = load { ptr, i64, i64 }, ptr %t1215
|
|
%t1218 = extractvalue { ptr, i64, i64 } %t1217, 1
|
|
%t1219 = icmp uge i64 %t1216, %t1218
|
|
br i1 %t1219, label %range3265, label %inrange3266
|
|
range3265:
|
|
call void @finch_panic_index(ptr @.str.2038, i64 1303, i64 %t1216, i64 %t1218)
|
|
unreachable
|
|
inrange3266:
|
|
%t1220 = extractvalue { ptr, i64, i64 } %t1217, 0
|
|
%t1221 = getelementptr inbounds %S.gen.Template, ptr %t1220, i64 %t1216
|
|
%t1222 = getelementptr inbounds %S.gen.Template, ptr %t1221, i32 0, i32 7
|
|
store i1 true, ptr %t1222
|
|
%t1223 = load ptr, ptr %a1
|
|
%t1224 = icmp eq ptr %t1223, null
|
|
br i1 %t1224, label %panic3267, label %ok3268
|
|
panic3267:
|
|
call void @finch_panic(ptr @.str.2039, i64 1304, ptr @.str.2040)
|
|
unreachable
|
|
ok3268:
|
|
%t1225 = getelementptr inbounds %S.gen.Gen, ptr %t1223, i32 0, i32 22
|
|
%t1226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1225, i32 0, i32 1
|
|
%t1227 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 1
|
|
%t1228 = load { ptr, i64, i64 }, ptr %t1227
|
|
store { ptr, i64, i64 } %t1228, ptr %a1229
|
|
call void @finch_str_copy(ptr %a1230, ptr %a1229)
|
|
%t1231 = load { ptr, i64, i64 }, ptr %a1230
|
|
%t1232 = load i64, ptr %t1226
|
|
%t1233 = add i64 %t1232, 1
|
|
call void @finch_arr_reserve(ptr %t1225, i64 %t1233, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t1234 = load ptr, ptr %t1225
|
|
%t1235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1234, i64 %t1232
|
|
store { ptr, i64, i64 } %t1231, ptr %t1235
|
|
store i64 %t1233, ptr %t1226
|
|
store i1 true, ptr %a1023
|
|
br label %endif3262
|
|
endif3262:
|
|
br label %endif3251
|
|
endif3251:
|
|
br label %for.step3239
|
|
for.step3239:
|
|
%t1236 = load i64, ptr %a1152
|
|
%t1237 = add i64 %t1236, 1
|
|
store i64 %t1237, ptr %a1152
|
|
br label %for.cond3237
|
|
for.end3240:
|
|
br label %while.cond3182
|
|
while.end3184:
|
|
%t1238 = load ptr, ptr %a1
|
|
%t1239 = icmp eq ptr %t1238, null
|
|
br i1 %t1239, label %panic3269, label %ok3270
|
|
panic3269:
|
|
call void @finch_panic(ptr @.str.2041, i64 1311, ptr @.str.2042)
|
|
unreachable
|
|
ok3270:
|
|
%t1240 = getelementptr inbounds %S.gen.Gen, ptr %t1238, i32 0, i32 14
|
|
%t1241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1240, i32 0, i32 1
|
|
%t1242 = load i64, ptr %t1241
|
|
store i64 0, ptr %a1243
|
|
br label %for.cond3271
|
|
for.cond3271:
|
|
%t1244 = load i64, ptr %a1243
|
|
%t1245 = icmp slt i64 %t1244, %t1242
|
|
br i1 %t1245, label %for.body3272, label %for.end3274
|
|
for.body3272:
|
|
%t1246 = load ptr, ptr %a1
|
|
%t1247 = icmp eq ptr %t1246, null
|
|
br i1 %t1247, label %panic3275, label %ok3276
|
|
panic3275:
|
|
call void @finch_panic(ptr @.str.2043, i64 1312, ptr @.str.2044)
|
|
unreachable
|
|
ok3276:
|
|
%t1248 = getelementptr inbounds %S.gen.Gen, ptr %t1246, i32 0, i32 0
|
|
%t1249 = load ptr, ptr %a1
|
|
%t1250 = icmp eq ptr %t1249, null
|
|
br i1 %t1250, label %panic3277, label %ok3278
|
|
panic3277:
|
|
call void @finch_panic(ptr @.str.2045, i64 1312, ptr @.str.2046)
|
|
unreachable
|
|
ok3278:
|
|
%t1251 = getelementptr inbounds %S.gen.Gen, ptr %t1249, i32 0, i32 14
|
|
%t1252 = load i64, ptr %a1243
|
|
%t1253 = load { ptr, i64, i64 }, ptr %t1251
|
|
%t1254 = extractvalue { ptr, i64, i64 } %t1253, 1
|
|
%t1255 = icmp uge i64 %t1252, %t1254
|
|
br i1 %t1255, label %range3279, label %inrange3280
|
|
range3279:
|
|
call void @finch_panic_index(ptr @.str.2047, i64 1312, i64 %t1252, i64 %t1254)
|
|
unreachable
|
|
inrange3280:
|
|
%t1256 = extractvalue { ptr, i64, i64 } %t1253, 0
|
|
%t1257 = getelementptr inbounds %S.gen.FnSig, ptr %t1256, i64 %t1252
|
|
%t1258 = getelementptr inbounds %S.gen.FnSig, ptr %t1257, i32 0, i32 16
|
|
%t1259 = load i64, ptr %t1258
|
|
%t1260 = load { ptr, i64, i64 }, ptr %t1248
|
|
%t1261 = extractvalue { ptr, i64, i64 } %t1260, 1
|
|
%t1262 = icmp uge i64 %t1259, %t1261
|
|
br i1 %t1262, label %range3281, label %inrange3282
|
|
range3281:
|
|
call void @finch_panic_index(ptr @.str.2048, i64 1312, i64 %t1259, i64 %t1261)
|
|
unreachable
|
|
inrange3282:
|
|
%t1263 = extractvalue { ptr, i64, i64 } %t1260, 0
|
|
%t1264 = getelementptr inbounds %S.ast.Program, ptr %t1263, i64 %t1259
|
|
%t1265 = getelementptr inbounds %S.ast.Program, ptr %t1264, i32 0, i32 8
|
|
%t1266 = load ptr, ptr %a1
|
|
%t1267 = icmp eq ptr %t1266, null
|
|
br i1 %t1267, label %panic3283, label %ok3284
|
|
panic3283:
|
|
call void @finch_panic(ptr @.str.2049, i64 1312, ptr @.str.2050)
|
|
unreachable
|
|
ok3284:
|
|
%t1268 = getelementptr inbounds %S.gen.Gen, ptr %t1266, i32 0, i32 14
|
|
%t1269 = load i64, ptr %a1243
|
|
%t1270 = load { ptr, i64, i64 }, ptr %t1268
|
|
%t1271 = extractvalue { ptr, i64, i64 } %t1270, 1
|
|
%t1272 = icmp uge i64 %t1269, %t1271
|
|
br i1 %t1272, label %range3285, label %inrange3286
|
|
range3285:
|
|
call void @finch_panic_index(ptr @.str.2051, i64 1312, i64 %t1269, i64 %t1271)
|
|
unreachable
|
|
inrange3286:
|
|
%t1273 = extractvalue { ptr, i64, i64 } %t1270, 0
|
|
%t1274 = getelementptr inbounds %S.gen.FnSig, ptr %t1273, i64 %t1269
|
|
%t1275 = getelementptr inbounds %S.gen.FnSig, ptr %t1274, i32 0, i32 17
|
|
%t1276 = load i64, ptr %t1275
|
|
%t1277 = load { ptr, i64, i64 }, ptr %t1265
|
|
%t1278 = extractvalue { ptr, i64, i64 } %t1277, 1
|
|
%t1279 = icmp uge i64 %t1276, %t1278
|
|
br i1 %t1279, label %range3287, label %inrange3288
|
|
range3287:
|
|
call void @finch_panic_index(ptr @.str.2052, i64 1312, i64 %t1276, i64 %t1278)
|
|
unreachable
|
|
inrange3288:
|
|
%t1280 = extractvalue { ptr, i64, i64 } %t1277, 0
|
|
%t1281 = getelementptr inbounds %S.ast.Node, ptr %t1280, i64 %t1276
|
|
%t1282 = load %S.ast.Node, ptr %t1281
|
|
store %S.ast.Node %t1282, ptr %a1283
|
|
call void @finch.copy.S_ast_Node(ptr %a1284, ptr %a1283)
|
|
%t1285 = load %S.ast.Node, ptr %a1284
|
|
store %S.ast.Node %t1285, ptr %a1286
|
|
%t1287 = getelementptr inbounds %S.ast.Node, ptr %a1286, i32 0, i32 9
|
|
%t1288 = getelementptr inbounds %S.ast.Node, ptr %a1286, i32 0, i32 9
|
|
%t1289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1288, i32 0, i32 1
|
|
%t1290 = load i64, ptr %t1289
|
|
%t1291 = sub i64 %t1290, 1
|
|
%t1292 = load { ptr, i64, i64 }, ptr %t1287
|
|
%t1293 = extractvalue { ptr, i64, i64 } %t1292, 1
|
|
%t1294 = icmp uge i64 %t1291, %t1293
|
|
br i1 %t1294, label %range3289, label %inrange3290
|
|
range3289:
|
|
call void @finch_panic_index(ptr @.str.2053, i64 1313, i64 %t1291, i64 %t1293)
|
|
unreachable
|
|
inrange3290:
|
|
%t1295 = extractvalue { ptr, i64, i64 } %t1292, 0
|
|
%t1296 = getelementptr inbounds %S.ast.Node, ptr %t1295, i64 %t1291
|
|
%t1297 = load %S.ast.Node, ptr %t1296
|
|
store %S.ast.Node %t1297, ptr %a1298
|
|
call void @finch.copy.S_ast_Node(ptr %a1299, ptr %a1298)
|
|
%t1300 = load %S.ast.Node, ptr %a1299
|
|
store %S.ast.Node %t1300, ptr %a1301
|
|
%t1302 = load ptr, ptr %a1
|
|
%t1303 = icmp eq ptr %t1302, null
|
|
br i1 %t1303, label %panic3291, label %ok3292
|
|
panic3291:
|
|
call void @finch_panic(ptr @.str.2054, i64 1314, ptr @.str.2055)
|
|
unreachable
|
|
ok3292:
|
|
%t1304 = getelementptr inbounds %S.gen.Gen, ptr %t1302, i32 0, i32 14
|
|
%t1305 = load i64, ptr %a1243
|
|
%t1306 = load { ptr, i64, i64 }, ptr %t1304
|
|
%t1307 = extractvalue { ptr, i64, i64 } %t1306, 1
|
|
%t1308 = icmp uge i64 %t1305, %t1307
|
|
br i1 %t1308, label %range3293, label %inrange3294
|
|
range3293:
|
|
call void @finch_panic_index(ptr @.str.2056, i64 1314, i64 %t1305, i64 %t1307)
|
|
unreachable
|
|
inrange3294:
|
|
%t1309 = extractvalue { ptr, i64, i64 } %t1306, 0
|
|
%t1310 = getelementptr inbounds %S.gen.FnSig, ptr %t1309, i64 %t1305
|
|
%t1311 = getelementptr inbounds %S.gen.FnSig, ptr %t1310, i32 0, i32 13
|
|
%t1312 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1311, i32 0, i32 1
|
|
%t1313 = load i64, ptr %t1312
|
|
store i64 0, ptr %a1314
|
|
br label %for.cond3295
|
|
for.cond3295:
|
|
%t1315 = load i64, ptr %a1314
|
|
%t1316 = icmp slt i64 %t1315, %t1313
|
|
br i1 %t1316, label %for.body3296, label %for.end3298
|
|
for.body3296:
|
|
%t1317 = load ptr, ptr %a1
|
|
%t1318 = icmp eq ptr %t1317, null
|
|
br i1 %t1318, label %panic3299, label %ok3300
|
|
panic3299:
|
|
call void @finch_panic(ptr @.str.2057, i64 1315, ptr @.str.2058)
|
|
unreachable
|
|
ok3300:
|
|
%t1319 = getelementptr inbounds %S.gen.Gen, ptr %t1317, i32 0, i32 14
|
|
%t1320 = load i64, ptr %a1243
|
|
%t1321 = load { ptr, i64, i64 }, ptr %t1319
|
|
%t1322 = extractvalue { ptr, i64, i64 } %t1321, 1
|
|
%t1323 = icmp uge i64 %t1320, %t1322
|
|
br i1 %t1323, label %range3301, label %inrange3302
|
|
range3301:
|
|
call void @finch_panic_index(ptr @.str.2059, i64 1315, i64 %t1320, i64 %t1322)
|
|
unreachable
|
|
inrange3302:
|
|
%t1324 = extractvalue { ptr, i64, i64 } %t1321, 0
|
|
%t1325 = getelementptr inbounds %S.gen.FnSig, ptr %t1324, i64 %t1320
|
|
%t1326 = getelementptr inbounds %S.gen.FnSig, ptr %t1325, i32 0, i32 13
|
|
%t1327 = load i64, ptr %a1314
|
|
%t1328 = load { ptr, i64, i64 }, ptr %t1326
|
|
%t1329 = extractvalue { ptr, i64, i64 } %t1328, 1
|
|
%t1330 = icmp uge i64 %t1327, %t1329
|
|
br i1 %t1330, label %range3303, label %inrange3304
|
|
range3303:
|
|
call void @finch_panic_index(ptr @.str.2060, i64 1315, i64 %t1327, i64 %t1329)
|
|
unreachable
|
|
inrange3304:
|
|
%t1331 = extractvalue { ptr, i64, i64 } %t1328, 0
|
|
%t1332 = getelementptr inbounds %S.ast.Type, ptr %t1331, i64 %t1327
|
|
%t1333 = load %S.ast.Type, ptr %t1332
|
|
store %S.ast.Type %t1333, ptr %a1334
|
|
call void @finch.copy.S_ast_Type(ptr %a1335, ptr %a1334)
|
|
%t1336 = load %S.ast.Type, ptr %a1335
|
|
store %S.ast.Type %t1336, ptr %a1337
|
|
%t1338 = load ptr, ptr %a1
|
|
%t1339 = icmp eq ptr %t1338, null
|
|
br i1 %t1339, label %panic3305, label %ok3306
|
|
panic3305:
|
|
call void @finch_panic(ptr @.str.2061, i64 1316, ptr @.str.2062)
|
|
unreachable
|
|
ok3306:
|
|
%t1340 = getelementptr inbounds %S.gen.Gen, ptr %t1338, i32 0, i32 14
|
|
%t1341 = load i64, ptr %a1243
|
|
%t1342 = load { ptr, i64, i64 }, ptr %t1340
|
|
%t1343 = extractvalue { ptr, i64, i64 } %t1342, 1
|
|
%t1344 = icmp uge i64 %t1341, %t1343
|
|
br i1 %t1344, label %range3307, label %inrange3308
|
|
range3307:
|
|
call void @finch_panic_index(ptr @.str.2063, i64 1316, i64 %t1341, i64 %t1343)
|
|
unreachable
|
|
inrange3308:
|
|
%t1345 = extractvalue { ptr, i64, i64 } %t1342, 0
|
|
%t1346 = getelementptr inbounds %S.gen.FnSig, ptr %t1345, i64 %t1341
|
|
%t1347 = getelementptr inbounds %S.gen.FnSig, ptr %t1346, i32 0, i32 15
|
|
%t1348 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1347, i32 0, i32 1
|
|
%t1349 = load ptr, ptr %a1
|
|
%t1350 = load %S.ast.Type, ptr %a1337
|
|
%t1351 = call i1 @finch.gen.owning(ptr %t1349, %S.ast.Type %t1350)
|
|
br label %logic.from3309
|
|
logic.from3309:
|
|
br i1 %t1351, label %logic.rhs3310, label %logic.end3311
|
|
logic.rhs3310:
|
|
%t1352 = load ptr, ptr %a1
|
|
%t1353 = load ptr, ptr %a1
|
|
%t1354 = icmp eq ptr %t1353, null
|
|
br i1 %t1354, label %panic3312, label %ok3313
|
|
panic3312:
|
|
call void @finch_panic(ptr @.str.2064, i64 1316, ptr @.str.2065)
|
|
unreachable
|
|
ok3313:
|
|
%t1355 = getelementptr inbounds %S.gen.Gen, ptr %t1353, i32 0, i32 14
|
|
%t1356 = load i64, ptr %a1243
|
|
%t1357 = load { ptr, i64, i64 }, ptr %t1355
|
|
%t1358 = extractvalue { ptr, i64, i64 } %t1357, 1
|
|
%t1359 = icmp uge i64 %t1356, %t1358
|
|
br i1 %t1359, label %range3314, label %inrange3315
|
|
range3314:
|
|
call void @finch_panic_index(ptr @.str.2066, i64 1316, i64 %t1356, i64 %t1358)
|
|
unreachable
|
|
inrange3315:
|
|
%t1360 = extractvalue { ptr, i64, i64 } %t1357, 0
|
|
%t1361 = getelementptr inbounds %S.gen.FnSig, ptr %t1360, i64 %t1356
|
|
%t1362 = getelementptr inbounds %S.gen.FnSig, ptr %t1361, i32 0, i32 14
|
|
%t1363 = load i64, ptr %a1314
|
|
%t1364 = load { ptr, i64, i64 }, ptr %t1362
|
|
%t1365 = extractvalue { ptr, i64, i64 } %t1364, 1
|
|
%t1366 = icmp uge i64 %t1363, %t1365
|
|
br i1 %t1366, label %range3316, label %inrange3317
|
|
range3316:
|
|
call void @finch_panic_index(ptr @.str.2067, i64 1316, i64 %t1363, i64 %t1365)
|
|
unreachable
|
|
inrange3317:
|
|
%t1367 = extractvalue { ptr, i64, i64 } %t1364, 0
|
|
%t1368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1367, i64 %t1363
|
|
%t1369 = load { ptr, i64, i64 }, ptr %t1368
|
|
%t1370 = load %S.ast.Node, ptr %a1301
|
|
%t1371 = call i1 @finch.gen.mutates(ptr %t1352, { ptr, i64, i64 } %t1369, %S.ast.Node %t1370)
|
|
%t1372 = xor i1 %t1371, true
|
|
br label %logic.rend3318
|
|
logic.rend3318:
|
|
br label %logic.end3311
|
|
logic.end3311:
|
|
%t1373 = phi i1 [ false, %logic.from3309 ], [ %t1372, %logic.rend3318 ]
|
|
%t1374 = load i64, ptr %t1348
|
|
%t1375 = add i64 %t1374, 1
|
|
call void @finch_arr_reserve(ptr %t1347, i64 %t1375, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64))
|
|
%t1376 = load ptr, ptr %t1347
|
|
%t1377 = getelementptr inbounds i1, ptr %t1376, i64 %t1374
|
|
store i1 %t1373, ptr %t1377
|
|
store i64 %t1375, ptr %t1348
|
|
br label %for.step3297
|
|
for.step3297:
|
|
%t1378 = load i64, ptr %a1314
|
|
%t1379 = add i64 %t1378, 1
|
|
store i64 %t1379, ptr %a1314
|
|
br label %for.cond3295
|
|
for.end3298:
|
|
br label %for.step3273
|
|
for.step3273:
|
|
%t1380 = load i64, ptr %a1243
|
|
%t1381 = add i64 %t1380, 1
|
|
store i64 %t1381, ptr %a1243
|
|
br label %for.cond3271
|
|
for.end3274:
|
|
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 %panic3319, label %ok3320
|
|
panic3319:
|
|
call void @finch_panic(ptr @.str.2068, i64 1322, ptr @.str.2069)
|
|
unreachable
|
|
ok3320:
|
|
%t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1
|
|
%t10 = load i64, ptr %t9
|
|
store i64 0, ptr %a11
|
|
br label %for.cond3321
|
|
for.cond3321:
|
|
%t12 = load i64, ptr %a11
|
|
%t13 = icmp slt i64 %t12, %t10
|
|
br i1 %t13, label %for.body3322, label %for.end3324
|
|
for.body3322:
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = icmp eq ptr %t14, null
|
|
br i1 %t15, label %panic3325, label %ok3326
|
|
panic3325:
|
|
call void @finch_panic(ptr @.str.2070, i64 1323, ptr @.str.2071)
|
|
unreachable
|
|
ok3326:
|
|
%t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 16
|
|
%t17 = load i64, ptr %a11
|
|
%t18 = load { ptr, i64, i64 }, ptr %t16
|
|
%t19 = extractvalue { ptr, i64, i64 } %t18, 1
|
|
%t20 = icmp uge i64 %t17, %t19
|
|
br i1 %t20, label %range3327, label %inrange3328
|
|
range3327:
|
|
call void @finch_panic_index(ptr @.str.2072, i64 1323, i64 %t17, i64 %t19)
|
|
unreachable
|
|
inrange3328:
|
|
%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.from3329
|
|
logic.from3329:
|
|
br i1 %t34, label %logic.rhs3330, label %logic.end3331
|
|
logic.rhs3330:
|
|
%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.rend3332
|
|
logic.rend3332:
|
|
br label %logic.end3331
|
|
logic.end3331:
|
|
%t42 = phi i1 [ false, %logic.from3329 ], [ %t41, %logic.rend3332 ]
|
|
br label %logic.from3333
|
|
logic.from3333:
|
|
br i1 %t42, label %logic.rhs3334, label %logic.end3335
|
|
logic.rhs3334:
|
|
%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.rend3336
|
|
logic.rend3336:
|
|
br label %logic.end3335
|
|
logic.end3335:
|
|
%t50 = phi i1 [ false, %logic.from3333 ], [ %t49, %logic.rend3336 ]
|
|
br label %logic.from3337
|
|
logic.from3337:
|
|
br i1 %t50, label %logic.rhs3338, label %logic.end3339
|
|
logic.rhs3338:
|
|
%t51 = getelementptr inbounds %S.gen.Template, ptr %a27, i32 0, i32 6
|
|
%t52 = load i1, ptr %t51
|
|
%t53 = load i1, ptr %a5
|
|
%t54 = icmp eq i1 %t52, %t53
|
|
br label %logic.rend3340
|
|
logic.rend3340:
|
|
br label %logic.end3339
|
|
logic.end3339:
|
|
%t55 = phi i1 [ false, %logic.from3337 ], [ %t54, %logic.rend3340 ]
|
|
br i1 %t55, label %then3341, label %endif3343
|
|
then3341:
|
|
%t56 = load i64, ptr %a11
|
|
ret i64 %t56
|
|
endif3343:
|
|
br label %for.step3323
|
|
for.step3323:
|
|
%t57 = load i64, ptr %a11
|
|
%t58 = add i64 %t57, 1
|
|
store i64 %t58, ptr %a11
|
|
br label %for.cond3321
|
|
for.end3324:
|
|
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.cond3344
|
|
each.cond3344:
|
|
%t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t5 = load i64, ptr %t4
|
|
%t6 = load i64, ptr %a3
|
|
%t7 = icmp slt i64 %t6, %t5
|
|
br i1 %t7, label %each.body3345, label %each.end3347
|
|
each.body3345:
|
|
%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.step3346
|
|
each.step3346:
|
|
%t19 = load i64, ptr %a3
|
|
%t20 = add i64 %t19, 1
|
|
store i64 %t20, ptr %a3
|
|
br label %each.cond3344
|
|
each.end3347:
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2073, i64 2, i64 0 }, ptr %a22
|
|
call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a23
|
|
ret { ptr, i64, i64 } %t24
|
|
}
|
|
|
|
define internal %S.ast.Type @finch.gen.instStruct(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca %S.ast.Node, align 16
|
|
%a10 = alloca i64, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca %S.gen.Template, align 16
|
|
%a44 = alloca %S.gen.Template, align 16
|
|
%a46 = alloca %S.gen.Template, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
store %S.ast.Node %p4, ptr %a5
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = load { ptr, i64, i64 }, ptr %a2
|
|
%t8 = load { ptr, i64, i64 }, ptr %a3
|
|
%t9 = call i64 @finch.gen.findTemplate(ptr %t6, { ptr, i64, i64 } %t7, { ptr, i64, i64 } %t8, { ptr, i64, i64 } { ptr @.str.2074, i64 0, i64 0 }, i1 true)
|
|
store i64 %t9, ptr %a10
|
|
%t11 = load i64, ptr %a10
|
|
%t12 = icmp slt i64 %t11, 0
|
|
br i1 %t12, label %then3348, label %endif3350
|
|
then3348:
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = load %S.ast.Node, ptr %a5
|
|
%t15 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.2075, i64 34, i64 0 }, ptr %a17
|
|
store { ptr, i64, i64 } %t15, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t19, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.2076, i64 28, i64 0 }, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
%t24 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t23, ptr %a26
|
|
store { ptr, i64, i64 } %t24, ptr %a27
|
|
call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t28, ptr %a30
|
|
store { ptr, i64, i64 } { ptr @.str.2077, i64 34, i64 0 }, ptr %a31
|
|
call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a29
|
|
call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t32)
|
|
br label %endif3350
|
|
endif3350:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = icmp eq ptr %t33, null
|
|
br i1 %t34, label %panic3351, label %ok3352
|
|
panic3351:
|
|
call void @finch_panic(ptr @.str.2078, i64 1345, ptr @.str.2079)
|
|
unreachable
|
|
ok3352:
|
|
%t35 = getelementptr inbounds %S.gen.Gen, ptr %t33, i32 0, i32 16
|
|
%t36 = load i64, ptr %a10
|
|
%t37 = load { ptr, i64, i64 }, ptr %t35
|
|
%t38 = extractvalue { ptr, i64, i64 } %t37, 1
|
|
%t39 = icmp uge i64 %t36, %t38
|
|
br i1 %t39, label %range3353, label %inrange3354
|
|
range3353:
|
|
call void @finch_panic_index(ptr @.str.2080, i64 1345, i64 %t36, i64 %t38)
|
|
unreachable
|
|
inrange3354:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds %S.gen.Template, ptr %t40, i64 %t36
|
|
%t42 = load %S.gen.Template, ptr %t41
|
|
store %S.gen.Template %t42, ptr %a43
|
|
call void @finch.copy.S_gen_Template(ptr %a44, ptr %a43)
|
|
%t45 = load %S.gen.Template, ptr %a44
|
|
store %S.gen.Template %t45, ptr %a46
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1
|
|
%t48 = load i64, ptr %t47
|
|
%t49 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3
|
|
%t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1
|
|
%t51 = load i64, ptr %t50
|
|
%t52 = icmp ne i64 %t48, %t51
|
|
br i1 %t52, label %then3355, label %endif3357
|
|
then3355:
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = load %S.ast.Node, ptr %a5
|
|
%t55 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t55, ptr %a57
|
|
store { ptr, i64, i64 } { ptr @.str.2081, i64 7, i64 0 }, ptr %a58
|
|
call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a56
|
|
%t60 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3
|
|
%t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1
|
|
%t62 = load i64, ptr %t61
|
|
call void @finch_str_from_int(ptr %a63, i64 %t62)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t59, ptr %a66
|
|
store { ptr, i64, i64 } %t64, ptr %a67
|
|
call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t68, ptr %a70
|
|
store { ptr, i64, i64 } { ptr @.str.2082, i64 24, i64 0 }, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
%t73 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t72, ptr %a75
|
|
store { ptr, i64, i64 } %t73, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
store { ptr, i64, i64 } %t77, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.2083, i64 1, i64 0 }, ptr %a80
|
|
call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a78
|
|
%t82 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3
|
|
%t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2084, i64 2, i64 0 }, ptr %a84
|
|
call void @finch_str_join(ptr %a85, ptr %t82, ptr %a84)
|
|
%t86 = load { ptr, i64, i64 }, ptr %a85
|
|
store { ptr, i64, i64 } %t81, ptr %a88
|
|
store { ptr, i64, i64 } %t86, ptr %a89
|
|
call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t90, ptr %a92
|
|
store { ptr, i64, i64 } { ptr @.str.2085, i64 11, i64 0 }, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1
|
|
%t96 = load i64, ptr %t95
|
|
call void @finch_str_from_int(ptr %a97, i64 %t96)
|
|
%t98 = load { ptr, i64, i64 }, ptr %a97
|
|
store { ptr, i64, i64 } %t94, ptr %a100
|
|
store { ptr, i64, i64 } %t98, ptr %a101
|
|
call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a99
|
|
call void @finch.gen.fail(ptr %t53, %S.ast.Node %t54, { ptr, i64, i64 } %t102)
|
|
br label %endif3357
|
|
endif3357:
|
|
%t103 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t103, ptr %a105
|
|
store { ptr, i64, i64 } { ptr @.str.2086, i64 1, i64 0 }, ptr %a106
|
|
call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106)
|
|
%t107 = load { ptr, i64, i64 }, ptr %a104
|
|
%t108 = load { ptr, i64, i64 }, ptr %a4
|
|
%t109 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t108)
|
|
store { ptr, i64, i64 } %t107, ptr %a111
|
|
store { ptr, i64, i64 } %t109, ptr %a112
|
|
call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112)
|
|
%t113 = load { ptr, i64, i64 }, ptr %a110
|
|
store { ptr, i64, i64 } %t113, ptr %a115
|
|
store { ptr, i64, i64 } { ptr @.str.2087, i64 1, i64 0 }, ptr %a116
|
|
call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a114
|
|
store { ptr, i64, i64 } %t117, ptr %a118
|
|
%t119 = load ptr, ptr %a1
|
|
%t120 = load { ptr, i64, i64 }, ptr %a2
|
|
%t121 = load { ptr, i64, i64 }, ptr %a118
|
|
%t122 = call i64 @finch.gen.findStruct(ptr %t119, { ptr, i64, i64 } %t120, { ptr, i64, i64 } %t121)
|
|
%t123 = icmp slt i64 %t122, 0
|
|
br i1 %t123, label %then3358, label %endif3360
|
|
then3358:
|
|
%t124 = load ptr, ptr %a1
|
|
%t125 = icmp eq ptr %t124, null
|
|
br i1 %t125, label %panic3361, label %ok3362
|
|
panic3361:
|
|
call void @finch_panic(ptr @.str.2088, i64 1351, ptr @.str.2089)
|
|
unreachable
|
|
ok3362:
|
|
%t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 15
|
|
%t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t126, i32 0, i32 1
|
|
%t128 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t128, ptr %a129
|
|
call void @finch_str_copy(ptr %a130, ptr %a129)
|
|
%t131 = load { ptr, i64, i64 }, ptr %a130
|
|
%t132 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t131, 0
|
|
%t133 = load { ptr, i64, i64 }, ptr %a118
|
|
store { ptr, i64, i64 } %t133, ptr %a134
|
|
call void @finch_str_copy(ptr %a135, ptr %a134)
|
|
%t136 = load { ptr, i64, i64 }, ptr %a135
|
|
%t137 = insertvalue %S.gen.StructDef %t132, { ptr, i64, i64 } %t136, 1
|
|
%t138 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t138, ptr %a139
|
|
call void @finch_str_copy(ptr %a140, ptr %a139)
|
|
%t141 = load { ptr, i64, i64 }, ptr %a140
|
|
%t142 = insertvalue %S.gen.StructDef %t137, { ptr, i64, i64 } %t141, 5
|
|
%t143 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3
|
|
%t144 = load { ptr, i64, i64 }, ptr %t143
|
|
store { ptr, i64, i64 } %t144, ptr %a145
|
|
call void @finch.copy.arr_str(ptr %a146, ptr %a145)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a146
|
|
%t148 = insertvalue %S.gen.StructDef %t142, { ptr, i64, i64 } %t147, 6
|
|
%t149 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t149, ptr %a150
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a151, ptr %a150)
|
|
%t152 = load { ptr, i64, i64 }, ptr %a151
|
|
%t153 = insertvalue %S.gen.StructDef %t148, { ptr, i64, i64 } %t152, 7
|
|
%t154 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 4
|
|
%t155 = load i64, ptr %t154
|
|
%t156 = insertvalue %S.gen.StructDef %t153, i64 %t155, 13
|
|
%t157 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 5
|
|
%t158 = load i64, ptr %t157
|
|
%t159 = insertvalue %S.gen.StructDef %t156, i64 %t158, 14
|
|
%t160 = load i64, ptr %t127
|
|
%t161 = add i64 %t160, 1
|
|
call void @finch_arr_reserve(ptr %t126, i64 %t161, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64))
|
|
%t162 = load ptr, ptr %t126
|
|
%t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t160
|
|
store %S.gen.StructDef %t159, ptr %t163
|
|
store i64 %t161, ptr %t127
|
|
%t164 = load ptr, ptr %a1
|
|
%t165 = load ptr, ptr %a1
|
|
%t166 = icmp eq ptr %t165, null
|
|
br i1 %t166, label %panic3363, label %ok3364
|
|
panic3363:
|
|
call void @finch_panic(ptr @.str.2090, i64 1352, ptr @.str.2091)
|
|
unreachable
|
|
ok3364:
|
|
%t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 15
|
|
%t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1
|
|
%t169 = load i64, ptr %t168
|
|
%t170 = sub i64 %t169, 1
|
|
call void @finch.gen.resolveStruct(ptr %t164, i64 %t170)
|
|
br label %endif3360
|
|
endif3360:
|
|
%t171 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2092, i64 6, i64 0 }, 0
|
|
%t172 = load { ptr, i64, i64 }, ptr %a118
|
|
store { ptr, i64, i64 } %t172, ptr %a173
|
|
call void @finch_str_copy(ptr %a174, ptr %a173)
|
|
%t175 = load { ptr, i64, i64 }, ptr %a174
|
|
%t176 = insertvalue %S.ast.Type %t171, { ptr, i64, i64 } %t175, 2
|
|
%t177 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t177, ptr %a178
|
|
call void @finch_str_copy(ptr %a179, ptr %a178)
|
|
%t180 = load { ptr, i64, i64 }, ptr %a179
|
|
%t181 = insertvalue %S.ast.Type %t176, { ptr, i64, i64 } %t180, 3
|
|
ret %S.ast.Type %t181
|
|
}
|
|
|
|
define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca %S.ast.Node, align 16
|
|
%a16 = alloca %S.gen.Template, align 16
|
|
%a17 = alloca %S.gen.Template, align 16
|
|
%a19 = alloca %S.gen.Template, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca i64, align 16
|
|
%a58 = alloca i64, align 16
|
|
%a81 = alloca %S.ast.Node, align 16
|
|
%a82 = alloca %S.ast.Node, align 16
|
|
%a84 = alloca %S.ast.Node, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca %S.gen.FnSig, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
%a270 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca %S.ast.Node, align 16
|
|
%a293 = alloca %S.ast.Node, align 16
|
|
%a295 = alloca %S.ast.Node, align 16
|
|
%a300 = alloca i64, align 16
|
|
%a322 = alloca %S.ast.Type, align 16
|
|
%a326 = alloca %S.ast.Type, align 16
|
|
%a327 = alloca %S.ast.Type, align 16
|
|
%a344 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a381 = alloca { ptr, i64, i64 }, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a388 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a395 = alloca { ptr, i64, i64 }, align 16
|
|
%a401 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca %S.gen.FnSig, align 16
|
|
%a410 = alloca %S.gen.FnSig, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
store %S.ast.Node %p4, ptr %a5
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = icmp eq ptr %t6, null
|
|
br i1 %t7, label %panic3365, label %ok3366
|
|
panic3365:
|
|
call void @finch_panic(ptr @.str.2093, i64 1359, ptr @.str.2094)
|
|
unreachable
|
|
ok3366:
|
|
%t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16
|
|
%t9 = load i64, ptr %a2
|
|
%t10 = load { ptr, i64, i64 }, ptr %t8
|
|
%t11 = extractvalue { ptr, i64, i64 } %t10, 1
|
|
%t12 = icmp uge i64 %t9, %t11
|
|
br i1 %t12, label %range3367, label %inrange3368
|
|
range3367:
|
|
call void @finch_panic_index(ptr @.str.2095, i64 1359, i64 %t9, i64 %t11)
|
|
unreachable
|
|
inrange3368:
|
|
%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.2096, i64 1, i64 0 }, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
%t26 = load { ptr, i64, i64 }, ptr %a3
|
|
%t27 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t26)
|
|
store { ptr, i64, i64 } %t25, ptr %a29
|
|
store { ptr, i64, i64 } %t27, ptr %a30
|
|
call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a28
|
|
store { ptr, i64, i64 } %t31, ptr %a33
|
|
store { ptr, i64, i64 } { ptr @.str.2097, i64 1, i64 0 }, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
%t37 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2
|
|
%t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1
|
|
%t39 = load i64, ptr %t38
|
|
%t40 = icmp sgt i64 %t39, 0
|
|
br i1 %t40, label %then3369, label %else3370
|
|
then3369:
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0
|
|
%t43 = load { ptr, i64, i64 }, ptr %t42
|
|
%t44 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2
|
|
%t45 = load { ptr, i64, i64 }, ptr %t44
|
|
%t46 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1
|
|
%t47 = load { ptr, i64, i64 }, ptr %t46
|
|
%t48 = call i64 @finch.gen.findMethod(ptr %t41, { ptr, i64, i64 } %t43, { ptr, i64, i64 } %t45, { ptr, i64, i64 } %t47)
|
|
store i64 %t48, ptr %a49
|
|
%t50 = load i64, ptr %a49
|
|
%t51 = icmp sge i64 %t50, 0
|
|
br i1 %t51, label %then3372, label %endif3374
|
|
then3372:
|
|
%t52 = load i64, ptr %a49
|
|
ret i64 %t52
|
|
endif3374:
|
|
br label %endif3371
|
|
else3370:
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0
|
|
%t55 = load { ptr, i64, i64 }, ptr %t54
|
|
%t56 = load { ptr, i64, i64 }, ptr %a36
|
|
%t57 = call i64 @finch.gen.findFn(ptr %t53, { ptr, i64, i64 } %t55, { ptr, i64, i64 } %t56)
|
|
store i64 %t57, ptr %a58
|
|
%t59 = load i64, ptr %a58
|
|
%t60 = icmp sge i64 %t59, 0
|
|
br i1 %t60, label %then3375, label %endif3377
|
|
then3375:
|
|
%t61 = load i64, ptr %a58
|
|
ret i64 %t61
|
|
endif3377:
|
|
br label %endif3371
|
|
endif3371:
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = icmp eq ptr %t62, null
|
|
br i1 %t63, label %panic3378, label %ok3379
|
|
panic3378:
|
|
call void @finch_panic(ptr @.str.2098, i64 1372, ptr @.str.2099)
|
|
unreachable
|
|
ok3379:
|
|
%t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 0
|
|
%t65 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4
|
|
%t66 = load i64, ptr %t65
|
|
%t67 = load { ptr, i64, i64 }, ptr %t64
|
|
%t68 = extractvalue { ptr, i64, i64 } %t67, 1
|
|
%t69 = icmp uge i64 %t66, %t68
|
|
br i1 %t69, label %range3380, label %inrange3381
|
|
range3380:
|
|
call void @finch_panic_index(ptr @.str.2100, i64 1372, i64 %t66, i64 %t68)
|
|
unreachable
|
|
inrange3381:
|
|
%t70 = extractvalue { ptr, i64, i64 } %t67, 0
|
|
%t71 = getelementptr inbounds %S.ast.Program, ptr %t70, i64 %t66
|
|
%t72 = getelementptr inbounds %S.ast.Program, ptr %t71, i32 0, i32 8
|
|
%t73 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5
|
|
%t74 = load i64, ptr %t73
|
|
%t75 = load { ptr, i64, i64 }, ptr %t72
|
|
%t76 = extractvalue { ptr, i64, i64 } %t75, 1
|
|
%t77 = icmp uge i64 %t74, %t76
|
|
br i1 %t77, label %range3382, label %inrange3383
|
|
range3382:
|
|
call void @finch_panic_index(ptr @.str.2101, i64 1372, i64 %t74, i64 %t76)
|
|
unreachable
|
|
inrange3383:
|
|
%t78 = extractvalue { ptr, i64, i64 } %t75, 0
|
|
%t79 = getelementptr inbounds %S.ast.Node, ptr %t78, i64 %t74
|
|
%t80 = load %S.ast.Node, ptr %t79
|
|
store %S.ast.Node %t80, ptr %a81
|
|
call void @finch.copy.S_ast_Node(ptr %a82, ptr %a81)
|
|
%t83 = load %S.ast.Node, ptr %a82
|
|
store %S.ast.Node %t83, ptr %a84
|
|
%t85 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0
|
|
%t86 = load { ptr, i64, i64 }, ptr %t85
|
|
store { ptr, i64, i64 } %t86, ptr %a87
|
|
call void @finch_str_copy(ptr %a88, ptr %a87)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a88
|
|
%t90 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t89, 0
|
|
%t91 = load { ptr, i64, i64 }, ptr %a36
|
|
store { ptr, i64, i64 } %t91, ptr %a92
|
|
call void @finch_str_copy(ptr %a93, ptr %a92)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a93
|
|
%t95 = insertvalue %S.gen.FnSig %t90, { ptr, i64, i64 } %t94, 1
|
|
%t96 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0
|
|
%t97 = load { ptr, i64, i64 }, ptr %t96
|
|
store { ptr, i64, i64 } %t97, ptr %a98
|
|
call void @finch_str_copy(ptr %a99, ptr %a98)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a99
|
|
%t101 = insertvalue %S.gen.FnSig %t95, { ptr, i64, i64 } %t100, 3
|
|
%t102 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3
|
|
%t103 = load { ptr, i64, i64 }, ptr %t102
|
|
store { ptr, i64, i64 } %t103, ptr %a104
|
|
call void @finch.copy.arr_str(ptr %a105, ptr %a104)
|
|
%t106 = load { ptr, i64, i64 }, ptr %a105
|
|
%t107 = insertvalue %S.gen.FnSig %t101, { ptr, i64, i64 } %t106, 6
|
|
%t108 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t108, ptr %a109
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a110, ptr %a109)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a110
|
|
%t112 = insertvalue %S.gen.FnSig %t107, { ptr, i64, i64 } %t111, 7
|
|
%t113 = load { ptr, i64, i64 }, ptr %a36
|
|
store { ptr, i64, i64 } %t113, ptr %a114
|
|
call void @finch_str_copy(ptr %a115, ptr %a114)
|
|
%t116 = load { ptr, i64, i64 }, ptr %a115
|
|
%t117 = insertvalue %S.gen.FnSig %t112, { ptr, i64, i64 } %t116, 8
|
|
%t118 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 7
|
|
%t119 = load i1, ptr %t118
|
|
%t120 = insertvalue %S.gen.FnSig %t117, i1 %t119, 9
|
|
%t121 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7
|
|
%t122 = load i1, ptr %t121
|
|
%t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 10
|
|
%t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4
|
|
%t125 = load i64, ptr %t124
|
|
%t126 = insertvalue %S.gen.FnSig %t123, i64 %t125, 16
|
|
%t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5
|
|
%t128 = load i64, ptr %t127
|
|
%t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 17
|
|
store %S.gen.FnSig %t129, ptr %a130
|
|
%t131 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0
|
|
%t132 = load { ptr, i64, i64 }, ptr %t131
|
|
%t133 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t132)
|
|
store { ptr, i64, i64 } { ptr @.str.2102, i64 7, i64 0 }, ptr %a135
|
|
store { ptr, i64, i64 } %t133, ptr %a136
|
|
call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136)
|
|
%t137 = load { ptr, i64, i64 }, ptr %a134
|
|
store { ptr, i64, i64 } %t137, ptr %a139
|
|
store { ptr, i64, i64 } { ptr @.str.2103, i64 1, i64 0 }, ptr %a140
|
|
call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140)
|
|
%t141 = load { ptr, i64, i64 }, ptr %a138
|
|
%t142 = load { ptr, i64, i64 }, ptr %a36
|
|
%t143 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t142)
|
|
store { ptr, i64, i64 } %t141, ptr %a145
|
|
store { ptr, i64, i64 } %t143, ptr %a146
|
|
call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a144
|
|
%t148 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 11
|
|
store { ptr, i64, i64 } %t147, ptr %t148
|
|
%t149 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2
|
|
%t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1
|
|
%t151 = load i64, ptr %t150
|
|
%t152 = icmp sgt i64 %t151, 0
|
|
br i1 %t152, label %then3384, label %endif3386
|
|
then3384:
|
|
%t153 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1
|
|
%t154 = load { ptr, i64, i64 }, ptr %t153
|
|
%t155 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 1
|
|
store { ptr, i64, i64 } %t154, ptr %a156
|
|
call void @finch_str_copy(ptr %a157, ptr %a156)
|
|
%t158 = load { ptr, i64, i64 }, ptr %a157
|
|
store { ptr, i64, i64 } %t158, ptr %t155
|
|
%t159 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2
|
|
%t160 = load { ptr, i64, i64 }, ptr %t159
|
|
%t161 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t160, ptr %a162
|
|
call void @finch_str_copy(ptr %a163, ptr %a162)
|
|
%t164 = load { ptr, i64, i64 }, ptr %a163
|
|
store { ptr, i64, i64 } %t164, ptr %t161
|
|
%t165 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2
|
|
%t166 = load { ptr, i64, i64 }, ptr %t165
|
|
store { ptr, i64, i64 } %t166, ptr %a168
|
|
store { ptr, i64, i64 } { ptr @.str.2104, i64 1, i64 0 }, ptr %a169
|
|
call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169)
|
|
%t170 = load { ptr, i64, i64 }, ptr %a167
|
|
%t171 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1
|
|
%t172 = load { ptr, i64, i64 }, ptr %t171
|
|
store { ptr, i64, i64 } %t170, ptr %a174
|
|
store { ptr, i64, i64 } %t172, ptr %a175
|
|
call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175)
|
|
%t176 = load { ptr, i64, i64 }, ptr %a173
|
|
%t177 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 8
|
|
store { ptr, i64, i64 } %t176, ptr %t177
|
|
%t178 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0
|
|
%t179 = load { ptr, i64, i64 }, ptr %t178
|
|
%t180 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t179)
|
|
store { ptr, i64, i64 } { ptr @.str.2105, i64 7, i64 0 }, ptr %a182
|
|
store { ptr, i64, i64 } %t180, ptr %a183
|
|
call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183)
|
|
%t184 = load { ptr, i64, i64 }, ptr %a181
|
|
store { ptr, i64, i64 } %t184, ptr %a186
|
|
store { ptr, i64, i64 } { ptr @.str.2106, i64 1, i64 0 }, ptr %a187
|
|
call void @finch_str_concat(ptr %a185, ptr %a186, ptr %a187)
|
|
%t188 = load { ptr, i64, i64 }, ptr %a185
|
|
%t189 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2
|
|
%t190 = load { ptr, i64, i64 }, ptr %t189
|
|
%t191 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t190)
|
|
store { ptr, i64, i64 } %t188, ptr %a193
|
|
store { ptr, i64, i64 } %t191, ptr %a194
|
|
call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194)
|
|
%t195 = load { ptr, i64, i64 }, ptr %a192
|
|
store { ptr, i64, i64 } %t195, ptr %a197
|
|
store { ptr, i64, i64 } { ptr @.str.2107, i64 1, i64 0 }, ptr %a198
|
|
call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198)
|
|
%t199 = load { ptr, i64, i64 }, ptr %a196
|
|
%t200 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1
|
|
%t201 = load { ptr, i64, i64 }, ptr %t200
|
|
store { ptr, i64, i64 } %t199, ptr %a203
|
|
store { ptr, i64, i64 } %t201, ptr %a204
|
|
call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204)
|
|
%t205 = load { ptr, i64, i64 }, ptr %a202
|
|
%t206 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 11
|
|
store { ptr, i64, i64 } %t205, ptr %t206
|
|
br label %endif3386
|
|
endif3386:
|
|
%t207 = load ptr, ptr %a1
|
|
%t208 = icmp eq ptr %t207, null
|
|
br i1 %t208, label %panic3387, label %ok3388
|
|
panic3387:
|
|
call void @finch_panic(ptr @.str.2108, i64 1381, ptr @.str.2109)
|
|
unreachable
|
|
ok3388:
|
|
%t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 17
|
|
%t210 = load { ptr, i64, i64 }, ptr %t209
|
|
store { ptr, i64, i64 } %t210, ptr %a211
|
|
call void @finch.copy.arr_str(ptr %a212, ptr %a211)
|
|
%t213 = load { ptr, i64, i64 }, ptr %a212
|
|
store { ptr, i64, i64 } %t213, ptr %a214
|
|
%t215 = load ptr, ptr %a1
|
|
%t216 = icmp eq ptr %t215, null
|
|
br i1 %t216, label %panic3389, label %ok3390
|
|
panic3389:
|
|
call void @finch_panic(ptr @.str.2110, i64 1382, ptr @.str.2111)
|
|
unreachable
|
|
ok3390:
|
|
%t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 18
|
|
%t218 = load { ptr, i64, i64 }, ptr %t217
|
|
store { ptr, i64, i64 } %t218, ptr %a219
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a220, ptr %a219)
|
|
%t221 = load { ptr, i64, i64 }, ptr %a220
|
|
store { ptr, i64, i64 } %t221, ptr %a222
|
|
%t223 = load ptr, ptr %a1
|
|
%t224 = icmp eq ptr %t223, null
|
|
br i1 %t224, label %panic3391, label %ok3392
|
|
panic3391:
|
|
call void @finch_panic(ptr @.str.2112, i64 1383, ptr @.str.2113)
|
|
unreachable
|
|
ok3392:
|
|
%t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 13
|
|
%t226 = load { ptr, i64, i64 }, ptr %t225
|
|
store { ptr, i64, i64 } %t226, ptr %a227
|
|
call void @finch_str_copy(ptr %a228, ptr %a227)
|
|
%t229 = load { ptr, i64, i64 }, ptr %a228
|
|
store { ptr, i64, i64 } %t229, ptr %a230
|
|
%t231 = load ptr, ptr %a1
|
|
%t232 = icmp eq ptr %t231, null
|
|
br i1 %t232, label %panic3393, label %ok3394
|
|
panic3393:
|
|
call void @finch_panic(ptr @.str.2114, i64 1384, ptr @.str.2115)
|
|
unreachable
|
|
ok3394:
|
|
%t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 19
|
|
%t234 = load { ptr, i64, i64 }, ptr %t233
|
|
store { ptr, i64, i64 } %t234, ptr %a235
|
|
call void @finch_str_copy(ptr %a236, ptr %a235)
|
|
%t237 = load { ptr, i64, i64 }, ptr %a236
|
|
store { ptr, i64, i64 } %t237, ptr %a238
|
|
%t239 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3
|
|
%t240 = load { ptr, i64, i64 }, ptr %t239
|
|
%t241 = load ptr, ptr %a1
|
|
%t242 = icmp eq ptr %t241, null
|
|
br i1 %t242, label %panic3395, label %ok3396
|
|
panic3395:
|
|
call void @finch_panic(ptr @.str.2116, i64 1385, ptr @.str.2117)
|
|
unreachable
|
|
ok3396:
|
|
%t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 17
|
|
store { ptr, i64, i64 } %t240, ptr %a244
|
|
call void @finch.copy.arr_str(ptr %a245, ptr %a244)
|
|
%t246 = load { ptr, i64, i64 }, ptr %a245
|
|
store { ptr, i64, i64 } %t246, ptr %t243
|
|
%t247 = load { ptr, i64, i64 }, ptr %a3
|
|
%t248 = load ptr, ptr %a1
|
|
%t249 = icmp eq ptr %t248, null
|
|
br i1 %t249, label %panic3397, label %ok3398
|
|
panic3397:
|
|
call void @finch_panic(ptr @.str.2118, i64 1386, ptr @.str.2119)
|
|
unreachable
|
|
ok3398:
|
|
%t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 18
|
|
store { ptr, i64, i64 } %t247, ptr %a251
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a252, ptr %a251)
|
|
%t253 = load { ptr, i64, i64 }, ptr %a252
|
|
store { ptr, i64, i64 } %t253, ptr %t250
|
|
%t254 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0
|
|
%t255 = load { ptr, i64, i64 }, ptr %t254
|
|
%t256 = load ptr, ptr %a1
|
|
%t257 = icmp eq ptr %t256, null
|
|
br i1 %t257, label %panic3399, label %ok3400
|
|
panic3399:
|
|
call void @finch_panic(ptr @.str.2120, i64 1387, ptr @.str.2121)
|
|
unreachable
|
|
ok3400:
|
|
%t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t255, ptr %a259
|
|
call void @finch_str_copy(ptr %a260, ptr %a259)
|
|
%t261 = load { ptr, i64, i64 }, ptr %a260
|
|
store { ptr, i64, i64 } %t261, ptr %t258
|
|
%t262 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 8
|
|
%t263 = load { ptr, i64, i64 }, ptr %t262
|
|
store { ptr, i64, i64 } { ptr @.str.2122, i64 17, i64 0 }, ptr %a265
|
|
store { ptr, i64, i64 } %t263, ptr %a266
|
|
call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266)
|
|
%t267 = load { ptr, i64, i64 }, ptr %a264
|
|
store { ptr, i64, i64 } %t267, ptr %a269
|
|
store { ptr, i64, i64 } { ptr @.str.2123, i64 1, i64 0 }, ptr %a270
|
|
call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270)
|
|
%t271 = load { ptr, i64, i64 }, ptr %a268
|
|
%t272 = load ptr, ptr %a1
|
|
%t273 = icmp eq ptr %t272, null
|
|
br i1 %t273, label %panic3401, label %ok3402
|
|
panic3401:
|
|
call void @finch_panic(ptr @.str.2124, i64 1388, ptr @.str.2125)
|
|
unreachable
|
|
ok3402:
|
|
%t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 19
|
|
store { ptr, i64, i64 } %t271, ptr %t274
|
|
%t275 = load ptr, ptr %a1
|
|
%t276 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 5
|
|
%t277 = load %S.ast.Type, ptr %t276
|
|
%t278 = load %S.ast.Node, ptr %a84
|
|
%t279 = call %S.ast.Type @finch.gen.resolve(ptr %t275, %S.ast.Type %t277, %S.ast.Node %t278)
|
|
%t280 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 12
|
|
store %S.ast.Type %t279, ptr %t280
|
|
%t281 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9
|
|
%t282 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9
|
|
%t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1
|
|
%t284 = load i64, ptr %t283
|
|
%t285 = sub i64 %t284, 1
|
|
%t286 = load { ptr, i64, i64 }, ptr %t281
|
|
%t287 = extractvalue { ptr, i64, i64 } %t286, 1
|
|
%t288 = icmp uge i64 %t285, %t287
|
|
br i1 %t288, label %range3403, label %inrange3404
|
|
range3403:
|
|
call void @finch_panic_index(ptr @.str.2126, i64 1390, i64 %t285, i64 %t287)
|
|
unreachable
|
|
inrange3404:
|
|
%t289 = extractvalue { ptr, i64, i64 } %t286, 0
|
|
%t290 = getelementptr inbounds %S.ast.Node, ptr %t289, i64 %t285
|
|
%t291 = load %S.ast.Node, ptr %t290
|
|
store %S.ast.Node %t291, ptr %a292
|
|
call void @finch.copy.S_ast_Node(ptr %a293, ptr %a292)
|
|
%t294 = load %S.ast.Node, ptr %a293
|
|
store %S.ast.Node %t294, ptr %a295
|
|
%t296 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9
|
|
%t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1
|
|
%t298 = load i64, ptr %t297
|
|
%t299 = sub i64 %t298, 1
|
|
store i64 0, ptr %a300
|
|
br label %for.cond3405
|
|
for.cond3405:
|
|
%t301 = load i64, ptr %a300
|
|
%t302 = icmp slt i64 %t301, %t299
|
|
br i1 %t302, label %for.body3406, label %for.end3408
|
|
for.body3406:
|
|
%t303 = load ptr, ptr %a1
|
|
%t304 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9
|
|
%t305 = load i64, ptr %a300
|
|
%t306 = load { ptr, i64, i64 }, ptr %t304
|
|
%t307 = extractvalue { ptr, i64, i64 } %t306, 1
|
|
%t308 = icmp uge i64 %t305, %t307
|
|
br i1 %t308, label %range3409, label %inrange3410
|
|
range3409:
|
|
call void @finch_panic_index(ptr @.str.2127, i64 1392, i64 %t305, i64 %t307)
|
|
unreachable
|
|
inrange3410:
|
|
%t309 = extractvalue { ptr, i64, i64 } %t306, 0
|
|
%t310 = getelementptr inbounds %S.ast.Node, ptr %t309, i64 %t305
|
|
%t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i32 0, i32 5
|
|
%t312 = load %S.ast.Type, ptr %t311
|
|
%t313 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9
|
|
%t314 = load i64, ptr %a300
|
|
%t315 = load { ptr, i64, i64 }, ptr %t313
|
|
%t316 = extractvalue { ptr, i64, i64 } %t315, 1
|
|
%t317 = icmp uge i64 %t314, %t316
|
|
br i1 %t317, label %range3411, label %inrange3412
|
|
range3411:
|
|
call void @finch_panic_index(ptr @.str.2128, i64 1392, i64 %t314, i64 %t316)
|
|
unreachable
|
|
inrange3412:
|
|
%t318 = extractvalue { ptr, i64, i64 } %t315, 0
|
|
%t319 = getelementptr inbounds %S.ast.Node, ptr %t318, i64 %t314
|
|
%t320 = load %S.ast.Node, ptr %t319
|
|
%t321 = call %S.ast.Type @finch.gen.resolve(ptr %t303, %S.ast.Type %t312, %S.ast.Node %t320)
|
|
store %S.ast.Type %t321, ptr %a322
|
|
%t323 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 13
|
|
%t324 = getelementptr inbounds { ptr, i64, i64 }, ptr %t323, i32 0, i32 1
|
|
%t325 = load %S.ast.Type, ptr %a322
|
|
store %S.ast.Type %t325, ptr %a326
|
|
call void @finch.copy.S_ast_Type(ptr %a327, ptr %a326)
|
|
%t328 = load %S.ast.Type, ptr %a327
|
|
%t329 = load i64, ptr %t324
|
|
%t330 = add i64 %t329, 1
|
|
call void @finch_arr_reserve(ptr %t323, i64 %t330, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t331 = load ptr, ptr %t323
|
|
%t332 = getelementptr inbounds %S.ast.Type, ptr %t331, i64 %t329
|
|
store %S.ast.Type %t328, ptr %t332
|
|
store i64 %t330, ptr %t324
|
|
%t333 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 14
|
|
%t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1
|
|
%t335 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9
|
|
%t336 = load i64, ptr %a300
|
|
%t337 = load { ptr, i64, i64 }, ptr %t335
|
|
%t338 = extractvalue { ptr, i64, i64 } %t337, 1
|
|
%t339 = icmp uge i64 %t336, %t338
|
|
br i1 %t339, label %range3413, label %inrange3414
|
|
range3413:
|
|
call void @finch_panic_index(ptr @.str.2129, i64 1394, i64 %t336, i64 %t338)
|
|
unreachable
|
|
inrange3414:
|
|
%t340 = extractvalue { ptr, i64, i64 } %t337, 0
|
|
%t341 = getelementptr inbounds %S.ast.Node, ptr %t340, i64 %t336
|
|
%t342 = getelementptr inbounds %S.ast.Node, ptr %t341, i32 0, i32 1
|
|
%t343 = load { ptr, i64, i64 }, ptr %t342
|
|
store { ptr, i64, i64 } %t343, ptr %a344
|
|
call void @finch_str_copy(ptr %a345, ptr %a344)
|
|
%t346 = load { ptr, i64, i64 }, ptr %a345
|
|
%t347 = load i64, ptr %t334
|
|
%t348 = add i64 %t347, 1
|
|
call void @finch_arr_reserve(ptr %t333, i64 %t348, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t349 = load ptr, ptr %t333
|
|
%t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i64 %t347
|
|
store { ptr, i64, i64 } %t346, ptr %t350
|
|
store i64 %t348, ptr %t334
|
|
%t351 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 15
|
|
%t352 = getelementptr inbounds { ptr, i64, i64 }, ptr %t351, i32 0, i32 1
|
|
%t353 = load ptr, ptr %a1
|
|
%t354 = load %S.ast.Type, ptr %a322
|
|
%t355 = call i1 @finch.gen.owning(ptr %t353, %S.ast.Type %t354)
|
|
br label %logic.from3415
|
|
logic.from3415:
|
|
br i1 %t355, label %logic.rhs3416, label %logic.end3417
|
|
logic.rhs3416:
|
|
%t356 = load ptr, ptr %a1
|
|
%t357 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9
|
|
%t358 = load i64, ptr %a300
|
|
%t359 = load { ptr, i64, i64 }, ptr %t357
|
|
%t360 = extractvalue { ptr, i64, i64 } %t359, 1
|
|
%t361 = icmp uge i64 %t358, %t360
|
|
br i1 %t361, label %range3418, label %inrange3419
|
|
range3418:
|
|
call void @finch_panic_index(ptr @.str.2130, i64 1395, i64 %t358, i64 %t360)
|
|
unreachable
|
|
inrange3419:
|
|
%t362 = extractvalue { ptr, i64, i64 } %t359, 0
|
|
%t363 = getelementptr inbounds %S.ast.Node, ptr %t362, i64 %t358
|
|
%t364 = getelementptr inbounds %S.ast.Node, ptr %t363, i32 0, i32 1
|
|
%t365 = load { ptr, i64, i64 }, ptr %t364
|
|
%t366 = load %S.ast.Node, ptr %a295
|
|
%t367 = call i1 @finch.gen.mutates(ptr %t356, { ptr, i64, i64 } %t365, %S.ast.Node %t366)
|
|
%t368 = xor i1 %t367, true
|
|
br label %logic.rend3420
|
|
logic.rend3420:
|
|
br label %logic.end3417
|
|
logic.end3417:
|
|
%t369 = phi i1 [ false, %logic.from3415 ], [ %t368, %logic.rend3420 ]
|
|
%t370 = load i64, ptr %t352
|
|
%t371 = add i64 %t370, 1
|
|
call void @finch_arr_reserve(ptr %t351, i64 %t371, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64))
|
|
%t372 = load ptr, ptr %t351
|
|
%t373 = getelementptr inbounds i1, ptr %t372, i64 %t370
|
|
store i1 %t369, ptr %t373
|
|
store i64 %t371, ptr %t352
|
|
br label %for.step3407
|
|
for.step3407:
|
|
%t374 = load i64, ptr %a300
|
|
%t375 = add i64 %t374, 1
|
|
store i64 %t375, ptr %a300
|
|
br label %for.cond3405
|
|
for.end3408:
|
|
%t376 = load { ptr, i64, i64 }, ptr %a214
|
|
%t377 = load ptr, ptr %a1
|
|
%t378 = icmp eq ptr %t377, null
|
|
br i1 %t378, label %panic3421, label %ok3422
|
|
panic3421:
|
|
call void @finch_panic(ptr @.str.2131, i64 1397, ptr @.str.2132)
|
|
unreachable
|
|
ok3422:
|
|
%t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 17
|
|
store { ptr, i64, i64 } %t376, ptr %a380
|
|
call void @finch.copy.arr_str(ptr %a381, ptr %a380)
|
|
%t382 = load { ptr, i64, i64 }, ptr %a381
|
|
store { ptr, i64, i64 } %t382, ptr %t379
|
|
%t383 = load { ptr, i64, i64 }, ptr %a222
|
|
%t384 = load ptr, ptr %a1
|
|
%t385 = icmp eq ptr %t384, null
|
|
br i1 %t385, label %panic3423, label %ok3424
|
|
panic3423:
|
|
call void @finch_panic(ptr @.str.2133, i64 1398, ptr @.str.2134)
|
|
unreachable
|
|
ok3424:
|
|
%t386 = getelementptr inbounds %S.gen.Gen, ptr %t384, i32 0, i32 18
|
|
store { ptr, i64, i64 } %t383, ptr %a387
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a388, ptr %a387)
|
|
%t389 = load { ptr, i64, i64 }, ptr %a388
|
|
store { ptr, i64, i64 } %t389, ptr %t386
|
|
%t390 = load { ptr, i64, i64 }, ptr %a230
|
|
%t391 = load ptr, ptr %a1
|
|
%t392 = icmp eq ptr %t391, null
|
|
br i1 %t392, label %panic3425, label %ok3426
|
|
panic3425:
|
|
call void @finch_panic(ptr @.str.2135, i64 1399, ptr @.str.2136)
|
|
unreachable
|
|
ok3426:
|
|
%t393 = getelementptr inbounds %S.gen.Gen, ptr %t391, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t390, ptr %a394
|
|
call void @finch_str_copy(ptr %a395, ptr %a394)
|
|
%t396 = load { ptr, i64, i64 }, ptr %a395
|
|
store { ptr, i64, i64 } %t396, ptr %t393
|
|
%t397 = load { ptr, i64, i64 }, ptr %a238
|
|
%t398 = load ptr, ptr %a1
|
|
%t399 = icmp eq ptr %t398, null
|
|
br i1 %t399, label %panic3427, label %ok3428
|
|
panic3427:
|
|
call void @finch_panic(ptr @.str.2137, i64 1400, ptr @.str.2138)
|
|
unreachable
|
|
ok3428:
|
|
%t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 19
|
|
store { ptr, i64, i64 } %t397, ptr %a401
|
|
call void @finch_str_copy(ptr %a402, ptr %a401)
|
|
%t403 = load { ptr, i64, i64 }, ptr %a402
|
|
store { ptr, i64, i64 } %t403, ptr %t400
|
|
%t404 = load ptr, ptr %a1
|
|
%t405 = icmp eq ptr %t404, null
|
|
br i1 %t405, label %panic3429, label %ok3430
|
|
panic3429:
|
|
call void @finch_panic(ptr @.str.2139, i64 1401, ptr @.str.2140)
|
|
unreachable
|
|
ok3430:
|
|
%t406 = getelementptr inbounds %S.gen.Gen, ptr %t404, i32 0, i32 14
|
|
%t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i32 0, i32 1
|
|
%t408 = load %S.gen.FnSig, ptr %a130
|
|
store %S.gen.FnSig %t408, ptr %a409
|
|
call void @finch.copy.S_gen_FnSig(ptr %a410, ptr %a409)
|
|
%t411 = load %S.gen.FnSig, ptr %a410
|
|
%t412 = load i64, ptr %t407
|
|
%t413 = add i64 %t412, 1
|
|
call void @finch_arr_reserve(ptr %t406, i64 %t413, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64))
|
|
%t414 = load ptr, ptr %t406
|
|
%t415 = getelementptr inbounds %S.gen.FnSig, ptr %t414, i64 %t412
|
|
store %S.gen.FnSig %t411, ptr %t415
|
|
store i64 %t413, ptr %t407
|
|
%t416 = load ptr, ptr %a1
|
|
%t417 = icmp eq ptr %t416, null
|
|
br i1 %t417, label %panic3431, label %ok3432
|
|
panic3431:
|
|
call void @finch_panic(ptr @.str.2141, i64 1402, ptr @.str.2142)
|
|
unreachable
|
|
ok3432:
|
|
%t418 = getelementptr inbounds %S.gen.Gen, ptr %t416, i32 0, i32 14
|
|
%t419 = getelementptr inbounds { ptr, i64, i64 }, ptr %t418, i32 0, i32 1
|
|
%t420 = load i64, ptr %t419
|
|
%t421 = sub i64 %t420, 1
|
|
ret i64 %t421
|
|
}
|
|
|
|
define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca ptr, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca i64, align 16
|
|
%a28 = alloca i64, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca i64, align 16
|
|
%a47 = alloca i64, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca i64, align 16
|
|
%a80 = alloca %S.ast.Type, align 16
|
|
%a81 = alloca %S.ast.Type, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca %S.gen.StructDef, align 16
|
|
%a229 = alloca %S.gen.StructDef, align 16
|
|
%a231 = alloca %S.gen.StructDef, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a237 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca i64, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
store ptr %p4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.2143, i64 5, i64 0 }, ptr %a9
|
|
%t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9)
|
|
%t11 = icmp ne i32 %t10, 0
|
|
br label %logic.from3433
|
|
logic.from3433:
|
|
br i1 %t11, label %logic.rhs3434, label %logic.end3435
|
|
logic.rhs3434:
|
|
%t12 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1
|
|
%t14 = load i64, ptr %t13
|
|
%t15 = icmp eq i64 %t14, 0
|
|
br label %logic.rend3436
|
|
logic.rend3436:
|
|
br label %logic.end3435
|
|
logic.end3435:
|
|
%t16 = phi i1 [ false, %logic.from3433 ], [ %t15, %logic.rend3436 ]
|
|
br label %logic.from3437
|
|
logic.from3437:
|
|
br i1 %t16, label %logic.rhs3438, label %logic.end3439
|
|
logic.rhs3438:
|
|
%t17 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1
|
|
%t19 = load i64, ptr %t18
|
|
%t20 = icmp eq i64 %t19, 0
|
|
br label %logic.rend3440
|
|
logic.rend3440:
|
|
br label %logic.end3439
|
|
logic.end3439:
|
|
%t21 = phi i1 [ false, %logic.from3437 ], [ %t20, %logic.rend3440 ]
|
|
br label %logic.from3441
|
|
logic.from3441:
|
|
br i1 %t21, label %logic.rhs3442, label %logic.end3443
|
|
logic.rhs3442:
|
|
%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.cond3444
|
|
find.cond3444:
|
|
%t29 = load i64, ptr %a28
|
|
%t30 = icmp slt i64 %t29, %t26
|
|
br i1 %t30, label %find.body3445, label %find.end3448
|
|
find.body3445:
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i64 %t29
|
|
%t32 = load { ptr, i64, i64 }, ptr %t31
|
|
store { ptr, i64, i64 } %t32, ptr %a33
|
|
store { ptr, i64, i64 } %t24, ptr %a34
|
|
%t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34)
|
|
%t36 = icmp ne i32 %t35, 0
|
|
br i1 %t36, label %find.hit3446, label %find.next3447
|
|
find.hit3446:
|
|
store i64 %t29, ptr %a25
|
|
br label %find.end3448
|
|
find.next3447:
|
|
%t37 = add i64 %t29, 1
|
|
store i64 %t37, ptr %a28
|
|
br label %find.cond3444
|
|
find.end3448:
|
|
%t38 = load i64, ptr %a25
|
|
%t39 = icmp sge i64 %t38, 0
|
|
br label %logic.rend3449
|
|
logic.rend3449:
|
|
br label %logic.end3443
|
|
logic.end3443:
|
|
%t40 = phi i1 [ false, %logic.from3441 ], [ %t39, %logic.rend3449 ]
|
|
br i1 %t40, label %then3450, label %endif3452
|
|
then3450:
|
|
%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.cond3453
|
|
find.cond3453:
|
|
%t48 = load i64, ptr %a47
|
|
%t49 = icmp slt i64 %t48, %t45
|
|
br i1 %t49, label %find.body3454, label %find.end3457
|
|
find.body3454:
|
|
%t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t48
|
|
%t51 = load { ptr, i64, i64 }, ptr %t50
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
store { ptr, i64, i64 } %t43, ptr %a53
|
|
%t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53)
|
|
%t55 = icmp ne i32 %t54, 0
|
|
br i1 %t55, label %find.hit3455, label %find.next3456
|
|
find.hit3455:
|
|
store i64 %t48, ptr %a44
|
|
br label %find.end3457
|
|
find.next3456:
|
|
%t56 = add i64 %t48, 1
|
|
store i64 %t56, ptr %a47
|
|
br label %find.cond3453
|
|
find.end3457:
|
|
%t57 = load i64, ptr %a44
|
|
store i64 %t57, ptr %a58
|
|
%t59 = load ptr, ptr %a5
|
|
%t60 = icmp eq ptr %t59, null
|
|
br i1 %t60, label %panic3458, label %ok3459
|
|
panic3458:
|
|
call void @finch_panic(ptr @.str.2144, i64 1409, ptr @.str.2145)
|
|
unreachable
|
|
ok3459:
|
|
%t61 = getelementptr inbounds %S.gen.Binds, ptr %t59, i32 0, i32 1
|
|
%t62 = load i64, ptr %a58
|
|
%t63 = load { ptr, i64, i64 }, ptr %t61
|
|
%t64 = extractvalue { ptr, i64, i64 } %t63, 1
|
|
%t65 = icmp uge i64 %t62, %t64
|
|
br i1 %t65, label %range3460, label %inrange3461
|
|
range3460:
|
|
call void @finch_panic_index(ptr @.str.2146, i64 1409, i64 %t62, i64 %t64)
|
|
unreachable
|
|
inrange3461:
|
|
%t66 = extractvalue { ptr, i64, i64 } %t63, 0
|
|
%t67 = getelementptr inbounds i1, ptr %t66, i64 %t62
|
|
%t68 = load i1, ptr %t67
|
|
%t69 = xor i1 %t68, true
|
|
br i1 %t69, label %then3462, label %endif3464
|
|
then3462:
|
|
%t70 = load %S.ast.Type, ptr %a3
|
|
%t71 = load ptr, ptr %a5
|
|
%t72 = icmp eq ptr %t71, null
|
|
br i1 %t72, label %panic3465, label %ok3466
|
|
panic3465:
|
|
call void @finch_panic(ptr @.str.2147, i64 1410, ptr @.str.2148)
|
|
unreachable
|
|
ok3466:
|
|
%t73 = getelementptr inbounds %S.gen.Binds, ptr %t71, i32 0, i32 0
|
|
%t74 = load i64, ptr %a58
|
|
%t75 = load { ptr, i64, i64 }, ptr %t73
|
|
%t76 = extractvalue { ptr, i64, i64 } %t75, 1
|
|
%t77 = icmp uge i64 %t74, %t76
|
|
br i1 %t77, label %range3467, label %inrange3468
|
|
range3467:
|
|
call void @finch_panic_index(ptr @.str.2149, i64 1410, i64 %t74, i64 %t76)
|
|
unreachable
|
|
inrange3468:
|
|
%t78 = extractvalue { ptr, i64, i64 } %t75, 0
|
|
%t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74
|
|
store %S.ast.Type %t70, ptr %a80
|
|
call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80)
|
|
%t82 = load %S.ast.Type, ptr %a81
|
|
store %S.ast.Type %t82, ptr %t79
|
|
%t83 = load ptr, ptr %a5
|
|
%t84 = icmp eq ptr %t83, null
|
|
br i1 %t84, label %panic3469, label %ok3470
|
|
panic3469:
|
|
call void @finch_panic(ptr @.str.2150, i64 1411, ptr @.str.2151)
|
|
unreachable
|
|
ok3470:
|
|
%t85 = getelementptr inbounds %S.gen.Binds, ptr %t83, i32 0, i32 1
|
|
%t86 = load i64, ptr %a58
|
|
%t87 = load { ptr, i64, i64 }, ptr %t85
|
|
%t88 = extractvalue { ptr, i64, i64 } %t87, 1
|
|
%t89 = icmp uge i64 %t86, %t88
|
|
br i1 %t89, label %range3471, label %inrange3472
|
|
range3471:
|
|
call void @finch_panic_index(ptr @.str.2152, i64 1411, i64 %t86, i64 %t88)
|
|
unreachable
|
|
inrange3472:
|
|
%t90 = extractvalue { ptr, i64, i64 } %t87, 0
|
|
%t91 = getelementptr inbounds i1, ptr %t90, i64 %t86
|
|
store i1 true, ptr %t91
|
|
br label %endif3464
|
|
endif3464:
|
|
ret void
|
|
endif3452:
|
|
%t92 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t93 = load { ptr, i64, i64 }, ptr %t92
|
|
store { ptr, i64, i64 } %t93, ptr %a94
|
|
store { ptr, i64, i64 } { ptr @.str.2153, i64 5, i64 0 }, ptr %a95
|
|
%t96 = call i32 @finch_str_eq(ptr %a94, ptr %a95)
|
|
%t97 = icmp ne i32 %t96, 0
|
|
br label %logic.from3473
|
|
logic.from3473:
|
|
br i1 %t97, label %logic.end3475, label %logic.rhs3474
|
|
logic.rhs3474:
|
|
%t98 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t99 = load { ptr, i64, i64 }, ptr %t98
|
|
store { ptr, i64, i64 } %t99, ptr %a100
|
|
store { ptr, i64, i64 } { ptr @.str.2154, i64 3, i64 0 }, ptr %a101
|
|
%t102 = call i32 @finch_str_eq(ptr %a100, ptr %a101)
|
|
%t103 = icmp ne i32 %t102, 0
|
|
br label %logic.rend3476
|
|
logic.rend3476:
|
|
br label %logic.end3475
|
|
logic.end3475:
|
|
%t104 = phi i1 [ true, %logic.from3473 ], [ %t103, %logic.rend3476 ]
|
|
br label %logic.from3477
|
|
logic.from3477:
|
|
br i1 %t104, label %logic.end3479, label %logic.rhs3478
|
|
logic.rhs3478:
|
|
%t105 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t106 = load { ptr, i64, i64 }, ptr %t105
|
|
store { ptr, i64, i64 } %t106, ptr %a107
|
|
store { ptr, i64, i64 } { ptr @.str.2155, i64 5, i64 0 }, ptr %a108
|
|
%t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108)
|
|
%t110 = icmp ne i32 %t109, 0
|
|
br label %logic.rend3480
|
|
logic.rend3480:
|
|
br label %logic.end3479
|
|
logic.end3479:
|
|
%t111 = phi i1 [ true, %logic.from3477 ], [ %t110, %logic.rend3480 ]
|
|
br label %logic.from3481
|
|
logic.from3481:
|
|
br i1 %t111, label %logic.rhs3482, label %logic.end3483
|
|
logic.rhs3482:
|
|
%t112 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1
|
|
%t114 = load i64, ptr %t113
|
|
%t115 = icmp sgt i64 %t114, 0
|
|
br label %logic.rend3484
|
|
logic.rend3484:
|
|
br label %logic.end3483
|
|
logic.end3483:
|
|
%t116 = phi i1 [ false, %logic.from3481 ], [ %t115, %logic.rend3484 ]
|
|
br label %logic.from3485
|
|
logic.from3485:
|
|
br i1 %t116, label %logic.rhs3486, label %logic.end3487
|
|
logic.rhs3486:
|
|
%t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t118 = load { ptr, i64, i64 }, ptr %t117
|
|
%t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t120 = load { ptr, i64, i64 }, ptr %t119
|
|
store { ptr, i64, i64 } %t118, ptr %a121
|
|
store { ptr, i64, i64 } %t120, ptr %a122
|
|
%t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122)
|
|
%t124 = icmp ne i32 %t123, 0
|
|
br label %logic.rend3488
|
|
logic.rend3488:
|
|
br label %logic.end3487
|
|
logic.end3487:
|
|
%t125 = phi i1 [ false, %logic.from3485 ], [ %t124, %logic.rend3488 ]
|
|
br label %logic.from3489
|
|
logic.from3489:
|
|
br i1 %t125, label %logic.rhs3490, label %logic.end3491
|
|
logic.rhs3490:
|
|
%t126 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t126, i32 0, i32 1
|
|
%t128 = load i64, ptr %t127
|
|
%t129 = icmp sgt i64 %t128, 0
|
|
br label %logic.rend3492
|
|
logic.rend3492:
|
|
br label %logic.end3491
|
|
logic.end3491:
|
|
%t130 = phi i1 [ false, %logic.from3489 ], [ %t129, %logic.rend3492 ]
|
|
br i1 %t130, label %then3493, label %endif3495
|
|
then3493:
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t133 = load { ptr, i64, i64 }, ptr %t132
|
|
%t134 = extractvalue { ptr, i64, i64 } %t133, 1
|
|
%t135 = icmp uge i64 0, %t134
|
|
br i1 %t135, label %range3496, label %inrange3497
|
|
range3496:
|
|
call void @finch_panic_index(ptr @.str.2156, i64 1416, i64 0, i64 %t134)
|
|
unreachable
|
|
inrange3497:
|
|
%t136 = extractvalue { ptr, i64, i64 } %t133, 0
|
|
%t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0
|
|
%t138 = load %S.ast.Type, ptr %t137
|
|
%t139 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t140 = load { ptr, i64, i64 }, ptr %t139
|
|
%t141 = extractvalue { ptr, i64, i64 } %t140, 1
|
|
%t142 = icmp uge i64 0, %t141
|
|
br i1 %t142, label %range3498, label %inrange3499
|
|
range3498:
|
|
call void @finch_panic_index(ptr @.str.2157, i64 1416, i64 0, i64 %t141)
|
|
unreachable
|
|
inrange3499:
|
|
%t143 = extractvalue { ptr, i64, i64 } %t140, 0
|
|
%t144 = getelementptr inbounds %S.ast.Type, ptr %t143, i64 0
|
|
%t145 = load %S.ast.Type, ptr %t144
|
|
%t146 = load { ptr, i64, i64 }, ptr %a4
|
|
%t147 = load ptr, ptr %a5
|
|
call void @finch.gen.bindType(ptr %t131, %S.ast.Type %t138, %S.ast.Type %t145, { ptr, i64, i64 } %t146, ptr %t147)
|
|
ret void
|
|
endif3495:
|
|
%t148 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t149 = load { ptr, i64, i64 }, ptr %t148
|
|
store { ptr, i64, i64 } %t149, ptr %a150
|
|
store { ptr, i64, i64 } { ptr @.str.2158, i64 3, i64 0 }, ptr %a151
|
|
%t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151)
|
|
%t153 = icmp ne i32 %t152, 0
|
|
br label %logic.from3500
|
|
logic.from3500:
|
|
br i1 %t153, label %logic.rhs3501, label %logic.end3502
|
|
logic.rhs3501:
|
|
%t154 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t155 = load { ptr, i64, i64 }, ptr %t154
|
|
store { ptr, i64, i64 } %t155, ptr %a156
|
|
store { ptr, i64, i64 } { ptr @.str.2159, i64 3, i64 0 }, ptr %a157
|
|
%t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157)
|
|
%t159 = icmp ne i32 %t158, 0
|
|
br label %logic.rend3503
|
|
logic.rend3503:
|
|
br label %logic.end3502
|
|
logic.end3502:
|
|
%t160 = phi i1 [ false, %logic.from3500 ], [ %t159, %logic.rend3503 ]
|
|
br i1 %t160, label %then3504, label %endif3506
|
|
then3504:
|
|
%t161 = load ptr, ptr %a1
|
|
%t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t163 = load { ptr, i64, i64 }, ptr %t162
|
|
%t164 = extractvalue { ptr, i64, i64 } %t163, 1
|
|
%t165 = icmp uge i64 0, %t164
|
|
br i1 %t165, label %range3507, label %inrange3508
|
|
range3507:
|
|
call void @finch_panic_index(ptr @.str.2160, i64 1420, i64 0, i64 %t164)
|
|
unreachable
|
|
inrange3508:
|
|
%t166 = extractvalue { ptr, i64, i64 } %t163, 0
|
|
%t167 = getelementptr inbounds %S.ast.Type, ptr %t166, i64 0
|
|
%t168 = load %S.ast.Type, ptr %t167
|
|
%t169 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t170 = load { ptr, i64, i64 }, ptr %t169
|
|
%t171 = extractvalue { ptr, i64, i64 } %t170, 1
|
|
%t172 = icmp uge i64 0, %t171
|
|
br i1 %t172, label %range3509, label %inrange3510
|
|
range3509:
|
|
call void @finch_panic_index(ptr @.str.2161, i64 1420, i64 0, i64 %t171)
|
|
unreachable
|
|
inrange3510:
|
|
%t173 = extractvalue { ptr, i64, i64 } %t170, 0
|
|
%t174 = getelementptr inbounds %S.ast.Type, ptr %t173, i64 0
|
|
%t175 = load %S.ast.Type, ptr %t174
|
|
%t176 = load { ptr, i64, i64 }, ptr %a4
|
|
%t177 = load ptr, ptr %a5
|
|
call void @finch.gen.bindType(ptr %t161, %S.ast.Type %t168, %S.ast.Type %t175, { ptr, i64, i64 } %t176, ptr %t177)
|
|
%t178 = load ptr, ptr %a1
|
|
%t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t180 = load { ptr, i64, i64 }, ptr %t179
|
|
%t181 = extractvalue { ptr, i64, i64 } %t180, 1
|
|
%t182 = icmp uge i64 1, %t181
|
|
br i1 %t182, label %range3511, label %inrange3512
|
|
range3511:
|
|
call void @finch_panic_index(ptr @.str.2162, i64 1421, i64 1, i64 %t181)
|
|
unreachable
|
|
inrange3512:
|
|
%t183 = extractvalue { ptr, i64, i64 } %t180, 0
|
|
%t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i64 1
|
|
%t185 = load %S.ast.Type, ptr %t184
|
|
%t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t187 = load { ptr, i64, i64 }, ptr %t186
|
|
%t188 = extractvalue { ptr, i64, i64 } %t187, 1
|
|
%t189 = icmp uge i64 1, %t188
|
|
br i1 %t189, label %range3513, label %inrange3514
|
|
range3513:
|
|
call void @finch_panic_index(ptr @.str.2163, i64 1421, i64 1, i64 %t188)
|
|
unreachable
|
|
inrange3514:
|
|
%t190 = extractvalue { ptr, i64, i64 } %t187, 0
|
|
%t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i64 1
|
|
%t192 = load %S.ast.Type, ptr %t191
|
|
%t193 = load { ptr, i64, i64 }, ptr %a4
|
|
%t194 = load ptr, ptr %a5
|
|
call void @finch.gen.bindType(ptr %t178, %S.ast.Type %t185, %S.ast.Type %t192, { ptr, i64, i64 } %t193, ptr %t194)
|
|
ret void
|
|
endif3506:
|
|
%t195 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t196 = load { ptr, i64, i64 }, ptr %t195
|
|
store { ptr, i64, i64 } %t196, ptr %a197
|
|
store { ptr, i64, i64 } { ptr @.str.2164, i64 5, i64 0 }, ptr %a198
|
|
%t199 = call i32 @finch_str_eq(ptr %a197, ptr %a198)
|
|
%t200 = icmp ne i32 %t199, 0
|
|
br label %logic.from3515
|
|
logic.from3515:
|
|
br i1 %t200, label %logic.rhs3516, label %logic.end3517
|
|
logic.rhs3516:
|
|
%t201 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1
|
|
%t203 = load i64, ptr %t202
|
|
%t204 = icmp sgt i64 %t203, 0
|
|
br label %logic.rend3518
|
|
logic.rend3518:
|
|
br label %logic.end3517
|
|
logic.end3517:
|
|
%t205 = phi i1 [ false, %logic.from3515 ], [ %t204, %logic.rend3518 ]
|
|
br label %logic.from3519
|
|
logic.from3519:
|
|
br i1 %t205, label %logic.rhs3520, label %logic.end3521
|
|
logic.rhs3520:
|
|
%t206 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t207 = load { ptr, i64, i64 }, ptr %t206
|
|
store { ptr, i64, i64 } %t207, ptr %a208
|
|
store { ptr, i64, i64 } { ptr @.str.2165, i64 6, i64 0 }, ptr %a209
|
|
%t210 = call i32 @finch_str_eq(ptr %a208, ptr %a209)
|
|
%t211 = icmp ne i32 %t210, 0
|
|
br label %logic.rend3522
|
|
logic.rend3522:
|
|
br label %logic.end3521
|
|
logic.end3521:
|
|
%t212 = phi i1 [ false, %logic.from3519 ], [ %t211, %logic.rend3522 ]
|
|
br i1 %t212, label %then3523, label %endif3525
|
|
then3523:
|
|
%t213 = load ptr, ptr %a1
|
|
%t214 = icmp eq ptr %t213, null
|
|
br i1 %t214, label %panic3526, label %ok3527
|
|
panic3526:
|
|
call void @finch_panic(ptr @.str.2166, i64 1425, ptr @.str.2167)
|
|
unreachable
|
|
ok3527:
|
|
%t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 15
|
|
%t216 = load ptr, ptr %a1
|
|
%t217 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3
|
|
%t218 = load { ptr, i64, i64 }, ptr %t217
|
|
%t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2
|
|
%t220 = load { ptr, i64, i64 }, ptr %t219
|
|
%t221 = call i64 @finch.gen.findStruct(ptr %t216, { ptr, i64, i64 } %t218, { ptr, i64, i64 } %t220)
|
|
%t222 = load { ptr, i64, i64 }, ptr %t215
|
|
%t223 = extractvalue { ptr, i64, i64 } %t222, 1
|
|
%t224 = icmp uge i64 %t221, %t223
|
|
br i1 %t224, label %range3528, label %inrange3529
|
|
range3528:
|
|
call void @finch_panic_index(ptr @.str.2168, i64 1425, i64 %t221, i64 %t223)
|
|
unreachable
|
|
inrange3529:
|
|
%t225 = extractvalue { ptr, i64, i64 } %t222, 0
|
|
%t226 = getelementptr inbounds %S.gen.StructDef, ptr %t225, i64 %t221
|
|
%t227 = load %S.gen.StructDef, ptr %t226
|
|
store %S.gen.StructDef %t227, ptr %a228
|
|
call void @finch.copy.S_gen_StructDef(ptr %a229, ptr %a228)
|
|
%t230 = load %S.gen.StructDef, ptr %a229
|
|
store %S.gen.StructDef %t230, ptr %a231
|
|
%t232 = getelementptr inbounds %S.gen.StructDef, ptr %a231, i32 0, i32 5
|
|
%t233 = load { ptr, i64, i64 }, ptr %t232
|
|
%t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t235 = load { ptr, i64, i64 }, ptr %t234
|
|
store { ptr, i64, i64 } %t233, ptr %a236
|
|
store { ptr, i64, i64 } %t235, ptr %a237
|
|
%t238 = call i32 @finch_str_eq(ptr %a236, ptr %a237)
|
|
%t239 = icmp ne i32 %t238, 0
|
|
br label %logic.from3530
|
|
logic.from3530:
|
|
br i1 %t239, label %logic.rhs3531, label %logic.end3532
|
|
logic.rhs3531:
|
|
%t240 = getelementptr inbounds %S.gen.StructDef, ptr %a231, i32 0, i32 7
|
|
%t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i32 0, i32 1
|
|
%t242 = load i64, ptr %t241
|
|
%t243 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1
|
|
%t245 = load i64, ptr %t244
|
|
%t246 = icmp eq i64 %t242, %t245
|
|
br label %logic.rend3533
|
|
logic.rend3533:
|
|
br label %logic.end3532
|
|
logic.end3532:
|
|
%t247 = phi i1 [ false, %logic.from3530 ], [ %t246, %logic.rend3533 ]
|
|
br i1 %t247, label %then3534, label %endif3536
|
|
then3534:
|
|
%t248 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1
|
|
%t250 = load i64, ptr %t249
|
|
store i64 0, ptr %a251
|
|
br label %for.cond3537
|
|
for.cond3537:
|
|
%t252 = load i64, ptr %a251
|
|
%t253 = icmp slt i64 %t252, %t250
|
|
br i1 %t253, label %for.body3538, label %for.end3540
|
|
for.body3538:
|
|
%t254 = load ptr, ptr %a1
|
|
%t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t256 = load i64, ptr %a251
|
|
%t257 = load { ptr, i64, i64 }, ptr %t255
|
|
%t258 = extractvalue { ptr, i64, i64 } %t257, 1
|
|
%t259 = icmp uge i64 %t256, %t258
|
|
br i1 %t259, label %range3541, label %inrange3542
|
|
range3541:
|
|
call void @finch_panic_index(ptr @.str.2169, i64 1428, i64 %t256, i64 %t258)
|
|
unreachable
|
|
inrange3542:
|
|
%t260 = extractvalue { ptr, i64, i64 } %t257, 0
|
|
%t261 = getelementptr inbounds %S.ast.Type, ptr %t260, i64 %t256
|
|
%t262 = load %S.ast.Type, ptr %t261
|
|
%t263 = getelementptr inbounds %S.gen.StructDef, ptr %a231, i32 0, i32 7
|
|
%t264 = load i64, ptr %a251
|
|
%t265 = load { ptr, i64, i64 }, ptr %t263
|
|
%t266 = extractvalue { ptr, i64, i64 } %t265, 1
|
|
%t267 = icmp uge i64 %t264, %t266
|
|
br i1 %t267, label %range3543, label %inrange3544
|
|
range3543:
|
|
call void @finch_panic_index(ptr @.str.2170, i64 1428, i64 %t264, i64 %t266)
|
|
unreachable
|
|
inrange3544:
|
|
%t268 = extractvalue { ptr, i64, i64 } %t265, 0
|
|
%t269 = getelementptr inbounds %S.ast.Type, ptr %t268, i64 %t264
|
|
%t270 = load %S.ast.Type, ptr %t269
|
|
%t271 = load { ptr, i64, i64 }, ptr %a4
|
|
%t272 = load ptr, ptr %a5
|
|
call void @finch.gen.bindType(ptr %t254, %S.ast.Type %t262, %S.ast.Type %t270, { ptr, i64, i64 } %t271, ptr %t272)
|
|
br label %for.step3539
|
|
for.step3539:
|
|
%t273 = load i64, ptr %a251
|
|
%t274 = add i64 %t273, 1
|
|
store i64 %t274, ptr %a251
|
|
br label %for.cond3537
|
|
for.end3540:
|
|
br label %endif3536
|
|
endif3536:
|
|
br label %endif3525
|
|
endif3525:
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.genericCall(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i64, align 16
|
|
%a4 = alloca i64, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca %S.gen.Template, align 16
|
|
%a17 = alloca %S.gen.Template, align 16
|
|
%a19 = alloca %S.gen.Template, align 16
|
|
%a39 = alloca %S.ast.Node, align 16
|
|
%a40 = alloca %S.ast.Node, align 16
|
|
%a42 = alloca %S.ast.Node, align 16
|
|
%a47 = alloca i64, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca i64, align 16
|
|
%a107 = alloca %S.ast.Type, align 16
|
|
%a130 = alloca %S.gen.Binds, align 16
|
|
%a134 = alloca i64, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca i64, align 16
|
|
%a169 = alloca %S.gen.Val, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca %S.gen.Val, align 16
|
|
%a212 = alloca %S.gen.Val, align 16
|
|
%a237 = alloca i64, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
%a270 = alloca { ptr, i64, i64 }, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca i64, align 16
|
|
%a297 = alloca %S.gen.FnSig, align 16
|
|
%a298 = alloca %S.gen.FnSig, align 16
|
|
%a300 = alloca %S.gen.FnSig, align 16
|
|
%a301 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca i64, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a344 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca { ptr, i64, i64 }, align 16
|
|
%a346 = alloca { ptr, i64, i64 }, align 16
|
|
%a349 = alloca %S.gen.Val, align 16
|
|
%a361 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a363 = alloca { ptr, i64, i64 }, align 16
|
|
%a367 = alloca { ptr, i64, i64 }, align 16
|
|
%a368 = alloca { ptr, i64, i64 }, align 16
|
|
%a369 = alloca { ptr, i64, i64 }, align 16
|
|
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 %panic3545, label %ok3546
|
|
panic3545:
|
|
call void @finch_panic(ptr @.str.2171, i64 1436, ptr @.str.2172)
|
|
unreachable
|
|
ok3546:
|
|
%t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16
|
|
%t9 = load i64, ptr %a3
|
|
%t10 = load { ptr, i64, i64 }, ptr %t8
|
|
%t11 = extractvalue { ptr, i64, i64 } %t10, 1
|
|
%t12 = icmp uge i64 %t9, %t11
|
|
br i1 %t12, label %range3547, label %inrange3548
|
|
range3547:
|
|
call void @finch_panic_index(ptr @.str.2173, i64 1436, i64 %t9, i64 %t11)
|
|
unreachable
|
|
inrange3548:
|
|
%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 %panic3549, label %ok3550
|
|
panic3549:
|
|
call void @finch_panic(ptr @.str.2174, i64 1437, ptr @.str.2175)
|
|
unreachable
|
|
ok3550:
|
|
%t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 0
|
|
%t23 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4
|
|
%t24 = load i64, ptr %t23
|
|
%t25 = load { ptr, i64, i64 }, ptr %t22
|
|
%t26 = extractvalue { ptr, i64, i64 } %t25, 1
|
|
%t27 = icmp uge i64 %t24, %t26
|
|
br i1 %t27, label %range3551, label %inrange3552
|
|
range3551:
|
|
call void @finch_panic_index(ptr @.str.2176, i64 1437, i64 %t24, i64 %t26)
|
|
unreachable
|
|
inrange3552:
|
|
%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 %range3553, label %inrange3554
|
|
range3553:
|
|
call void @finch_panic_index(ptr @.str.2177, i64 1437, i64 %t32, i64 %t34)
|
|
unreachable
|
|
inrange3554:
|
|
%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 %then3555, label %endif3557
|
|
then3555:
|
|
%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 %then3558, label %endif3560
|
|
then3558:
|
|
%t67 = load ptr, ptr %a1
|
|
%t68 = load %S.ast.Node, ptr %a2
|
|
%t69 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t69, ptr %a71
|
|
store { ptr, i64, i64 } { ptr @.str.2178, i64 7, i64 0 }, ptr %a72
|
|
call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72)
|
|
%t73 = load { ptr, i64, i64 }, ptr %a70
|
|
%t74 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3
|
|
%t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i32 0, i32 1
|
|
%t76 = load i64, ptr %t75
|
|
call void @finch_str_from_int(ptr %a77, i64 %t76)
|
|
%t78 = load { ptr, i64, i64 }, ptr %a77
|
|
store { ptr, i64, i64 } %t73, ptr %a80
|
|
store { ptr, i64, i64 } %t78, ptr %a81
|
|
call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81)
|
|
%t82 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } %t82, ptr %a84
|
|
store { ptr, i64, i64 } { ptr @.str.2179, i64 27, i64 0 }, ptr %a85
|
|
call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85)
|
|
%t86 = load { ptr, i64, i64 }, ptr %a83
|
|
%t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5
|
|
%t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 1
|
|
%t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1
|
|
%t90 = load i64, ptr %t89
|
|
call void @finch_str_from_int(ptr %a91, i64 %t90)
|
|
%t92 = load { ptr, i64, i64 }, ptr %a91
|
|
store { ptr, i64, i64 } %t86, ptr %a94
|
|
store { ptr, i64, i64 } %t92, ptr %a95
|
|
call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95)
|
|
%t96 = load { ptr, i64, i64 }, ptr %a93
|
|
call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t96)
|
|
br label %endif3560
|
|
endif3560:
|
|
%t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5
|
|
%t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i32 0, i32 1
|
|
store i64 0, ptr %a99
|
|
br label %each.cond3561
|
|
each.cond3561:
|
|
%t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1
|
|
%t101 = load i64, ptr %t100
|
|
%t102 = load i64, ptr %a99
|
|
%t103 = icmp slt i64 %t102, %t101
|
|
br i1 %t103, label %each.body3562, label %each.end3564
|
|
each.body3562:
|
|
%t104 = load ptr, ptr %t98
|
|
%t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t102
|
|
%t106 = load %S.ast.Type, ptr %t105
|
|
store %S.ast.Type %t106, ptr %a107
|
|
%t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1
|
|
%t109 = load ptr, ptr %a1
|
|
%t110 = load %S.ast.Type, ptr %a107
|
|
%t111 = load %S.ast.Node, ptr %a2
|
|
%t112 = call %S.ast.Type @finch.gen.resolve(ptr %t109, %S.ast.Type %t110, %S.ast.Node %t111)
|
|
%t113 = load i64, ptr %t108
|
|
%t114 = add i64 %t113, 1
|
|
call void @finch_arr_reserve(ptr %a53, i64 %t114, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t115 = load ptr, ptr %a53
|
|
%t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i64 %t113
|
|
store %S.ast.Type %t112, ptr %t116
|
|
store i64 %t114, ptr %t108
|
|
br label %each.step3563
|
|
each.step3563:
|
|
%t117 = load i64, ptr %a99
|
|
%t118 = add i64 %t117, 1
|
|
store i64 %t118, ptr %a99
|
|
br label %each.cond3561
|
|
each.end3564:
|
|
%t119 = load ptr, ptr %a1
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = load i64, ptr %a3
|
|
%t122 = load { ptr, i64, i64 }, ptr %a53
|
|
%t123 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2180, i64 4, i64 0 })
|
|
%t124 = load %S.ast.Node, ptr %a2
|
|
%t125 = call i64 @finch.gen.instFn(ptr %t120, i64 %t121, { ptr, i64, i64 } %t122, %S.ast.Type %t123, %S.ast.Node %t124)
|
|
%t126 = load %S.ast.Node, ptr %a2
|
|
%t127 = load i64, ptr %a4
|
|
%t128 = load { ptr, i64, i64 }, ptr %a5
|
|
%t129 = call %S.gen.Val @finch.gen.callFn(ptr %t119, i64 %t125, %S.ast.Node %t126, i64 %t127, { ptr, i64, i64 } %t128, { ptr, i64, i64 } { ptr @.str.2181, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2182, i64 0, i64 0 })
|
|
ret %S.gen.Val %t129
|
|
endif3557:
|
|
store %S.gen.Binds zeroinitializer, ptr %a130
|
|
%t131 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3
|
|
%t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1
|
|
%t133 = load i64, ptr %t132
|
|
store i64 0, ptr %a134
|
|
br label %for.cond3565
|
|
for.cond3565:
|
|
%t135 = load i64, ptr %a134
|
|
%t136 = icmp slt i64 %t135, %t133
|
|
br i1 %t136, label %for.body3566, label %for.end3568
|
|
for.body3566:
|
|
%t137 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 0
|
|
%t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1
|
|
%t139 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2183, i64 4, i64 0 })
|
|
%t140 = load i64, ptr %t138
|
|
%t141 = add i64 %t140, 1
|
|
call void @finch_arr_reserve(ptr %t137, i64 %t141, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t142 = load ptr, ptr %t137
|
|
%t143 = getelementptr inbounds %S.ast.Type, ptr %t142, i64 %t140
|
|
store %S.ast.Type %t139, ptr %t143
|
|
store i64 %t141, ptr %t138
|
|
%t144 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 1
|
|
%t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1
|
|
%t146 = load i64, ptr %t145
|
|
%t147 = add i64 %t146, 1
|
|
call void @finch_arr_reserve(ptr %t144, i64 %t147, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64))
|
|
%t148 = load ptr, ptr %t144
|
|
%t149 = getelementptr inbounds i1, ptr %t148, i64 %t146
|
|
store i1 false, ptr %t149
|
|
store i64 %t147, ptr %t145
|
|
br label %for.step3567
|
|
for.step3567:
|
|
%t150 = load i64, ptr %a134
|
|
%t151 = add i64 %t150, 1
|
|
store i64 %t151, ptr %a134
|
|
br label %for.cond3565
|
|
for.end3568:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a152
|
|
%t153 = load i64, ptr %a47
|
|
store i64 0, ptr %a154
|
|
br label %for.cond3569
|
|
for.cond3569:
|
|
%t155 = load i64, ptr %a154
|
|
%t156 = icmp slt i64 %t155, %t153
|
|
br i1 %t156, label %for.body3570, label %for.end3572
|
|
for.body3570:
|
|
%t157 = load ptr, ptr %a1
|
|
%t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t159 = load i64, ptr %a4
|
|
%t160 = load i64, ptr %a154
|
|
%t161 = add i64 %t159, %t160
|
|
%t162 = load { ptr, i64, i64 }, ptr %t158
|
|
%t163 = extractvalue { ptr, i64, i64 } %t162, 1
|
|
%t164 = icmp uge i64 %t161, %t163
|
|
br i1 %t164, label %range3573, label %inrange3574
|
|
range3573:
|
|
call void @finch_panic_index(ptr @.str.2184, i64 1457, i64 %t161, i64 %t163)
|
|
unreachable
|
|
inrange3574:
|
|
%t165 = extractvalue { ptr, i64, i64 } %t162, 0
|
|
%t166 = getelementptr inbounds %S.ast.Node, ptr %t165, i64 %t161
|
|
%t167 = load %S.ast.Node, ptr %t166
|
|
%t168 = call %S.gen.Val @finch.gen.expr(ptr %t157, %S.ast.Node %t167)
|
|
store %S.gen.Val %t168, ptr %a169
|
|
%t170 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t171 = getelementptr inbounds %S.ast.Type, ptr %t170, i32 0, i32 0
|
|
%t172 = load { ptr, i64, i64 }, ptr %t171
|
|
store { ptr, i64, i64 } %t172, ptr %a173
|
|
store { ptr, i64, i64 } { ptr @.str.2185, i64 4, i64 0 }, ptr %a174
|
|
%t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174)
|
|
%t176 = icmp ne i32 %t175, 0
|
|
br label %logic.from3575
|
|
logic.from3575:
|
|
br i1 %t176, label %logic.end3577, label %logic.rhs3576
|
|
logic.rhs3576:
|
|
%t177 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t178 = getelementptr inbounds %S.ast.Type, ptr %t177, i32 0, i32 0
|
|
%t179 = load { ptr, i64, i64 }, ptr %t178
|
|
store { ptr, i64, i64 } %t179, ptr %a180
|
|
store { ptr, i64, i64 } { ptr @.str.2186, i64 4, i64 0 }, ptr %a181
|
|
%t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181)
|
|
%t183 = icmp ne i32 %t182, 0
|
|
br label %logic.rend3578
|
|
logic.rend3578:
|
|
br label %logic.end3577
|
|
logic.end3577:
|
|
%t184 = phi i1 [ true, %logic.from3575 ], [ %t183, %logic.rend3578 ]
|
|
br i1 %t184, label %then3579, label %endif3581
|
|
then3579:
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t187 = load i64, ptr %a4
|
|
%t188 = load i64, ptr %a154
|
|
%t189 = add i64 %t187, %t188
|
|
%t190 = load { ptr, i64, i64 }, ptr %t186
|
|
%t191 = extractvalue { ptr, i64, i64 } %t190, 1
|
|
%t192 = icmp uge i64 %t189, %t191
|
|
br i1 %t192, label %range3582, label %inrange3583
|
|
range3582:
|
|
call void @finch_panic_index(ptr @.str.2187, i64 1459, i64 %t189, i64 %t191)
|
|
unreachable
|
|
inrange3583:
|
|
%t193 = extractvalue { ptr, i64, i64 } %t190, 0
|
|
%t194 = getelementptr inbounds %S.ast.Node, ptr %t193, i64 %t189
|
|
%t195 = load %S.ast.Node, ptr %t194
|
|
%t196 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3
|
|
%t197 = getelementptr inbounds { ptr, i64, i64 }, ptr %t196, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2189, i64 2, i64 0 }, ptr %a198
|
|
call void @finch_str_join(ptr %a199, ptr %t196, ptr %a198)
|
|
%t200 = load { ptr, i64, i64 }, ptr %a199
|
|
store { ptr, i64, i64 } { ptr @.str.2188, i64 29, i64 0 }, ptr %a202
|
|
store { ptr, i64, i64 } %t200, ptr %a203
|
|
call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203)
|
|
%t204 = load { ptr, i64, i64 }, ptr %a201
|
|
store { ptr, i64, i64 } %t204, ptr %a206
|
|
store { ptr, i64, i64 } { ptr @.str.2190, i64 5, i64 0 }, ptr %a207
|
|
call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207)
|
|
%t208 = load { ptr, i64, i64 }, ptr %a205
|
|
call void @finch.gen.fail(ptr %t185, %S.ast.Node %t195, { ptr, i64, i64 } %t208)
|
|
br label %endif3581
|
|
endif3581:
|
|
%t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a152, i32 0, i32 1
|
|
%t210 = load %S.gen.Val, ptr %a169
|
|
store %S.gen.Val %t210, ptr %a211
|
|
call void @finch.copy.S_gen_Val(ptr %a212, ptr %a211)
|
|
%t213 = load %S.gen.Val, ptr %a212
|
|
%t214 = load i64, ptr %t209
|
|
%t215 = add i64 %t214, 1
|
|
call void @finch_arr_reserve(ptr %a152, i64 %t215, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64))
|
|
%t216 = load ptr, ptr %a152
|
|
%t217 = getelementptr inbounds %S.gen.Val, ptr %t216, i64 %t214
|
|
store %S.gen.Val %t213, ptr %t217
|
|
store i64 %t215, ptr %t209
|
|
%t218 = load ptr, ptr %a1
|
|
%t219 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9
|
|
%t220 = load i64, ptr %a154
|
|
%t221 = load { ptr, i64, i64 }, ptr %t219
|
|
%t222 = extractvalue { ptr, i64, i64 } %t221, 1
|
|
%t223 = icmp uge i64 %t220, %t222
|
|
br i1 %t223, label %range3584, label %inrange3585
|
|
range3584:
|
|
call void @finch_panic_index(ptr @.str.2191, i64 1462, i64 %t220, i64 %t222)
|
|
unreachable
|
|
inrange3585:
|
|
%t224 = extractvalue { ptr, i64, i64 } %t221, 0
|
|
%t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220
|
|
%t226 = getelementptr inbounds %S.ast.Node, ptr %t225, i32 0, i32 5
|
|
%t227 = load %S.ast.Type, ptr %t226
|
|
%t228 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t229 = load %S.ast.Type, ptr %t228
|
|
%t230 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3
|
|
%t231 = load { ptr, i64, i64 }, ptr %t230
|
|
call void @finch.gen.bindType(ptr %t218, %S.ast.Type %t227, %S.ast.Type %t229, { ptr, i64, i64 } %t231, ptr %a130)
|
|
br label %for.step3571
|
|
for.step3571:
|
|
%t232 = load i64, ptr %a154
|
|
%t233 = add i64 %t232, 1
|
|
store i64 %t233, ptr %a154
|
|
br label %for.cond3569
|
|
for.end3572:
|
|
%t234 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3
|
|
%t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1
|
|
%t236 = load i64, ptr %t235
|
|
store i64 0, ptr %a237
|
|
br label %for.cond3586
|
|
for.cond3586:
|
|
%t238 = load i64, ptr %a237
|
|
%t239 = icmp slt i64 %t238, %t236
|
|
br i1 %t239, label %for.body3587, label %for.end3589
|
|
for.body3587:
|
|
%t240 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 1
|
|
%t241 = load i64, ptr %a237
|
|
%t242 = load { ptr, i64, i64 }, ptr %t240
|
|
%t243 = extractvalue { ptr, i64, i64 } %t242, 1
|
|
%t244 = icmp uge i64 %t241, %t243
|
|
br i1 %t244, label %range3590, label %inrange3591
|
|
range3590:
|
|
call void @finch_panic_index(ptr @.str.2192, i64 1465, i64 %t241, i64 %t243)
|
|
unreachable
|
|
inrange3591:
|
|
%t245 = extractvalue { ptr, i64, i64 } %t242, 0
|
|
%t246 = getelementptr inbounds i1, ptr %t245, i64 %t241
|
|
%t247 = load i1, ptr %t246
|
|
%t248 = xor i1 %t247, true
|
|
br i1 %t248, label %then3592, label %endif3594
|
|
then3592:
|
|
%t249 = load ptr, ptr %a1
|
|
%t250 = load %S.ast.Node, ptr %a2
|
|
%t251 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3
|
|
%t252 = load i64, ptr %a237
|
|
%t253 = load { ptr, i64, i64 }, ptr %t251
|
|
%t254 = extractvalue { ptr, i64, i64 } %t253, 1
|
|
%t255 = icmp uge i64 %t252, %t254
|
|
br i1 %t255, label %range3595, label %inrange3596
|
|
range3595:
|
|
call void @finch_panic_index(ptr @.str.2194, i64 1466, i64 %t252, i64 %t254)
|
|
unreachable
|
|
inrange3596:
|
|
%t256 = extractvalue { ptr, i64, i64 } %t253, 0
|
|
%t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i64 %t252
|
|
%t258 = load { ptr, i64, i64 }, ptr %t257
|
|
store { ptr, i64, i64 } { ptr @.str.2193, i64 16, i64 0 }, ptr %a260
|
|
store { ptr, i64, i64 } %t258, ptr %a261
|
|
call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261)
|
|
%t262 = load { ptr, i64, i64 }, ptr %a259
|
|
store { ptr, i64, i64 } %t262, ptr %a264
|
|
store { ptr, i64, i64 } { ptr @.str.2195, i64 24, i64 0 }, ptr %a265
|
|
call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265)
|
|
%t266 = load { ptr, i64, i64 }, ptr %a263
|
|
%t267 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1
|
|
%t268 = load { ptr, i64, i64 }, ptr %t267
|
|
store { ptr, i64, i64 } %t266, ptr %a270
|
|
store { ptr, i64, i64 } %t268, ptr %a271
|
|
call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271)
|
|
%t272 = load { ptr, i64, i64 }, ptr %a269
|
|
store { ptr, i64, i64 } %t272, ptr %a274
|
|
store { ptr, i64, i64 } { ptr @.str.2196, i64 10, i64 0 }, ptr %a275
|
|
call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275)
|
|
%t276 = load { ptr, i64, i64 }, ptr %a273
|
|
call void @finch.gen.fail(ptr %t249, %S.ast.Node %t250, { ptr, i64, i64 } %t276)
|
|
br label %endif3594
|
|
endif3594:
|
|
br label %for.step3588
|
|
for.step3588:
|
|
%t277 = load i64, ptr %a237
|
|
%t278 = add i64 %t277, 1
|
|
store i64 %t278, ptr %a237
|
|
br label %for.cond3586
|
|
for.end3589:
|
|
%t279 = load ptr, ptr %a1
|
|
%t280 = load i64, ptr %a3
|
|
%t281 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 0
|
|
%t282 = load { ptr, i64, i64 }, ptr %t281
|
|
%t283 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2197, i64 4, i64 0 })
|
|
%t284 = load %S.ast.Node, ptr %a2
|
|
%t285 = call i64 @finch.gen.instFn(ptr %t279, i64 %t280, { ptr, i64, i64 } %t282, %S.ast.Type %t283, %S.ast.Node %t284)
|
|
store i64 %t285, ptr %a286
|
|
%t287 = load ptr, ptr %a1
|
|
%t288 = icmp eq ptr %t287, null
|
|
br i1 %t288, label %panic3597, label %ok3598
|
|
panic3597:
|
|
call void @finch_panic(ptr @.str.2198, i64 1470, ptr @.str.2199)
|
|
unreachable
|
|
ok3598:
|
|
%t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 14
|
|
%t290 = load i64, ptr %a286
|
|
%t291 = load { ptr, i64, i64 }, ptr %t289
|
|
%t292 = extractvalue { ptr, i64, i64 } %t291, 1
|
|
%t293 = icmp uge i64 %t290, %t292
|
|
br i1 %t293, label %range3599, label %inrange3600
|
|
range3599:
|
|
call void @finch_panic_index(ptr @.str.2200, i64 1470, i64 %t290, i64 %t292)
|
|
unreachable
|
|
inrange3600:
|
|
%t294 = extractvalue { ptr, i64, i64 } %t291, 0
|
|
%t295 = getelementptr inbounds %S.gen.FnSig, ptr %t294, i64 %t290
|
|
%t296 = load %S.gen.FnSig, ptr %t295
|
|
store %S.gen.FnSig %t296, ptr %a297
|
|
call void @finch.copy.S_gen_FnSig(ptr %a298, ptr %a297)
|
|
%t299 = load %S.gen.FnSig, ptr %a298
|
|
store %S.gen.FnSig %t299, ptr %a300
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a301
|
|
%t302 = load i64, ptr %a47
|
|
store i64 0, ptr %a303
|
|
br label %for.cond3601
|
|
for.cond3601:
|
|
%t304 = load i64, ptr %a303
|
|
%t305 = icmp slt i64 %t304, %t302
|
|
br i1 %t305, label %for.body3602, label %for.end3604
|
|
for.body3602:
|
|
%t306 = load ptr, ptr %a1
|
|
%t307 = load i64, ptr %a303
|
|
%t308 = load { ptr, i64, i64 }, ptr %a152
|
|
%t309 = extractvalue { ptr, i64, i64 } %t308, 1
|
|
%t310 = icmp uge i64 %t307, %t309
|
|
br i1 %t310, label %range3605, label %inrange3606
|
|
range3605:
|
|
call void @finch_panic_index(ptr @.str.2201, i64 1473, i64 %t307, i64 %t309)
|
|
unreachable
|
|
inrange3606:
|
|
%t311 = extractvalue { ptr, i64, i64 } %t308, 0
|
|
%t312 = getelementptr inbounds %S.gen.Val, ptr %t311, i64 %t307
|
|
%t313 = load %S.gen.Val, ptr %t312
|
|
%t314 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 13
|
|
%t315 = load i64, ptr %a303
|
|
%t316 = load { ptr, i64, i64 }, ptr %t314
|
|
%t317 = extractvalue { ptr, i64, i64 } %t316, 1
|
|
%t318 = icmp uge i64 %t315, %t317
|
|
br i1 %t318, label %range3607, label %inrange3608
|
|
range3607:
|
|
call void @finch_panic_index(ptr @.str.2202, i64 1473, i64 %t315, i64 %t317)
|
|
unreachable
|
|
inrange3608:
|
|
%t319 = extractvalue { ptr, i64, i64 } %t316, 0
|
|
%t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i64 %t315
|
|
%t321 = load %S.ast.Type, ptr %t320
|
|
%t322 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t323 = load i64, ptr %a4
|
|
%t324 = load i64, ptr %a303
|
|
%t325 = add i64 %t323, %t324
|
|
%t326 = load { ptr, i64, i64 }, ptr %t322
|
|
%t327 = extractvalue { ptr, i64, i64 } %t326, 1
|
|
%t328 = icmp uge i64 %t325, %t327
|
|
br i1 %t328, label %range3609, label %inrange3610
|
|
range3609:
|
|
call void @finch_panic_index(ptr @.str.2203, i64 1473, i64 %t325, i64 %t327)
|
|
unreachable
|
|
inrange3610:
|
|
%t329 = extractvalue { ptr, i64, i64 } %t326, 0
|
|
%t330 = getelementptr inbounds %S.ast.Node, ptr %t329, i64 %t325
|
|
%t331 = load %S.ast.Node, ptr %t330
|
|
%t332 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 14
|
|
%t333 = load i64, ptr %a303
|
|
%t334 = load { ptr, i64, i64 }, ptr %t332
|
|
%t335 = extractvalue { ptr, i64, i64 } %t334, 1
|
|
%t336 = icmp uge i64 %t333, %t335
|
|
br i1 %t336, label %range3611, label %inrange3612
|
|
range3611:
|
|
call void @finch_panic_index(ptr @.str.2205, i64 1473, i64 %t333, i64 %t335)
|
|
unreachable
|
|
inrange3612:
|
|
%t337 = extractvalue { ptr, i64, i64 } %t334, 0
|
|
%t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t333
|
|
%t339 = load { ptr, i64, i64 }, ptr %t338
|
|
store { ptr, i64, i64 } { ptr @.str.2204, i64 10, i64 0 }, ptr %a341
|
|
store { ptr, i64, i64 } %t339, ptr %a342
|
|
call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342)
|
|
%t343 = load { ptr, i64, i64 }, ptr %a340
|
|
store { ptr, i64, i64 } %t343, ptr %a345
|
|
store { ptr, i64, i64 } { ptr @.str.2206, i64 1, i64 0 }, ptr %a346
|
|
call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346)
|
|
%t347 = load { ptr, i64, i64 }, ptr %a344
|
|
%t348 = call %S.gen.Val @finch.gen.coerce(ptr %t306, %S.gen.Val %t313, %S.ast.Type %t321, %S.ast.Node %t331, { ptr, i64, i64 } %t347)
|
|
store %S.gen.Val %t348, ptr %a349
|
|
%t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %a301, i32 0, i32 1
|
|
%t351 = load ptr, ptr %a1
|
|
%t352 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 13
|
|
%t353 = load i64, ptr %a303
|
|
%t354 = load { ptr, i64, i64 }, ptr %t352
|
|
%t355 = extractvalue { ptr, i64, i64 } %t354, 1
|
|
%t356 = icmp uge i64 %t353, %t355
|
|
br i1 %t356, label %range3613, label %inrange3614
|
|
range3613:
|
|
call void @finch_panic_index(ptr @.str.2207, i64 1474, i64 %t353, i64 %t355)
|
|
unreachable
|
|
inrange3614:
|
|
%t357 = extractvalue { ptr, i64, i64 } %t354, 0
|
|
%t358 = getelementptr inbounds %S.ast.Type, ptr %t357, i64 %t353
|
|
%t359 = load %S.ast.Type, ptr %t358
|
|
%t360 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t351, %S.ast.Type %t359)
|
|
store { ptr, i64, i64 } %t360, ptr %a362
|
|
store { ptr, i64, i64 } { ptr @.str.2208, i64 1, i64 0 }, ptr %a363
|
|
call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363)
|
|
%t364 = load { ptr, i64, i64 }, ptr %a361
|
|
%t365 = getelementptr inbounds %S.gen.Val, ptr %a349, i32 0, i32 0
|
|
%t366 = load { ptr, i64, i64 }, ptr %t365
|
|
store { ptr, i64, i64 } %t364, ptr %a368
|
|
store { ptr, i64, i64 } %t366, ptr %a369
|
|
call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369)
|
|
%t370 = load { ptr, i64, i64 }, ptr %a367
|
|
%t371 = load i64, ptr %t350
|
|
%t372 = add i64 %t371, 1
|
|
call void @finch_arr_reserve(ptr %a301, i64 %t372, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t373 = load ptr, ptr %a301
|
|
%t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %t373, i64 %t371
|
|
store { ptr, i64, i64 } %t370, ptr %t374
|
|
store i64 %t372, ptr %t350
|
|
br label %for.step3603
|
|
for.step3603:
|
|
%t375 = load i64, ptr %a303
|
|
%t376 = add i64 %t375, 1
|
|
store i64 %t376, ptr %a303
|
|
br label %for.cond3601
|
|
for.end3604:
|
|
%t377 = load ptr, ptr %a1
|
|
%t378 = load %S.gen.FnSig, ptr %a300
|
|
%t379 = load %S.ast.Node, ptr %a2
|
|
%t380 = load { ptr, i64, i64 }, ptr %a301
|
|
%t381 = load { ptr, i64, i64 }, ptr %a5
|
|
%t382 = call %S.gen.Val @finch.gen.emitCall(ptr %t377, %S.gen.FnSig %t378, %S.ast.Node %t379, { ptr, i64, i64 } %t380, { ptr, i64, i64 } %t381)
|
|
ret %S.gen.Val %t382
|
|
}
|
|
|
|
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.cond3623
|
|
n.cond3623:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body3624, label %n.end3625
|
|
n.body3624:
|
|
%t8 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds %S.cimport.CField, ptr %t2, i64 %t6
|
|
call void @finch.copy.S_cimport_CField(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond3623
|
|
n.end3625:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_cimport_CStruct(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.cimport.CStruct, ptr %src
|
|
store %S.cimport.CStruct %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.cimport.CStruct, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.cimport.CStruct, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.cimport.CStruct, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.cimport.CStruct, ptr %src, i32 0, i32 1
|
|
call void @finch.copy.arr_S_cimport_CField(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.cimport.CStruct, ptr %dst, i32 0, i32 4
|
|
%t7 = getelementptr inbounds %S.cimport.CStruct, ptr %src, i32 0, i32 4
|
|
call void @finch_str_copy(ptr %t6, ptr %t7)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.resolveCStruct(ptr %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca %S.cimport.CStruct, align 16
|
|
%a29 = alloca %S.cimport.CStruct, align 16
|
|
%a31 = alloca %S.cimport.CStruct, align 16
|
|
%a42 = alloca i64, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca i64, align 16
|
|
%a53 = alloca %S.cimport.CField, align 16
|
|
%a60 = alloca %S.ast.Type, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca %S.ast.Type, align 16
|
|
%a130 = alloca %S.ast.Type, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca { ptr, i64, i64 }, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic3615, label %ok3616
|
|
panic3615:
|
|
call void @finch_panic(ptr @.str.2209, i64 1482, ptr @.str.2210)
|
|
unreachable
|
|
ok3616:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 24
|
|
%t6 = getelementptr inbounds %S.cimport.CImports, ptr %t5, i32 0, i32 3
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = icmp eq ptr %t7, null
|
|
br i1 %t8, label %panic3617, label %ok3618
|
|
panic3617:
|
|
call void @finch_panic(ptr @.str.2211, i64 1482, ptr @.str.2212)
|
|
unreachable
|
|
ok3618:
|
|
%t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 15
|
|
%t10 = load i64, ptr %a2
|
|
%t11 = load { ptr, i64, i64 }, ptr %t9
|
|
%t12 = extractvalue { ptr, i64, i64 } %t11, 1
|
|
%t13 = icmp uge i64 %t10, %t12
|
|
br i1 %t13, label %range3619, label %inrange3620
|
|
range3619:
|
|
call void @finch_panic_index(ptr @.str.2213, i64 1482, i64 %t10, i64 %t12)
|
|
unreachable
|
|
inrange3620:
|
|
%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.missing3621, label %map.found3622
|
|
map.missing3621:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a21
|
|
store { ptr, i64, i64 } %t17, ptr %a22
|
|
call void @finch_buf_str(ptr %a21, ptr %a22, i32 1)
|
|
call void @finch_map_missing(ptr @.str.2214, i64 1482, ptr %a21)
|
|
unreachable
|
|
map.found3622:
|
|
%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 %panic3626, label %ok3627
|
|
panic3626:
|
|
call void @finch_panic(ptr @.str.2215, i64 1483, ptr @.str.2216)
|
|
unreachable
|
|
ok3627:
|
|
%t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 15
|
|
%t35 = load i64, ptr %a2
|
|
%t36 = load { ptr, i64, i64 }, ptr %t34
|
|
%t37 = extractvalue { ptr, i64, i64 } %t36, 1
|
|
%t38 = icmp uge i64 %t35, %t37
|
|
br i1 %t38, label %range3628, label %inrange3629
|
|
range3628:
|
|
call void @finch_panic_index(ptr @.str.2217, i64 1483, i64 %t35, i64 %t37)
|
|
unreachable
|
|
inrange3629:
|
|
%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.cond3630
|
|
each.cond3630:
|
|
%t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1
|
|
%t47 = load i64, ptr %t46
|
|
%t48 = load i64, ptr %a45
|
|
%t49 = icmp slt i64 %t48, %t47
|
|
br i1 %t49, label %each.body3631, label %each.end3633
|
|
each.body3631:
|
|
%t50 = load ptr, ptr %t44
|
|
%t51 = getelementptr inbounds %S.cimport.CField, ptr %t50, i64 %t48
|
|
%t52 = load %S.cimport.CField, ptr %t51
|
|
store %S.cimport.CField %t52, ptr %a53
|
|
%t54 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 5
|
|
%t55 = load i1, ptr %t54
|
|
br i1 %t55, label %then3634, label %endif3636
|
|
then3634:
|
|
br label %each.step3632
|
|
endif3636:
|
|
%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.2218, i64 6, i64 0 }, ptr %a64
|
|
%t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64)
|
|
%t66 = icmp ne i32 %t65, 0
|
|
br i1 %t66, label %then3637, label %endif3639
|
|
then3637:
|
|
%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 %endif3639
|
|
endif3639:
|
|
%t74 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2
|
|
%t75 = load i64, ptr %t74
|
|
%t76 = load i64, ptr %a42
|
|
%t77 = icmp sgt i64 %t75, %t76
|
|
br i1 %t77, label %then3640, label %endif3642
|
|
then3640:
|
|
%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.2219, i64 1, i64 0 }, ptr %a86
|
|
store { ptr, i64, i64 } %t84, ptr %a87
|
|
call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87)
|
|
%t88 = load { ptr, i64, i64 }, ptr %a85
|
|
store { ptr, i64, i64 } %t88, ptr %a90
|
|
store { ptr, i64, i64 } { ptr @.str.2220, i64 6, i64 0 }, ptr %a91
|
|
call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91)
|
|
%t92 = load { ptr, i64, i64 }, ptr %a89
|
|
%t93 = load i64, ptr %t78
|
|
%t94 = add i64 %t93, 1
|
|
call void @finch_arr_reserve(ptr %a43, i64 %t94, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t95 = load ptr, ptr %a43
|
|
%t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93
|
|
store { ptr, i64, i64 } %t92, ptr %t96
|
|
store i64 %t94, ptr %t78
|
|
br label %endif3642
|
|
endif3642:
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = icmp eq ptr %t97, null
|
|
br i1 %t98, label %panic3643, label %ok3644
|
|
panic3643:
|
|
call void @finch_panic(ptr @.str.2221, i64 1497, ptr @.str.2222)
|
|
unreachable
|
|
ok3644:
|
|
%t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 15
|
|
%t100 = load i64, ptr %a2
|
|
%t101 = load { ptr, i64, i64 }, ptr %t99
|
|
%t102 = extractvalue { ptr, i64, i64 } %t101, 1
|
|
%t103 = icmp uge i64 %t100, %t102
|
|
br i1 %t103, label %range3645, label %inrange3646
|
|
range3645:
|
|
call void @finch_panic_index(ptr @.str.2223, i64 1497, i64 %t100, i64 %t102)
|
|
unreachable
|
|
inrange3646:
|
|
%t104 = extractvalue { ptr, i64, i64 } %t101, 0
|
|
%t105 = getelementptr inbounds %S.gen.StructDef, ptr %t104, i64 %t100
|
|
%t106 = getelementptr inbounds %S.gen.StructDef, ptr %t105, i32 0, i32 11
|
|
%t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i32 0, i32 1
|
|
%t108 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0
|
|
%t109 = load { ptr, i64, i64 }, ptr %t108
|
|
store { ptr, i64, i64 } %t109, ptr %a110
|
|
call void @finch_str_copy(ptr %a111, ptr %a110)
|
|
%t112 = load { ptr, i64, i64 }, ptr %a111
|
|
%t113 = load i64, ptr %t107
|
|
%t114 = add i64 %t113, 1
|
|
call void @finch_arr_reserve(ptr %t106, i64 %t114, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t115 = load ptr, ptr %t106
|
|
%t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 %t113
|
|
store { ptr, i64, i64 } %t112, ptr %t116
|
|
store i64 %t114, ptr %t107
|
|
%t117 = load ptr, ptr %a1
|
|
%t118 = icmp eq ptr %t117, null
|
|
br i1 %t118, label %panic3647, label %ok3648
|
|
panic3647:
|
|
call void @finch_panic(ptr @.str.2224, i64 1498, ptr @.str.2225)
|
|
unreachable
|
|
ok3648:
|
|
%t119 = getelementptr inbounds %S.gen.Gen, ptr %t117, i32 0, i32 15
|
|
%t120 = load i64, ptr %a2
|
|
%t121 = load { ptr, i64, i64 }, ptr %t119
|
|
%t122 = extractvalue { ptr, i64, i64 } %t121, 1
|
|
%t123 = icmp uge i64 %t120, %t122
|
|
br i1 %t123, label %range3649, label %inrange3650
|
|
range3649:
|
|
call void @finch_panic_index(ptr @.str.2226, i64 1498, i64 %t120, i64 %t122)
|
|
unreachable
|
|
inrange3650:
|
|
%t124 = extractvalue { ptr, i64, i64 } %t121, 0
|
|
%t125 = getelementptr inbounds %S.gen.StructDef, ptr %t124, i64 %t120
|
|
%t126 = getelementptr inbounds %S.gen.StructDef, ptr %t125, i32 0, i32 12
|
|
%t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t126, i32 0, i32 1
|
|
%t128 = load %S.ast.Type, ptr %a60
|
|
store %S.ast.Type %t128, ptr %a129
|
|
call void @finch.copy.S_ast_Type(ptr %a130, ptr %a129)
|
|
%t131 = load %S.ast.Type, ptr %a130
|
|
%t132 = load i64, ptr %t127
|
|
%t133 = add i64 %t132, 1
|
|
call void @finch_arr_reserve(ptr %t126, i64 %t133, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t134 = load ptr, ptr %t126
|
|
%t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i64 %t132
|
|
store %S.ast.Type %t131, ptr %t135
|
|
store i64 %t133, ptr %t127
|
|
%t136 = load ptr, ptr %a1
|
|
%t137 = icmp eq ptr %t136, null
|
|
br i1 %t137, label %panic3651, label %ok3652
|
|
panic3651:
|
|
call void @finch_panic(ptr @.str.2227, i64 1499, ptr @.str.2228)
|
|
unreachable
|
|
ok3652:
|
|
%t138 = getelementptr inbounds %S.gen.Gen, ptr %t136, i32 0, i32 15
|
|
%t139 = load i64, ptr %a2
|
|
%t140 = load { ptr, i64, i64 }, ptr %t138
|
|
%t141 = extractvalue { ptr, i64, i64 } %t140, 1
|
|
%t142 = icmp uge i64 %t139, %t141
|
|
br i1 %t142, label %range3653, label %inrange3654
|
|
range3653:
|
|
call void @finch_panic_index(ptr @.str.2229, i64 1499, i64 %t139, i64 %t141)
|
|
unreachable
|
|
inrange3654:
|
|
%t143 = extractvalue { ptr, i64, i64 } %t140, 0
|
|
%t144 = getelementptr inbounds %S.gen.StructDef, ptr %t143, i64 %t139
|
|
%t145 = getelementptr inbounds %S.gen.StructDef, ptr %t144, i32 0, i32 3
|
|
%t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1
|
|
%t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1
|
|
%t148 = load i64, ptr %t147
|
|
%t149 = load i64, ptr %t146
|
|
%t150 = add i64 %t149, 1
|
|
call void @finch_arr_reserve(ptr %t145, i64 %t150, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64))
|
|
%t151 = load ptr, ptr %t145
|
|
%t152 = getelementptr inbounds i64, ptr %t151, i64 %t149
|
|
store i64 %t148, ptr %t152
|
|
store i64 %t150, ptr %t146
|
|
%t153 = load ptr, ptr %a1
|
|
%t154 = icmp eq ptr %t153, null
|
|
br i1 %t154, label %panic3655, label %ok3656
|
|
panic3655:
|
|
call void @finch_panic(ptr @.str.2230, i64 1500, ptr @.str.2231)
|
|
unreachable
|
|
ok3656:
|
|
%t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 15
|
|
%t156 = load i64, ptr %a2
|
|
%t157 = load { ptr, i64, i64 }, ptr %t155
|
|
%t158 = extractvalue { ptr, i64, i64 } %t157, 1
|
|
%t159 = icmp uge i64 %t156, %t158
|
|
br i1 %t159, label %range3657, label %inrange3658
|
|
range3657:
|
|
call void @finch_panic_index(ptr @.str.2232, i64 1500, i64 %t156, i64 %t158)
|
|
unreachable
|
|
inrange3658:
|
|
%t160 = extractvalue { ptr, i64, i64 } %t157, 0
|
|
%t161 = getelementptr inbounds %S.gen.StructDef, ptr %t160, i64 %t156
|
|
%t162 = getelementptr inbounds %S.gen.StructDef, ptr %t161, i32 0, i32 4
|
|
%t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1
|
|
%t164 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2
|
|
%t165 = load i64, ptr %t164
|
|
%t166 = load i64, ptr %t163
|
|
%t167 = add i64 %t166, 1
|
|
call void @finch_arr_reserve(ptr %t162, i64 %t167, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64))
|
|
%t168 = load ptr, ptr %t162
|
|
%t169 = getelementptr inbounds i64, ptr %t168, i64 %t166
|
|
store i64 %t165, ptr %t169
|
|
store i64 %t167, ptr %t163
|
|
%t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1
|
|
%t171 = load ptr, ptr %a1
|
|
%t172 = load %S.ast.Type, ptr %a60
|
|
%t173 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t171, %S.ast.Type %t172)
|
|
%t174 = load i64, ptr %t170
|
|
%t175 = add i64 %t174, 1
|
|
call void @finch_arr_reserve(ptr %a43, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t176 = load ptr, ptr %a43
|
|
%t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174
|
|
store { ptr, i64, i64 } %t173, ptr %t177
|
|
store i64 %t175, ptr %t170
|
|
%t178 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2
|
|
%t179 = load i64, ptr %t178
|
|
%t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3
|
|
%t181 = load i64, ptr %t180
|
|
%t182 = add i64 %t179, %t181
|
|
store i64 %t182, ptr %a42
|
|
br label %each.step3632
|
|
each.step3632:
|
|
%t183 = load i64, ptr %a45
|
|
%t184 = add i64 %t183, 1
|
|
store i64 %t184, ptr %a45
|
|
br label %each.cond3630
|
|
each.end3633:
|
|
%t185 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2
|
|
%t186 = load i64, ptr %t185
|
|
%t187 = load i64, ptr %a42
|
|
%t188 = icmp sgt i64 %t186, %t187
|
|
br i1 %t188, label %then3659, label %endif3661
|
|
then3659:
|
|
%t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1
|
|
%t190 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2
|
|
%t191 = load i64, ptr %t190
|
|
%t192 = load i64, ptr %a42
|
|
%t193 = sub i64 %t191, %t192
|
|
call void @finch_str_from_int(ptr %a194, i64 %t193)
|
|
%t195 = load { ptr, i64, i64 }, ptr %a194
|
|
store { ptr, i64, i64 } { ptr @.str.2233, i64 1, i64 0 }, ptr %a197
|
|
store { ptr, i64, i64 } %t195, ptr %a198
|
|
call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198)
|
|
%t199 = load { ptr, i64, i64 }, ptr %a196
|
|
store { ptr, i64, i64 } %t199, ptr %a201
|
|
store { ptr, i64, i64 } { ptr @.str.2234, i64 6, i64 0 }, ptr %a202
|
|
call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202)
|
|
%t203 = load { ptr, i64, i64 }, ptr %a200
|
|
%t204 = load i64, ptr %t189
|
|
%t205 = add i64 %t204, 1
|
|
call void @finch_arr_reserve(ptr %a43, i64 %t205, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t206 = load ptr, ptr %a43
|
|
%t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i64 %t204
|
|
store { ptr, i64, i64 } %t203, ptr %t207
|
|
store i64 %t205, ptr %t189
|
|
br label %endif3661
|
|
endif3661:
|
|
%t208 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4
|
|
%t209 = load { ptr, i64, i64 }, ptr %t208
|
|
%t210 = load ptr, ptr %a1
|
|
%t211 = icmp eq ptr %t210, null
|
|
br i1 %t211, label %panic3662, label %ok3663
|
|
panic3662:
|
|
call void @finch_panic(ptr @.str.2235, i64 1507, ptr @.str.2236)
|
|
unreachable
|
|
ok3663:
|
|
%t212 = getelementptr inbounds %S.gen.Gen, ptr %t210, i32 0, i32 15
|
|
%t213 = load i64, ptr %a2
|
|
%t214 = load { ptr, i64, i64 }, ptr %t212
|
|
%t215 = extractvalue { ptr, i64, i64 } %t214, 1
|
|
%t216 = icmp uge i64 %t213, %t215
|
|
br i1 %t216, label %range3664, label %inrange3665
|
|
range3664:
|
|
call void @finch_panic_index(ptr @.str.2237, i64 1507, i64 %t213, i64 %t215)
|
|
unreachable
|
|
inrange3665:
|
|
%t217 = extractvalue { ptr, i64, i64 } %t214, 0
|
|
%t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i64 %t213
|
|
%t219 = getelementptr inbounds %S.gen.StructDef, ptr %t218, i32 0, i32 8
|
|
store { ptr, i64, i64 } %t209, ptr %a220
|
|
call void @finch_str_copy(ptr %a221, ptr %a220)
|
|
%t222 = load { ptr, i64, i64 }, ptr %a221
|
|
store { ptr, i64, i64 } %t222, ptr %t219
|
|
%t223 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5
|
|
%t224 = load i1, ptr %t223
|
|
br label %logic.from3666
|
|
logic.from3666:
|
|
br i1 %t224, label %logic.rhs3667, label %logic.end3668
|
|
logic.rhs3667:
|
|
%t225 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4
|
|
%t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t225, i32 0, i32 1
|
|
%t227 = load i64, ptr %t226
|
|
%t228 = icmp eq i64 %t227, 0
|
|
br label %logic.rend3669
|
|
logic.rend3669:
|
|
br label %logic.end3668
|
|
logic.end3668:
|
|
%t229 = phi i1 [ false, %logic.from3666 ], [ %t228, %logic.rend3669 ]
|
|
br i1 %t229, label %then3670, label %endif3672
|
|
then3670:
|
|
%t230 = load ptr, ptr %a1
|
|
%t231 = icmp eq ptr %t230, null
|
|
br i1 %t231, label %panic3673, label %ok3674
|
|
panic3673:
|
|
call void @finch_panic(ptr @.str.2239, i64 1509, ptr @.str.2240)
|
|
unreachable
|
|
ok3674:
|
|
%t232 = getelementptr inbounds %S.gen.Gen, ptr %t230, i32 0, i32 15
|
|
%t233 = load i64, ptr %a2
|
|
%t234 = load { ptr, i64, i64 }, ptr %t232
|
|
%t235 = extractvalue { ptr, i64, i64 } %t234, 1
|
|
%t236 = icmp uge i64 %t233, %t235
|
|
br i1 %t236, label %range3675, label %inrange3676
|
|
range3675:
|
|
call void @finch_panic_index(ptr @.str.2241, i64 1509, i64 %t233, i64 %t235)
|
|
unreachable
|
|
inrange3676:
|
|
%t237 = extractvalue { ptr, i64, i64 } %t234, 0
|
|
%t238 = getelementptr inbounds %S.gen.StructDef, ptr %t237, i64 %t233
|
|
%t239 = getelementptr inbounds %S.gen.StructDef, ptr %t238, i32 0, i32 8
|
|
store { ptr, i64, i64 } { ptr @.str.2238, i64 49, i64 0 }, ptr %t239
|
|
br label %endif3672
|
|
endif3672:
|
|
%t240 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2
|
|
%t241 = load i64, ptr %t240
|
|
%t242 = load ptr, ptr %a1
|
|
%t243 = icmp eq ptr %t242, null
|
|
br i1 %t243, label %panic3677, label %ok3678
|
|
panic3677:
|
|
call void @finch_panic(ptr @.str.2242, i64 1511, ptr @.str.2243)
|
|
unreachable
|
|
ok3678:
|
|
%t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 15
|
|
%t245 = load i64, ptr %a2
|
|
%t246 = load { ptr, i64, i64 }, ptr %t244
|
|
%t247 = extractvalue { ptr, i64, i64 } %t246, 1
|
|
%t248 = icmp uge i64 %t245, %t247
|
|
br i1 %t248, label %range3679, label %inrange3680
|
|
range3679:
|
|
call void @finch_panic_index(ptr @.str.2244, i64 1511, i64 %t245, i64 %t247)
|
|
unreachable
|
|
inrange3680:
|
|
%t249 = extractvalue { ptr, i64, i64 } %t246, 0
|
|
%t250 = getelementptr inbounds %S.gen.StructDef, ptr %t249, i64 %t245
|
|
%t251 = getelementptr inbounds %S.gen.StructDef, ptr %t250, i32 0, i32 9
|
|
store i64 %t241, ptr %t251
|
|
%t252 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3
|
|
%t253 = load i64, ptr %t252
|
|
%t254 = load ptr, ptr %a1
|
|
%t255 = icmp eq ptr %t254, null
|
|
br i1 %t255, label %panic3681, label %ok3682
|
|
panic3681:
|
|
call void @finch_panic(ptr @.str.2245, i64 1512, ptr @.str.2246)
|
|
unreachable
|
|
ok3682:
|
|
%t256 = getelementptr inbounds %S.gen.Gen, ptr %t254, i32 0, i32 15
|
|
%t257 = load i64, ptr %a2
|
|
%t258 = load { ptr, i64, i64 }, ptr %t256
|
|
%t259 = extractvalue { ptr, i64, i64 } %t258, 1
|
|
%t260 = icmp uge i64 %t257, %t259
|
|
br i1 %t260, label %range3683, label %inrange3684
|
|
range3683:
|
|
call void @finch_panic_index(ptr @.str.2247, i64 1512, i64 %t257, i64 %t259)
|
|
unreachable
|
|
inrange3684:
|
|
%t261 = extractvalue { ptr, i64, i64 } %t258, 0
|
|
%t262 = getelementptr inbounds %S.gen.StructDef, ptr %t261, i64 %t257
|
|
%t263 = getelementptr inbounds %S.gen.StructDef, ptr %t262, i32 0, i32 10
|
|
store i64 %t253, ptr %t263
|
|
%t264 = load ptr, ptr %a1
|
|
%t265 = icmp eq ptr %t264, null
|
|
br i1 %t265, label %panic3685, label %ok3686
|
|
panic3685:
|
|
call void @finch_panic(ptr @.str.2248, i64 1513, ptr @.str.2249)
|
|
unreachable
|
|
ok3686:
|
|
%t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 15
|
|
%t267 = load i64, ptr %a2
|
|
%t268 = load { ptr, i64, i64 }, ptr %t266
|
|
%t269 = extractvalue { ptr, i64, i64 } %t268, 1
|
|
%t270 = icmp uge i64 %t267, %t269
|
|
br i1 %t270, label %range3687, label %inrange3688
|
|
range3687:
|
|
call void @finch_panic_index(ptr @.str.2250, i64 1513, i64 %t267, i64 %t269)
|
|
unreachable
|
|
inrange3688:
|
|
%t271 = extractvalue { ptr, i64, i64 } %t268, 0
|
|
%t272 = getelementptr inbounds %S.gen.StructDef, ptr %t271, i64 %t267
|
|
%t273 = getelementptr inbounds %S.gen.StructDef, ptr %t272, i32 0, i32 15
|
|
store i64 2, ptr %t273
|
|
%t274 = load ptr, ptr %a1
|
|
%t275 = icmp eq ptr %t274, null
|
|
br i1 %t275, label %panic3689, label %ok3690
|
|
panic3689:
|
|
call void @finch_panic(ptr @.str.2251, i64 1514, ptr @.str.2252)
|
|
unreachable
|
|
ok3690:
|
|
%t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 2
|
|
%t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i32 0, i32 1
|
|
%t278 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0
|
|
%t279 = load { ptr, i64, i64 }, ptr %t278
|
|
store { ptr, i64, i64 } { ptr @.str.2253, i64 5, i64 0 }, ptr %a281
|
|
store { ptr, i64, i64 } %t279, ptr %a282
|
|
call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282)
|
|
%t283 = load { ptr, i64, i64 }, ptr %a280
|
|
store { ptr, i64, i64 } %t283, ptr %a285
|
|
store { ptr, i64, i64 } { ptr @.str.2254, i64 10, i64 0 }, ptr %a286
|
|
call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286)
|
|
%t287 = load { ptr, i64, i64 }, ptr %a284
|
|
%t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2255, i64 2, i64 0 }, ptr %a289
|
|
call void @finch_str_join(ptr %a290, ptr %a43, ptr %a289)
|
|
%t291 = load { ptr, i64, i64 }, ptr %a290
|
|
store { ptr, i64, i64 } %t287, ptr %a293
|
|
store { ptr, i64, i64 } %t291, ptr %a294
|
|
call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294)
|
|
%t295 = load { ptr, i64, i64 }, ptr %a292
|
|
store { ptr, i64, i64 } %t295, ptr %a297
|
|
store { ptr, i64, i64 } { ptr @.str.2256, i64 2, i64 0 }, ptr %a298
|
|
call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298)
|
|
%t299 = load { ptr, i64, i64 }, ptr %a296
|
|
%t300 = load i64, ptr %t277
|
|
%t301 = add i64 %t300, 1
|
|
call void @finch_arr_reserve(ptr %t276, i64 %t301, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t302 = load ptr, ptr %t276
|
|
%t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i64 %t300
|
|
store { ptr, i64, i64 } %t299, ptr %t303
|
|
store i64 %t301, ptr %t277
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.resolveStruct(ptr %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic3691, label %ok3692
|
|
panic3691:
|
|
call void @finch_panic(ptr @.str.2257, i64 1518, ptr @.str.2258)
|
|
unreachable
|
|
ok3692:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15
|
|
%t6 = load i64, ptr %a2
|
|
%t7 = load { ptr, i64, i64 }, ptr %t5
|
|
%t8 = extractvalue { ptr, i64, i64 } %t7, 1
|
|
%t9 = icmp uge i64 %t6, %t8
|
|
br i1 %t9, label %range3693, label %inrange3694
|
|
range3693:
|
|
call void @finch_panic_index(ptr @.str.2259, i64 1518, i64 %t6, i64 %t8)
|
|
unreachable
|
|
inrange3694:
|
|
%t10 = extractvalue { ptr, i64, i64 } %t7, 0
|
|
%t11 = getelementptr inbounds %S.gen.StructDef, ptr %t10, i64 %t6
|
|
%t12 = getelementptr inbounds %S.gen.StructDef, ptr %t11, i32 0, i32 15
|
|
%t13 = load i64, ptr %t12
|
|
%t14 = icmp eq i64 %t13, 2
|
|
br i1 %t14, label %then3695, label %endif3697
|
|
then3695:
|
|
ret void
|
|
endif3697:
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = icmp eq ptr %t15, null
|
|
br i1 %t16, label %panic3698, label %ok3699
|
|
panic3698:
|
|
call void @finch_panic(ptr @.str.2260, i64 1521, ptr @.str.2261)
|
|
unreachable
|
|
ok3699:
|
|
%t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 15
|
|
%t18 = load i64, ptr %a2
|
|
%t19 = load { ptr, i64, i64 }, ptr %t17
|
|
%t20 = extractvalue { ptr, i64, i64 } %t19, 1
|
|
%t21 = icmp uge i64 %t18, %t20
|
|
br i1 %t21, label %range3700, label %inrange3701
|
|
range3700:
|
|
call void @finch_panic_index(ptr @.str.2262, i64 1521, i64 %t18, i64 %t20)
|
|
unreachable
|
|
inrange3701:
|
|
%t22 = extractvalue { ptr, i64, i64 } %t19, 0
|
|
%t23 = getelementptr inbounds %S.gen.StructDef, ptr %t22, i64 %t18
|
|
%t24 = getelementptr inbounds %S.gen.StructDef, ptr %t23, i32 0, i32 2
|
|
%t25 = load i1, ptr %t24
|
|
br i1 %t25, label %then3702, label %endif3704
|
|
then3702:
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = load i64, ptr %a2
|
|
call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27)
|
|
ret void
|
|
endif3704:
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = icmp eq ptr %t28, null
|
|
br i1 %t29, label %panic3705, label %ok3706
|
|
panic3705:
|
|
call void @finch_panic(ptr @.str.2263, i64 1525, ptr @.str.2264)
|
|
unreachable
|
|
ok3706:
|
|
%t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15
|
|
%t31 = load i64, ptr %a2
|
|
%t32 = load { ptr, i64, i64 }, ptr %t30
|
|
%t33 = extractvalue { ptr, i64, i64 } %t32, 1
|
|
%t34 = icmp uge i64 %t31, %t33
|
|
br i1 %t34, label %range3707, label %inrange3708
|
|
range3707:
|
|
call void @finch_panic_index(ptr @.str.2265, i64 1525, i64 %t31, i64 %t33)
|
|
unreachable
|
|
inrange3708:
|
|
%t35 = extractvalue { ptr, i64, i64 } %t32, 0
|
|
%t36 = getelementptr inbounds %S.gen.StructDef, ptr %t35, i64 %t31
|
|
%t37 = getelementptr inbounds %S.gen.StructDef, ptr %t36, i32 0, i32 5
|
|
%t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1
|
|
%t39 = load i64, ptr %t38
|
|
%t40 = icmp eq i64 %t39, 0
|
|
br i1 %t40, label %then3709, label %endif3711
|
|
then3709:
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = load i64, ptr %a2
|
|
call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42)
|
|
ret void
|
|
endif3711:
|
|
%t43 = load ptr, ptr %a1
|
|
%t44 = icmp eq ptr %t43, null
|
|
br i1 %t44, label %panic3712, label %ok3713
|
|
panic3712:
|
|
call void @finch_panic(ptr @.str.2266, i64 1530, ptr @.str.2267)
|
|
unreachable
|
|
ok3713:
|
|
%t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 17
|
|
%t46 = load { ptr, i64, i64 }, ptr %t45
|
|
store { ptr, i64, i64 } %t46, ptr %a47
|
|
call void @finch.copy.arr_str(ptr %a48, ptr %a47)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a48
|
|
store { ptr, i64, i64 } %t49, ptr %a50
|
|
%t51 = load ptr, ptr %a1
|
|
%t52 = icmp eq ptr %t51, null
|
|
br i1 %t52, label %panic3714, label %ok3715
|
|
panic3714:
|
|
call void @finch_panic(ptr @.str.2268, i64 1531, ptr @.str.2269)
|
|
unreachable
|
|
ok3715:
|
|
%t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 18
|
|
%t54 = load { ptr, i64, i64 }, ptr %t53
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a56
|
|
store { ptr, i64, i64 } %t57, ptr %a58
|
|
%t59 = load ptr, ptr %a1
|
|
%t60 = icmp eq ptr %t59, null
|
|
br i1 %t60, label %panic3716, label %ok3717
|
|
panic3716:
|
|
call void @finch_panic(ptr @.str.2270, i64 1532, ptr @.str.2271)
|
|
unreachable
|
|
ok3717:
|
|
%t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 19
|
|
%t62 = load { ptr, i64, i64 }, ptr %t61
|
|
store { ptr, i64, i64 } %t62, ptr %a63
|
|
call void @finch_str_copy(ptr %a64, ptr %a63)
|
|
%t65 = load { ptr, i64, i64 }, ptr %a64
|
|
store { ptr, i64, i64 } %t65, ptr %a66
|
|
%t67 = load ptr, ptr %a1
|
|
%t68 = icmp eq ptr %t67, null
|
|
br i1 %t68, label %panic3718, label %ok3719
|
|
panic3718:
|
|
call void @finch_panic(ptr @.str.2272, i64 1533, ptr @.str.2273)
|
|
unreachable
|
|
ok3719:
|
|
%t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 15
|
|
%t70 = load i64, ptr %a2
|
|
%t71 = load { ptr, i64, i64 }, ptr %t69
|
|
%t72 = extractvalue { ptr, i64, i64 } %t71, 1
|
|
%t73 = icmp uge i64 %t70, %t72
|
|
br i1 %t73, label %range3720, label %inrange3721
|
|
range3720:
|
|
call void @finch_panic_index(ptr @.str.2274, i64 1533, i64 %t70, i64 %t72)
|
|
unreachable
|
|
inrange3721:
|
|
%t74 = extractvalue { ptr, i64, i64 } %t71, 0
|
|
%t75 = getelementptr inbounds %S.gen.StructDef, ptr %t74, i64 %t70
|
|
%t76 = getelementptr inbounds %S.gen.StructDef, ptr %t75, i32 0, i32 6
|
|
%t77 = load { ptr, i64, i64 }, ptr %t76
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = icmp eq ptr %t78, null
|
|
br i1 %t79, label %panic3722, label %ok3723
|
|
panic3722:
|
|
call void @finch_panic(ptr @.str.2275, i64 1533, ptr @.str.2276)
|
|
unreachable
|
|
ok3723:
|
|
%t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 17
|
|
store { ptr, i64, i64 } %t77, ptr %a81
|
|
call void @finch.copy.arr_str(ptr %a82, ptr %a81)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } %t83, ptr %t80
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = icmp eq ptr %t84, null
|
|
br i1 %t85, label %panic3724, label %ok3725
|
|
panic3724:
|
|
call void @finch_panic(ptr @.str.2277, i64 1534, ptr @.str.2278)
|
|
unreachable
|
|
ok3725:
|
|
%t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 15
|
|
%t87 = load i64, ptr %a2
|
|
%t88 = load { ptr, i64, i64 }, ptr %t86
|
|
%t89 = extractvalue { ptr, i64, i64 } %t88, 1
|
|
%t90 = icmp uge i64 %t87, %t89
|
|
br i1 %t90, label %range3726, label %inrange3727
|
|
range3726:
|
|
call void @finch_panic_index(ptr @.str.2279, i64 1534, i64 %t87, i64 %t89)
|
|
unreachable
|
|
inrange3727:
|
|
%t91 = extractvalue { ptr, i64, i64 } %t88, 0
|
|
%t92 = getelementptr inbounds %S.gen.StructDef, ptr %t91, i64 %t87
|
|
%t93 = getelementptr inbounds %S.gen.StructDef, ptr %t92, i32 0, i32 7
|
|
%t94 = load { ptr, i64, i64 }, ptr %t93
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = icmp eq ptr %t95, null
|
|
br i1 %t96, label %panic3728, label %ok3729
|
|
panic3728:
|
|
call void @finch_panic(ptr @.str.2280, i64 1534, ptr @.str.2281)
|
|
unreachable
|
|
ok3729:
|
|
%t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 18
|
|
store { ptr, i64, i64 } %t94, ptr %a98
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a99, ptr %a98)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a99
|
|
store { ptr, i64, i64 } %t100, ptr %t97
|
|
%t101 = load ptr, ptr %a1
|
|
%t102 = icmp eq ptr %t101, null
|
|
br i1 %t102, label %panic3730, label %ok3731
|
|
panic3730:
|
|
call void @finch_panic(ptr @.str.2283, i64 1535, ptr @.str.2284)
|
|
unreachable
|
|
ok3731:
|
|
%t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 15
|
|
%t104 = load i64, ptr %a2
|
|
%t105 = load { ptr, i64, i64 }, ptr %t103
|
|
%t106 = extractvalue { ptr, i64, i64 } %t105, 1
|
|
%t107 = icmp uge i64 %t104, %t106
|
|
br i1 %t107, label %range3732, label %inrange3733
|
|
range3732:
|
|
call void @finch_panic_index(ptr @.str.2285, i64 1535, i64 %t104, i64 %t106)
|
|
unreachable
|
|
inrange3733:
|
|
%t108 = extractvalue { ptr, i64, i64 } %t105, 0
|
|
%t109 = getelementptr inbounds %S.gen.StructDef, ptr %t108, i64 %t104
|
|
%t110 = getelementptr inbounds %S.gen.StructDef, ptr %t109, i32 0, i32 1
|
|
%t111 = load { ptr, i64, i64 }, ptr %t110
|
|
store { ptr, i64, i64 } { ptr @.str.2282, i64 17, i64 0 }, ptr %a113
|
|
store { ptr, i64, i64 } %t111, ptr %a114
|
|
call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114)
|
|
%t115 = load { ptr, i64, i64 }, ptr %a112
|
|
store { ptr, i64, i64 } %t115, ptr %a117
|
|
store { ptr, i64, i64 } { ptr @.str.2286, i64 1, i64 0 }, ptr %a118
|
|
call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a116
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = icmp eq ptr %t120, null
|
|
br i1 %t121, label %panic3734, label %ok3735
|
|
panic3734:
|
|
call void @finch_panic(ptr @.str.2287, i64 1535, ptr @.str.2288)
|
|
unreachable
|
|
ok3735:
|
|
%t122 = getelementptr inbounds %S.gen.Gen, ptr %t120, i32 0, i32 19
|
|
store { ptr, i64, i64 } %t119, ptr %t122
|
|
%t123 = load ptr, ptr %a1
|
|
%t124 = load i64, ptr %a2
|
|
call void @finch.gen.resolveStructBody(ptr %t123, i64 %t124)
|
|
%t125 = load { ptr, i64, i64 }, ptr %a50
|
|
%t126 = load ptr, ptr %a1
|
|
%t127 = icmp eq ptr %t126, null
|
|
br i1 %t127, label %panic3736, label %ok3737
|
|
panic3736:
|
|
call void @finch_panic(ptr @.str.2289, i64 1537, ptr @.str.2290)
|
|
unreachable
|
|
ok3737:
|
|
%t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 17
|
|
store { ptr, i64, i64 } %t125, ptr %a129
|
|
call void @finch.copy.arr_str(ptr %a130, ptr %a129)
|
|
%t131 = load { ptr, i64, i64 }, ptr %a130
|
|
store { ptr, i64, i64 } %t131, ptr %t128
|
|
%t132 = load { ptr, i64, i64 }, ptr %a58
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = icmp eq ptr %t133, null
|
|
br i1 %t134, label %panic3738, label %ok3739
|
|
panic3738:
|
|
call void @finch_panic(ptr @.str.2291, i64 1538, ptr @.str.2292)
|
|
unreachable
|
|
ok3739:
|
|
%t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 18
|
|
store { ptr, i64, i64 } %t132, ptr %a136
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a137, ptr %a136)
|
|
%t138 = load { ptr, i64, i64 }, ptr %a137
|
|
store { ptr, i64, i64 } %t138, ptr %t135
|
|
%t139 = load { ptr, i64, i64 }, ptr %a66
|
|
%t140 = load ptr, ptr %a1
|
|
%t141 = icmp eq ptr %t140, null
|
|
br i1 %t141, label %panic3740, label %ok3741
|
|
panic3740:
|
|
call void @finch_panic(ptr @.str.2293, i64 1539, ptr @.str.2294)
|
|
unreachable
|
|
ok3741:
|
|
%t142 = getelementptr inbounds %S.gen.Gen, ptr %t140, i32 0, i32 19
|
|
store { ptr, i64, i64 } %t139, ptr %a143
|
|
call void @finch_str_copy(ptr %a144, ptr %a143)
|
|
%t145 = load { ptr, i64, i64 }, ptr %a144
|
|
store { ptr, i64, i64 } %t145, ptr %t142
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.resolveStructBody(ptr %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a40 = alloca %S.ast.Node, align 16
|
|
%a41 = alloca %S.ast.Node, align 16
|
|
%a43 = alloca %S.ast.Node, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca i1, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca i64, align 16
|
|
%a134 = alloca %S.ast.Node, align 16
|
|
%a140 = alloca %S.ast.Type, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca %S.ast.Type, align 16
|
|
%a214 = alloca %S.ast.Type, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a301 = alloca { ptr, i64, i64 }, align 16
|
|
%a302 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca { ptr, i64, i64 }, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca { ptr, i64, i64 }, align 16
|
|
%a309 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a314 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic3742, label %ok3743
|
|
panic3742:
|
|
call void @finch_panic(ptr @.str.2295, i64 1543, ptr @.str.2296)
|
|
unreachable
|
|
ok3743:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = icmp eq ptr %t6, null
|
|
br i1 %t7, label %panic3744, label %ok3745
|
|
panic3744:
|
|
call void @finch_panic(ptr @.str.2297, i64 1543, ptr @.str.2298)
|
|
unreachable
|
|
ok3745:
|
|
%t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15
|
|
%t9 = load i64, ptr %a2
|
|
%t10 = load { ptr, i64, i64 }, ptr %t8
|
|
%t11 = extractvalue { ptr, i64, i64 } %t10, 1
|
|
%t12 = icmp uge i64 %t9, %t11
|
|
br i1 %t12, label %range3746, label %inrange3747
|
|
range3746:
|
|
call void @finch_panic_index(ptr @.str.2299, i64 1543, i64 %t9, i64 %t11)
|
|
unreachable
|
|
inrange3747:
|
|
%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 %range3748, label %inrange3749
|
|
range3748:
|
|
call void @finch_panic_index(ptr @.str.2300, i64 1543, i64 %t16, i64 %t18)
|
|
unreachable
|
|
inrange3749:
|
|
%t20 = extractvalue { ptr, i64, i64 } %t17, 0
|
|
%t21 = getelementptr inbounds %S.ast.Program, ptr %t20, i64 %t16
|
|
%t22 = getelementptr inbounds %S.ast.Program, ptr %t21, i32 0, i32 6
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = icmp eq ptr %t23, null
|
|
br i1 %t24, label %panic3750, label %ok3751
|
|
panic3750:
|
|
call void @finch_panic(ptr @.str.2301, i64 1543, ptr @.str.2302)
|
|
unreachable
|
|
ok3751:
|
|
%t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 15
|
|
%t26 = load i64, ptr %a2
|
|
%t27 = load { ptr, i64, i64 }, ptr %t25
|
|
%t28 = extractvalue { ptr, i64, i64 } %t27, 1
|
|
%t29 = icmp uge i64 %t26, %t28
|
|
br i1 %t29, label %range3752, label %inrange3753
|
|
range3752:
|
|
call void @finch_panic_index(ptr @.str.2303, i64 1543, i64 %t26, i64 %t28)
|
|
unreachable
|
|
inrange3753:
|
|
%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 %range3754, label %inrange3755
|
|
range3754:
|
|
call void @finch_panic_index(ptr @.str.2304, i64 1543, i64 %t33, i64 %t35)
|
|
unreachable
|
|
inrange3755:
|
|
%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 %panic3756, label %ok3757
|
|
panic3756:
|
|
call void @finch_panic(ptr @.str.2305, i64 1544, ptr @.str.2306)
|
|
unreachable
|
|
ok3757:
|
|
%t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 15
|
|
%t47 = load i64, ptr %a2
|
|
%t48 = load { ptr, i64, i64 }, ptr %t46
|
|
%t49 = extractvalue { ptr, i64, i64 } %t48, 1
|
|
%t50 = icmp uge i64 %t47, %t49
|
|
br i1 %t50, label %range3758, label %inrange3759
|
|
range3758:
|
|
call void @finch_panic_index(ptr @.str.2307, i64 1544, i64 %t47, i64 %t49)
|
|
unreachable
|
|
inrange3759:
|
|
%t51 = extractvalue { ptr, i64, i64 } %t48, 0
|
|
%t52 = getelementptr inbounds %S.gen.StructDef, ptr %t51, i64 %t47
|
|
%t53 = getelementptr inbounds %S.gen.StructDef, ptr %t52, i32 0, i32 15
|
|
%t54 = load i64, ptr %t53
|
|
%t55 = icmp eq i64 %t54, 1
|
|
br i1 %t55, label %then3760, label %endif3762
|
|
then3760:
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = load %S.ast.Node, ptr %a43
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1
|
|
%t59 = load { ptr, i64, i64 }, ptr %t58
|
|
store { ptr, i64, i64 } { ptr @.str.2308, i64 11, i64 0 }, ptr %a61
|
|
store { ptr, i64, i64 } %t59, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
store { ptr, i64, i64 } %t63, ptr %a65
|
|
store { ptr, i64, i64 } { ptr @.str.2309, i64 26, i64 0 }, ptr %a66
|
|
call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a64
|
|
%t68 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1
|
|
%t69 = load { ptr, i64, i64 }, ptr %t68
|
|
store { ptr, i64, i64 } %t67, ptr %a71
|
|
store { ptr, i64, i64 } %t69, ptr %a72
|
|
call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72)
|
|
%t73 = load { ptr, i64, i64 }, ptr %a70
|
|
store { ptr, i64, i64 } %t73, ptr %a75
|
|
store { ptr, i64, i64 } { ptr @.str.2310, i64 7, i64 0 }, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
%t78 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1
|
|
%t79 = load { ptr, i64, i64 }, ptr %t78
|
|
store { ptr, i64, i64 } %t77, ptr %a81
|
|
store { ptr, i64, i64 } %t79, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t83, ptr %a85
|
|
store { ptr, i64, i64 } { ptr @.str.2311, i64 15, i64 0 }, ptr %a86
|
|
call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a84
|
|
call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t87)
|
|
br label %endif3762
|
|
endif3762:
|
|
%t88 = load ptr, ptr %a1
|
|
%t89 = icmp eq ptr %t88, null
|
|
br i1 %t89, label %panic3763, label %ok3764
|
|
panic3763:
|
|
call void @finch_panic(ptr @.str.2312, i64 1547, ptr @.str.2313)
|
|
unreachable
|
|
ok3764:
|
|
%t90 = getelementptr inbounds %S.gen.Gen, ptr %t88, i32 0, i32 15
|
|
%t91 = load i64, ptr %a2
|
|
%t92 = load { ptr, i64, i64 }, ptr %t90
|
|
%t93 = extractvalue { ptr, i64, i64 } %t92, 1
|
|
%t94 = icmp uge i64 %t91, %t93
|
|
br i1 %t94, label %range3765, label %inrange3766
|
|
range3765:
|
|
call void @finch_panic_index(ptr @.str.2314, i64 1547, i64 %t91, i64 %t93)
|
|
unreachable
|
|
inrange3766:
|
|
%t95 = extractvalue { ptr, i64, i64 } %t92, 0
|
|
%t96 = getelementptr inbounds %S.gen.StructDef, ptr %t95, i64 %t91
|
|
%t97 = getelementptr inbounds %S.gen.StructDef, ptr %t96, i32 0, i32 15
|
|
store i64 1, ptr %t97
|
|
%t98 = load ptr, ptr %a1
|
|
%t99 = icmp eq ptr %t98, null
|
|
br i1 %t99, label %panic3767, label %ok3768
|
|
panic3767:
|
|
call void @finch_panic(ptr @.str.2315, i64 1548, ptr @.str.2316)
|
|
unreachable
|
|
ok3768:
|
|
%t100 = getelementptr inbounds %S.gen.Gen, ptr %t98, i32 0, i32 13
|
|
%t101 = load { ptr, i64, i64 }, ptr %t100
|
|
store { ptr, i64, i64 } %t101, ptr %a102
|
|
call void @finch_str_copy(ptr %a103, ptr %a102)
|
|
%t104 = load { ptr, i64, i64 }, ptr %a103
|
|
store { ptr, i64, i64 } %t104, ptr %a105
|
|
%t106 = load ptr, ptr %a1
|
|
%t107 = icmp eq ptr %t106, null
|
|
br i1 %t107, label %panic3769, label %ok3770
|
|
panic3769:
|
|
call void @finch_panic(ptr @.str.2317, i64 1549, ptr @.str.2318)
|
|
unreachable
|
|
ok3770:
|
|
%t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 15
|
|
%t109 = load i64, ptr %a2
|
|
%t110 = load { ptr, i64, i64 }, ptr %t108
|
|
%t111 = extractvalue { ptr, i64, i64 } %t110, 1
|
|
%t112 = icmp uge i64 %t109, %t111
|
|
br i1 %t112, label %range3771, label %inrange3772
|
|
range3771:
|
|
call void @finch_panic_index(ptr @.str.2319, i64 1549, i64 %t109, i64 %t111)
|
|
unreachable
|
|
inrange3772:
|
|
%t113 = extractvalue { ptr, i64, i64 } %t110, 0
|
|
%t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i64 %t109
|
|
%t115 = getelementptr inbounds %S.gen.StructDef, ptr %t114, i32 0, i32 0
|
|
%t116 = load { ptr, i64, i64 }, ptr %t115
|
|
%t117 = load ptr, ptr %a1
|
|
%t118 = icmp eq ptr %t117, null
|
|
br i1 %t118, label %panic3773, label %ok3774
|
|
panic3773:
|
|
call void @finch_panic(ptr @.str.2320, i64 1549, ptr @.str.2321)
|
|
unreachable
|
|
ok3774:
|
|
%t119 = getelementptr inbounds %S.gen.Gen, ptr %t117, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t116, ptr %a120
|
|
call void @finch_str_copy(ptr %a121, ptr %a120)
|
|
%t122 = load { ptr, i64, i64 }, ptr %a121
|
|
store { ptr, i64, i64 } %t122, ptr %t119
|
|
store i1 false, ptr %a123
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a124
|
|
%t125 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9
|
|
store i64 0, ptr %a126
|
|
br label %each.cond3775
|
|
each.cond3775:
|
|
%t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t125, i32 0, i32 1
|
|
%t128 = load i64, ptr %t127
|
|
%t129 = load i64, ptr %a126
|
|
%t130 = icmp slt i64 %t129, %t128
|
|
br i1 %t130, label %each.body3776, label %each.end3778
|
|
each.body3776:
|
|
%t131 = load ptr, ptr %t125
|
|
%t132 = getelementptr inbounds %S.ast.Node, ptr %t131, i64 %t129
|
|
%t133 = load %S.ast.Node, ptr %t132
|
|
store %S.ast.Node %t133, ptr %a134
|
|
%t135 = load ptr, ptr %a1
|
|
%t136 = getelementptr inbounds %S.ast.Node, ptr %a134, i32 0, i32 5
|
|
%t137 = load %S.ast.Type, ptr %t136
|
|
%t138 = load %S.ast.Node, ptr %a134
|
|
%t139 = call %S.ast.Type @finch.gen.resolve(ptr %t135, %S.ast.Type %t137, %S.ast.Node %t138)
|
|
store %S.ast.Type %t139, ptr %a140
|
|
%t141 = getelementptr inbounds %S.ast.Type, ptr %a140, i32 0, i32 0
|
|
%t142 = load { ptr, i64, i64 }, ptr %t141
|
|
store { ptr, i64, i64 } %t142, ptr %a143
|
|
store { ptr, i64, i64 } { ptr @.str.2322, i64 6, i64 0 }, ptr %a144
|
|
%t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144)
|
|
%t146 = icmp ne i32 %t145, 0
|
|
br i1 %t146, label %then3779, label %endif3781
|
|
then3779:
|
|
%t147 = load ptr, ptr %a1
|
|
%t148 = load ptr, ptr %a1
|
|
%t149 = getelementptr inbounds %S.ast.Type, ptr %a140, i32 0, i32 3
|
|
%t150 = load { ptr, i64, i64 }, ptr %t149
|
|
%t151 = getelementptr inbounds %S.ast.Type, ptr %a140, i32 0, i32 2
|
|
%t152 = load { ptr, i64, i64 }, ptr %t151
|
|
%t153 = call i64 @finch.gen.findStruct(ptr %t148, { ptr, i64, i64 } %t150, { ptr, i64, i64 } %t152)
|
|
call void @finch.gen.resolveStruct(ptr %t147, i64 %t153)
|
|
br label %endif3781
|
|
endif3781:
|
|
%t154 = load ptr, ptr %a1
|
|
%t155 = icmp eq ptr %t154, null
|
|
br i1 %t155, label %panic3782, label %ok3783
|
|
panic3782:
|
|
call void @finch_panic(ptr @.str.2323, i64 1557, ptr @.str.2324)
|
|
unreachable
|
|
ok3783:
|
|
%t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 15
|
|
%t157 = load i64, ptr %a2
|
|
%t158 = load { ptr, i64, i64 }, ptr %t156
|
|
%t159 = extractvalue { ptr, i64, i64 } %t158, 1
|
|
%t160 = icmp uge i64 %t157, %t159
|
|
br i1 %t160, label %range3784, label %inrange3785
|
|
range3784:
|
|
call void @finch_panic_index(ptr @.str.2325, i64 1557, i64 %t157, i64 %t159)
|
|
unreachable
|
|
inrange3785:
|
|
%t161 = extractvalue { ptr, i64, i64 } %t158, 0
|
|
%t162 = getelementptr inbounds %S.gen.StructDef, ptr %t161, i64 %t157
|
|
%t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i32 0, i32 3
|
|
%t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1
|
|
%t165 = load ptr, ptr %a1
|
|
%t166 = icmp eq ptr %t165, null
|
|
br i1 %t166, label %panic3786, label %ok3787
|
|
panic3786:
|
|
call void @finch_panic(ptr @.str.2326, i64 1557, ptr @.str.2327)
|
|
unreachable
|
|
ok3787:
|
|
%t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 15
|
|
%t168 = load i64, ptr %a2
|
|
%t169 = load { ptr, i64, i64 }, ptr %t167
|
|
%t170 = extractvalue { ptr, i64, i64 } %t169, 1
|
|
%t171 = icmp uge i64 %t168, %t170
|
|
br i1 %t171, label %range3788, label %inrange3789
|
|
range3788:
|
|
call void @finch_panic_index(ptr @.str.2328, i64 1557, i64 %t168, i64 %t170)
|
|
unreachable
|
|
inrange3789:
|
|
%t172 = extractvalue { ptr, i64, i64 } %t169, 0
|
|
%t173 = getelementptr inbounds %S.gen.StructDef, ptr %t172, i64 %t168
|
|
%t174 = getelementptr inbounds %S.gen.StructDef, ptr %t173, i32 0, i32 11
|
|
%t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1
|
|
%t176 = load i64, ptr %t175
|
|
%t177 = load i64, ptr %t164
|
|
%t178 = add i64 %t177, 1
|
|
call void @finch_arr_reserve(ptr %t163, i64 %t178, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64))
|
|
%t179 = load ptr, ptr %t163
|
|
%t180 = getelementptr inbounds i64, ptr %t179, i64 %t177
|
|
store i64 %t176, ptr %t180
|
|
store i64 %t178, ptr %t164
|
|
%t181 = load ptr, ptr %a1
|
|
%t182 = icmp eq ptr %t181, null
|
|
br i1 %t182, label %panic3790, label %ok3791
|
|
panic3790:
|
|
call void @finch_panic(ptr @.str.2329, i64 1558, ptr @.str.2330)
|
|
unreachable
|
|
ok3791:
|
|
%t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 15
|
|
%t184 = load i64, ptr %a2
|
|
%t185 = load { ptr, i64, i64 }, ptr %t183
|
|
%t186 = extractvalue { ptr, i64, i64 } %t185, 1
|
|
%t187 = icmp uge i64 %t184, %t186
|
|
br i1 %t187, label %range3792, label %inrange3793
|
|
range3792:
|
|
call void @finch_panic_index(ptr @.str.2331, i64 1558, i64 %t184, i64 %t186)
|
|
unreachable
|
|
inrange3793:
|
|
%t188 = extractvalue { ptr, i64, i64 } %t185, 0
|
|
%t189 = getelementptr inbounds %S.gen.StructDef, ptr %t188, i64 %t184
|
|
%t190 = getelementptr inbounds %S.gen.StructDef, ptr %t189, i32 0, i32 11
|
|
%t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i32 0, i32 1
|
|
%t192 = getelementptr inbounds %S.ast.Node, ptr %a134, i32 0, i32 1
|
|
%t193 = load { ptr, i64, i64 }, ptr %t192
|
|
store { ptr, i64, i64 } %t193, ptr %a194
|
|
call void @finch_str_copy(ptr %a195, ptr %a194)
|
|
%t196 = load { ptr, i64, i64 }, ptr %a195
|
|
%t197 = load i64, ptr %t191
|
|
%t198 = add i64 %t197, 1
|
|
call void @finch_arr_reserve(ptr %t190, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t199 = load ptr, ptr %t190
|
|
%t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197
|
|
store { ptr, i64, i64 } %t196, ptr %t200
|
|
store i64 %t198, ptr %t191
|
|
%t201 = load ptr, ptr %a1
|
|
%t202 = icmp eq ptr %t201, null
|
|
br i1 %t202, label %panic3794, label %ok3795
|
|
panic3794:
|
|
call void @finch_panic(ptr @.str.2332, i64 1559, ptr @.str.2333)
|
|
unreachable
|
|
ok3795:
|
|
%t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 15
|
|
%t204 = load i64, ptr %a2
|
|
%t205 = load { ptr, i64, i64 }, ptr %t203
|
|
%t206 = extractvalue { ptr, i64, i64 } %t205, 1
|
|
%t207 = icmp uge i64 %t204, %t206
|
|
br i1 %t207, label %range3796, label %inrange3797
|
|
range3796:
|
|
call void @finch_panic_index(ptr @.str.2334, i64 1559, i64 %t204, i64 %t206)
|
|
unreachable
|
|
inrange3797:
|
|
%t208 = extractvalue { ptr, i64, i64 } %t205, 0
|
|
%t209 = getelementptr inbounds %S.gen.StructDef, ptr %t208, i64 %t204
|
|
%t210 = getelementptr inbounds %S.gen.StructDef, ptr %t209, i32 0, i32 12
|
|
%t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i32 0, i32 1
|
|
%t212 = load %S.ast.Type, ptr %a140
|
|
store %S.ast.Type %t212, ptr %a213
|
|
call void @finch.copy.S_ast_Type(ptr %a214, ptr %a213)
|
|
%t215 = load %S.ast.Type, ptr %a214
|
|
%t216 = load i64, ptr %t211
|
|
%t217 = add i64 %t216, 1
|
|
call void @finch_arr_reserve(ptr %t210, i64 %t217, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t218 = load ptr, ptr %t210
|
|
%t219 = getelementptr inbounds %S.ast.Type, ptr %t218, i64 %t216
|
|
store %S.ast.Type %t215, ptr %t219
|
|
store i64 %t217, ptr %t211
|
|
%t220 = load ptr, ptr %a1
|
|
%t221 = load %S.ast.Type, ptr %a140
|
|
%t222 = call i1 @finch.gen.owning(ptr %t220, %S.ast.Type %t221)
|
|
br i1 %t222, label %then3798, label %endif3800
|
|
then3798:
|
|
store i1 true, ptr %a123
|
|
br label %endif3800
|
|
endif3800:
|
|
%t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1
|
|
%t224 = load ptr, ptr %a1
|
|
%t225 = load %S.ast.Type, ptr %a140
|
|
%t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225)
|
|
%t227 = load i64, ptr %t223
|
|
%t228 = add i64 %t227, 1
|
|
call void @finch_arr_reserve(ptr %a124, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t229 = load ptr, ptr %a124
|
|
%t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227
|
|
store { ptr, i64, i64 } %t226, ptr %t230
|
|
store i64 %t228, ptr %t223
|
|
br label %each.step3777
|
|
each.step3777:
|
|
%t231 = load i64, ptr %a126
|
|
%t232 = add i64 %t231, 1
|
|
store i64 %t232, ptr %a126
|
|
br label %each.cond3775
|
|
each.end3778:
|
|
%t233 = load i1, ptr %a123
|
|
%t234 = load ptr, ptr %a1
|
|
%t235 = icmp eq ptr %t234, null
|
|
br i1 %t235, label %panic3801, label %ok3802
|
|
panic3801:
|
|
call void @finch_panic(ptr @.str.2335, i64 1565, ptr @.str.2336)
|
|
unreachable
|
|
ok3802:
|
|
%t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 15
|
|
%t237 = load i64, ptr %a2
|
|
%t238 = load { ptr, i64, i64 }, ptr %t236
|
|
%t239 = extractvalue { ptr, i64, i64 } %t238, 1
|
|
%t240 = icmp uge i64 %t237, %t239
|
|
br i1 %t240, label %range3803, label %inrange3804
|
|
range3803:
|
|
call void @finch_panic_index(ptr @.str.2337, i64 1565, i64 %t237, i64 %t239)
|
|
unreachable
|
|
inrange3804:
|
|
%t241 = extractvalue { ptr, i64, i64 } %t238, 0
|
|
%t242 = getelementptr inbounds %S.gen.StructDef, ptr %t241, i64 %t237
|
|
%t243 = getelementptr inbounds %S.gen.StructDef, ptr %t242, i32 0, i32 16
|
|
store i1 %t233, ptr %t243
|
|
%t244 = load { ptr, i64, i64 }, ptr %a105
|
|
%t245 = load ptr, ptr %a1
|
|
%t246 = icmp eq ptr %t245, null
|
|
br i1 %t246, label %panic3805, label %ok3806
|
|
panic3805:
|
|
call void @finch_panic(ptr @.str.2338, i64 1566, ptr @.str.2339)
|
|
unreachable
|
|
ok3806:
|
|
%t247 = getelementptr inbounds %S.gen.Gen, ptr %t245, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t244, ptr %a248
|
|
call void @finch_str_copy(ptr %a249, ptr %a248)
|
|
%t250 = load { ptr, i64, i64 }, ptr %a249
|
|
store { ptr, i64, i64 } %t250, ptr %t247
|
|
%t251 = load ptr, ptr %a1
|
|
%t252 = icmp eq ptr %t251, null
|
|
br i1 %t252, label %panic3807, label %ok3808
|
|
panic3807:
|
|
call void @finch_panic(ptr @.str.2340, i64 1567, ptr @.str.2341)
|
|
unreachable
|
|
ok3808:
|
|
%t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 15
|
|
%t254 = load i64, ptr %a2
|
|
%t255 = load { ptr, i64, i64 }, ptr %t253
|
|
%t256 = extractvalue { ptr, i64, i64 } %t255, 1
|
|
%t257 = icmp uge i64 %t254, %t256
|
|
br i1 %t257, label %range3809, label %inrange3810
|
|
range3809:
|
|
call void @finch_panic_index(ptr @.str.2342, i64 1567, i64 %t254, i64 %t256)
|
|
unreachable
|
|
inrange3810:
|
|
%t258 = extractvalue { ptr, i64, i64 } %t255, 0
|
|
%t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i64 %t254
|
|
%t260 = getelementptr inbounds %S.gen.StructDef, ptr %t259, i32 0, i32 15
|
|
store i64 2, ptr %t260
|
|
%t261 = load ptr, ptr %a1
|
|
%t262 = icmp eq ptr %t261, null
|
|
br i1 %t262, label %panic3811, label %ok3812
|
|
panic3811:
|
|
call void @finch_panic(ptr @.str.2343, i64 1568, ptr @.str.2344)
|
|
unreachable
|
|
ok3812:
|
|
%t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 2
|
|
%t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1
|
|
%t265 = load ptr, ptr %a1
|
|
%t266 = icmp eq ptr %t265, null
|
|
br i1 %t266, label %panic3813, label %ok3814
|
|
panic3813:
|
|
call void @finch_panic(ptr @.str.2346, i64 1568, ptr @.str.2347)
|
|
unreachable
|
|
ok3814:
|
|
%t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 15
|
|
%t268 = load i64, ptr %a2
|
|
%t269 = load { ptr, i64, i64 }, ptr %t267
|
|
%t270 = extractvalue { ptr, i64, i64 } %t269, 1
|
|
%t271 = icmp uge i64 %t268, %t270
|
|
br i1 %t271, label %range3815, label %inrange3816
|
|
range3815:
|
|
call void @finch_panic_index(ptr @.str.2348, i64 1568, i64 %t268, i64 %t270)
|
|
unreachable
|
|
inrange3816:
|
|
%t272 = extractvalue { ptr, i64, i64 } %t269, 0
|
|
%t273 = getelementptr inbounds %S.gen.StructDef, ptr %t272, i64 %t268
|
|
%t274 = getelementptr inbounds %S.gen.StructDef, ptr %t273, i32 0, i32 0
|
|
%t275 = load { ptr, i64, i64 }, ptr %t274
|
|
%t276 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t275)
|
|
store { ptr, i64, i64 } { ptr @.str.2345, i64 3, i64 0 }, ptr %a278
|
|
store { ptr, i64, i64 } %t276, ptr %a279
|
|
call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279)
|
|
%t280 = load { ptr, i64, i64 }, ptr %a277
|
|
store { ptr, i64, i64 } %t280, ptr %a282
|
|
store { ptr, i64, i64 } { ptr @.str.2349, i64 1, i64 0 }, ptr %a283
|
|
call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283)
|
|
%t284 = load { ptr, i64, i64 }, ptr %a281
|
|
%t285 = load ptr, ptr %a1
|
|
%t286 = icmp eq ptr %t285, null
|
|
br i1 %t286, label %panic3817, label %ok3818
|
|
panic3817:
|
|
call void @finch_panic(ptr @.str.2350, i64 1568, ptr @.str.2351)
|
|
unreachable
|
|
ok3818:
|
|
%t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 15
|
|
%t288 = load i64, ptr %a2
|
|
%t289 = load { ptr, i64, i64 }, ptr %t287
|
|
%t290 = extractvalue { ptr, i64, i64 } %t289, 1
|
|
%t291 = icmp uge i64 %t288, %t290
|
|
br i1 %t291, label %range3819, label %inrange3820
|
|
range3819:
|
|
call void @finch_panic_index(ptr @.str.2352, i64 1568, i64 %t288, i64 %t290)
|
|
unreachable
|
|
inrange3820:
|
|
%t292 = extractvalue { ptr, i64, i64 } %t289, 0
|
|
%t293 = getelementptr inbounds %S.gen.StructDef, ptr %t292, i64 %t288
|
|
%t294 = getelementptr inbounds %S.gen.StructDef, ptr %t293, i32 0, i32 1
|
|
%t295 = load { ptr, i64, i64 }, ptr %t294
|
|
%t296 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t295)
|
|
store { ptr, i64, i64 } %t284, ptr %a298
|
|
store { ptr, i64, i64 } %t296, ptr %a299
|
|
call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299)
|
|
%t300 = load { ptr, i64, i64 }, ptr %a297
|
|
store { ptr, i64, i64 } %t300, ptr %a302
|
|
store { ptr, i64, i64 } { ptr @.str.2353, i64 10, i64 0 }, ptr %a303
|
|
call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303)
|
|
%t304 = load { ptr, i64, i64 }, ptr %a301
|
|
%t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2354, i64 2, i64 0 }, ptr %a306
|
|
call void @finch_str_join(ptr %a307, ptr %a124, ptr %a306)
|
|
%t308 = load { ptr, i64, i64 }, ptr %a307
|
|
store { ptr, i64, i64 } %t304, ptr %a310
|
|
store { ptr, i64, i64 } %t308, ptr %a311
|
|
call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311)
|
|
%t312 = load { ptr, i64, i64 }, ptr %a309
|
|
store { ptr, i64, i64 } %t312, ptr %a314
|
|
store { ptr, i64, i64 } { ptr @.str.2355, i64 2, i64 0 }, ptr %a315
|
|
call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315)
|
|
%t316 = load { ptr, i64, i64 }, ptr %a313
|
|
%t317 = load i64, ptr %t264
|
|
%t318 = add i64 %t317, 1
|
|
call void @finch_arr_reserve(ptr %t263, i64 %t318, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t319 = load ptr, ptr %t263
|
|
%t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t319, i64 %t317
|
|
store { ptr, i64, i64 } %t316, ptr %t320
|
|
store i64 %t318, ptr %t264
|
|
ret void
|
|
}
|
|
|
|
define internal i64 @finch.gen.md(ptr %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic3821, label %ok3822
|
|
panic3821:
|
|
call void @finch_panic(ptr @.str.2356, i64 1577, ptr @.str.2357)
|
|
unreachable
|
|
ok3822:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 29
|
|
%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 %panic3823, label %ok3824
|
|
panic3823:
|
|
call void @finch_panic(ptr @.str.2358, i64 1578, ptr @.str.2359)
|
|
unreachable
|
|
ok3824:
|
|
%t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 29
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1
|
|
%t19 = load i64, ptr %t18
|
|
%t20 = sub i64 %t19, 1
|
|
ret i64 %t20
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.mdRef(i64 %p0) {
|
|
entry:
|
|
%a1 = alloca i64, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
store i64 %p0, ptr %a1
|
|
%t2 = load i64, ptr %a1
|
|
%t3 = icmp slt i64 %t2, 0
|
|
br i1 %t3, label %then3825, label %endif3827
|
|
then3825:
|
|
ret { ptr, i64, i64 } { ptr @.str.2360, i64 4, i64 0 }
|
|
endif3827:
|
|
%t4 = load i64, ptr %a1
|
|
call void @finch_str_from_int(ptr %a5, i64 %t4)
|
|
%t6 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.2361, i64 1, i64 0 }, ptr %a8
|
|
store { ptr, i64, i64 } %t6, ptr %a9
|
|
call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9)
|
|
%t10 = load { ptr, i64, i64 }, ptr %a7
|
|
ret { ptr, i64, i64 } %t10
|
|
}
|
|
|
|
define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca i64, align 16
|
|
%a2 = alloca i64, align 16
|
|
store i64 %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = load i64, ptr %a2
|
|
%t4 = icmp sle i64 %t3, 1
|
|
br i1 %t4, label %then3828, label %endif3830
|
|
then3828:
|
|
%t5 = load i64, ptr %a1
|
|
ret i64 %t5
|
|
endif3830:
|
|
%t6 = load i64, ptr %a1
|
|
%t7 = load i64, ptr %a2
|
|
%t8 = add i64 %t6, %t7
|
|
%t9 = sub i64 %t8, 1
|
|
%t10 = load i64, ptr %a2
|
|
%t11 = icmp eq i64 %t10, 0
|
|
br i1 %t11, label %panic3831, label %ok3832
|
|
panic3831:
|
|
call void @finch_panic(ptr @.str.2362, i64 1597, ptr @.str.2363)
|
|
unreachable
|
|
ok3832:
|
|
%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.2364, i64 4, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br label %logic.from3833
|
|
logic.from3833:
|
|
br i1 %t13, label %logic.end3835, label %logic.rhs3834
|
|
logic.rhs3834:
|
|
%t14 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.2365, i64 4, i64 0 }, ptr %a16
|
|
%t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16)
|
|
%t18 = icmp ne i32 %t17, 0
|
|
br label %logic.rend3836
|
|
logic.rend3836:
|
|
br label %logic.end3835
|
|
logic.end3835:
|
|
%t19 = phi i1 [ true, %logic.from3833 ], [ %t18, %logic.rend3836 ]
|
|
br label %logic.from3837
|
|
logic.from3837:
|
|
br i1 %t19, label %logic.end3839, label %logic.rhs3838
|
|
logic.rhs3838:
|
|
%t20 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t20, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.2366, i64 2, i64 0 }, ptr %a22
|
|
%t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22)
|
|
%t24 = icmp ne i32 %t23, 0
|
|
br label %logic.rend3840
|
|
logic.rend3840:
|
|
br label %logic.end3839
|
|
logic.end3839:
|
|
%t25 = phi i1 [ true, %logic.from3837 ], [ %t24, %logic.rend3840 ]
|
|
br label %logic.from3841
|
|
logic.from3841:
|
|
br i1 %t25, label %logic.end3843, label %logic.rhs3842
|
|
logic.rhs3842:
|
|
%t26 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t26, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.2367, i64 2, i64 0 }, ptr %a28
|
|
%t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28)
|
|
%t30 = icmp ne i32 %t29, 0
|
|
br label %logic.rend3844
|
|
logic.rend3844:
|
|
br label %logic.end3843
|
|
logic.end3843:
|
|
%t31 = phi i1 [ true, %logic.from3841 ], [ %t30, %logic.rend3844 ]
|
|
br i1 %t31, label %then3845, label %endif3847
|
|
then3845:
|
|
%t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0
|
|
%t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1
|
|
ret %S.gen.SizeAlign %t33
|
|
endif3847:
|
|
%t34 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t34, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.2368, i64 3, i64 0 }, ptr %a36
|
|
%t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36)
|
|
%t38 = icmp ne i32 %t37, 0
|
|
br label %logic.from3848
|
|
logic.from3848:
|
|
br i1 %t38, label %logic.end3850, label %logic.rhs3849
|
|
logic.rhs3849:
|
|
%t39 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t39, ptr %a40
|
|
store { ptr, i64, i64 } { ptr @.str.2369, i64 3, i64 0 }, ptr %a41
|
|
%t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41)
|
|
%t43 = icmp ne i32 %t42, 0
|
|
br label %logic.rend3851
|
|
logic.rend3851:
|
|
br label %logic.end3850
|
|
logic.end3850:
|
|
%t44 = phi i1 [ true, %logic.from3848 ], [ %t43, %logic.rend3851 ]
|
|
br i1 %t44, label %then3852, label %endif3854
|
|
then3852:
|
|
%t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0
|
|
%t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1
|
|
ret %S.gen.SizeAlign %t46
|
|
endif3854:
|
|
%t47 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t47, ptr %a48
|
|
store { ptr, i64, i64 } { ptr @.str.2370, i64 3, i64 0 }, ptr %a49
|
|
%t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49)
|
|
%t51 = icmp ne i32 %t50, 0
|
|
br label %logic.from3855
|
|
logic.from3855:
|
|
br i1 %t51, label %logic.end3857, label %logic.rhs3856
|
|
logic.rhs3856:
|
|
%t52 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.2371, i64 3, i64 0 }, ptr %a54
|
|
%t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54)
|
|
%t56 = icmp ne i32 %t55, 0
|
|
br label %logic.rend3858
|
|
logic.rend3858:
|
|
br label %logic.end3857
|
|
logic.end3857:
|
|
%t57 = phi i1 [ true, %logic.from3855 ], [ %t56, %logic.rend3858 ]
|
|
br label %logic.from3859
|
|
logic.from3859:
|
|
br i1 %t57, label %logic.end3861, label %logic.rhs3860
|
|
logic.rhs3860:
|
|
%t58 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t58, ptr %a59
|
|
store { ptr, i64, i64 } { ptr @.str.2372, i64 3, i64 0 }, ptr %a60
|
|
%t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60)
|
|
%t62 = icmp ne i32 %t61, 0
|
|
br label %logic.rend3862
|
|
logic.rend3862:
|
|
br label %logic.end3861
|
|
logic.end3861:
|
|
%t63 = phi i1 [ true, %logic.from3859 ], [ %t62, %logic.rend3862 ]
|
|
br label %logic.from3863
|
|
logic.from3863:
|
|
br i1 %t63, label %logic.end3865, label %logic.rhs3864
|
|
logic.rhs3864:
|
|
%t64 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t64, ptr %a65
|
|
store { ptr, i64, i64 } { ptr @.str.2373, i64 4, i64 0 }, ptr %a66
|
|
%t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66)
|
|
%t68 = icmp ne i32 %t67, 0
|
|
br label %logic.rend3866
|
|
logic.rend3866:
|
|
br label %logic.end3865
|
|
logic.end3865:
|
|
%t69 = phi i1 [ true, %logic.from3863 ], [ %t68, %logic.rend3866 ]
|
|
br i1 %t69, label %then3867, label %endif3869
|
|
then3867:
|
|
%t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0
|
|
%t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1
|
|
ret %S.gen.SizeAlign %t71
|
|
endif3869:
|
|
%t72 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t72, ptr %a73
|
|
store { ptr, i64, i64 } { ptr @.str.2374, i64 3, i64 0 }, ptr %a74
|
|
%t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74)
|
|
%t76 = icmp ne i32 %t75, 0
|
|
br label %logic.from3870
|
|
logic.from3870:
|
|
br i1 %t76, label %logic.end3872, label %logic.rhs3871
|
|
logic.rhs3871:
|
|
%t77 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
store { ptr, i64, i64 } { ptr @.str.2375, i64 5, i64 0 }, ptr %a79
|
|
%t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79)
|
|
%t81 = icmp ne i32 %t80, 0
|
|
br label %logic.rend3873
|
|
logic.rend3873:
|
|
br label %logic.end3872
|
|
logic.end3872:
|
|
%t82 = phi i1 [ true, %logic.from3870 ], [ %t81, %logic.rend3873 ]
|
|
br i1 %t82, label %then3874, label %endif3876
|
|
then3874:
|
|
%t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0
|
|
%t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1
|
|
ret %S.gen.SizeAlign %t84
|
|
endif3876:
|
|
%t85 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t85, ptr %a86
|
|
store { ptr, i64, i64 } { ptr @.str.2376, i64 3, i64 0 }, ptr %a87
|
|
%t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87)
|
|
%t89 = icmp ne i32 %t88, 0
|
|
br i1 %t89, label %then3877, label %endif3879
|
|
then3877:
|
|
%t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0
|
|
%t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1
|
|
ret %S.gen.SizeAlign %t91
|
|
endif3879:
|
|
%t92 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t92, ptr %a93
|
|
store { ptr, i64, i64 } { ptr @.str.2377, i64 5, i64 0 }, ptr %a94
|
|
%t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94)
|
|
%t96 = icmp ne i32 %t95, 0
|
|
br i1 %t96, label %then3880, label %endif3882
|
|
then3880:
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t99 = load { ptr, i64, i64 }, ptr %t98
|
|
%t100 = extractvalue { ptr, i64, i64 } %t99, 1
|
|
%t101 = icmp uge i64 0, %t100
|
|
br i1 %t101, label %range3883, label %inrange3884
|
|
range3883:
|
|
call void @finch_panic_index(ptr @.str.2378, i64 1619, i64 0, i64 %t100)
|
|
unreachable
|
|
inrange3884:
|
|
%t102 = extractvalue { ptr, i64, i64 } %t99, 0
|
|
%t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0
|
|
%t104 = load %S.ast.Type, ptr %t103
|
|
%t105 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t97, %S.ast.Type %t104)
|
|
store %S.gen.SizeAlign %t105, ptr %a106
|
|
%t107 = getelementptr inbounds %S.gen.SizeAlign, ptr %a106, i32 0, i32 0
|
|
%t108 = load i64, ptr %t107
|
|
%t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4
|
|
%t110 = load i64, ptr %t109
|
|
%t111 = mul i64 %t108, %t110
|
|
%t112 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t111, 0
|
|
%t113 = getelementptr inbounds %S.gen.SizeAlign, ptr %a106, i32 0, i32 1
|
|
%t114 = load i64, ptr %t113
|
|
%t115 = insertvalue %S.gen.SizeAlign %t112, i64 %t114, 1
|
|
ret %S.gen.SizeAlign %t115
|
|
endif3882:
|
|
%t116 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t116, ptr %a117
|
|
store { ptr, i64, i64 } { ptr @.str.2379, i64 6, i64 0 }, ptr %a118
|
|
%t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118)
|
|
%t120 = icmp ne i32 %t119, 0
|
|
br i1 %t120, label %then3885, label %endif3887
|
|
then3885:
|
|
%t121 = load ptr, ptr %a1
|
|
%t122 = icmp eq ptr %t121, null
|
|
br i1 %t122, label %panic3888, label %ok3889
|
|
panic3888:
|
|
call void @finch_panic(ptr @.str.2380, i64 1623, ptr @.str.2381)
|
|
unreachable
|
|
ok3889:
|
|
%t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 15
|
|
%t124 = load ptr, ptr %a1
|
|
%t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t126 = load { ptr, i64, i64 }, ptr %t125
|
|
%t127 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t128 = load { ptr, i64, i64 }, ptr %t127
|
|
%t129 = call i64 @finch.gen.findStruct(ptr %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t128)
|
|
%t130 = load { ptr, i64, i64 }, ptr %t123
|
|
%t131 = extractvalue { ptr, i64, i64 } %t130, 1
|
|
%t132 = icmp uge i64 %t129, %t131
|
|
br i1 %t132, label %range3890, label %inrange3891
|
|
range3890:
|
|
call void @finch_panic_index(ptr @.str.2382, i64 1623, i64 %t129, i64 %t131)
|
|
unreachable
|
|
inrange3891:
|
|
%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 %then3892, label %endif3894
|
|
then3892:
|
|
%t142 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 9
|
|
%t143 = load i64, ptr %t142
|
|
%t144 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t143, 0
|
|
%t145 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 10
|
|
%t146 = load i64, ptr %t145
|
|
%t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1
|
|
ret %S.gen.SizeAlign %t147
|
|
endif3894:
|
|
store i64 0, ptr %a148
|
|
store i64 1, ptr %a149
|
|
%t150 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 12
|
|
store i64 0, ptr %a151
|
|
br label %each.cond3895
|
|
each.cond3895:
|
|
%t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1
|
|
%t153 = load i64, ptr %t152
|
|
%t154 = load i64, ptr %a151
|
|
%t155 = icmp slt i64 %t154, %t153
|
|
br i1 %t155, label %each.body3896, label %each.end3898
|
|
each.body3896:
|
|
%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 %then3899, label %endif3901
|
|
then3899:
|
|
%t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1
|
|
%t176 = load i64, ptr %t175
|
|
store i64 %t176, ptr %a149
|
|
br label %endif3901
|
|
endif3901:
|
|
br label %each.step3897
|
|
each.step3897:
|
|
%t177 = load i64, ptr %a151
|
|
%t178 = add i64 %t177, 1
|
|
store i64 %t178, ptr %a151
|
|
br label %each.cond3895
|
|
each.end3898:
|
|
%t179 = load i64, ptr %a148
|
|
%t180 = load i64, ptr %a149
|
|
%t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180)
|
|
%t182 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t181, 0
|
|
%t183 = load i64, ptr %a149
|
|
%t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1
|
|
ret %S.gen.SizeAlign %t184
|
|
endif3887:
|
|
%t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0
|
|
%t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1
|
|
ret %S.gen.SizeAlign %t186
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %p0, %S.gen.StructDef %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.gen.StructDef, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca i64, align 16
|
|
%a13 = alloca i64, align 16
|
|
%a21 = alloca %S.ast.Type, align 16
|
|
%a25 = alloca %S.gen.SizeAlign, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.gen.StructDef %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.gen.StructDef, ptr %a2, i32 0, i32 2
|
|
%t4 = load i1, ptr %t3
|
|
br i1 %t4, label %then3902, label %endif3904
|
|
then3902:
|
|
%t5 = getelementptr inbounds %S.gen.StructDef, ptr %a2, i32 0, i32 4
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
call void @finch.copy.arr_int(ptr %a8, ptr %a7)
|
|
%t9 = load { ptr, i64, i64 }, ptr %a8
|
|
ret { ptr, i64, i64 } %t9
|
|
endif3904:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a10
|
|
store i64 0, ptr %a11
|
|
%t12 = getelementptr inbounds %S.gen.StructDef, ptr %a2, i32 0, i32 12
|
|
store i64 0, ptr %a13
|
|
br label %each.cond3905
|
|
each.cond3905:
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1
|
|
%t15 = load i64, ptr %t14
|
|
%t16 = load i64, ptr %a13
|
|
%t17 = icmp slt i64 %t16, %t15
|
|
br i1 %t17, label %each.body3906, label %each.end3908
|
|
each.body3906:
|
|
%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.step3907
|
|
each.step3907:
|
|
%t40 = load i64, ptr %a13
|
|
%t41 = add i64 %t40, 1
|
|
store i64 %t41, ptr %a13
|
|
br label %each.cond3905
|
|
each.end3908:
|
|
%t42 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t42, ptr %a43
|
|
call void @finch.copy.arr_int(ptr %a44, ptr %a43)
|
|
%t45 = load { ptr, i64, i64 }, ptr %a44
|
|
ret { ptr, i64, i64 } %t45
|
|
}
|
|
|
|
define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca i64, align 16
|
|
%a4 = alloca i64, align 16
|
|
%a5 = alloca i64, align 16
|
|
%a6 = alloca i64, align 16
|
|
%a7 = alloca i64, align 16
|
|
%a8 = alloca i64, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store i64 %p2, ptr %a3
|
|
store i64 %p3, ptr %a4
|
|
store i64 %p4, ptr %a5
|
|
store i64 %p5, ptr %a6
|
|
store i64 %p6, ptr %a7
|
|
store i64 %p7, ptr %a8
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.2383, i64 42, i64 0 }, ptr %a12
|
|
store { ptr, i64, i64 } %t10, ptr %a13
|
|
call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t14, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.2384, i64 11, i64 0 }, ptr %a17
|
|
call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a15
|
|
%t19 = load i64, ptr %a3
|
|
call void @finch_str_from_int(ptr %a20, i64 %t19)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } %t18, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.2385, i64 9, i64 0 }, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
%t30 = load i64, ptr %a4
|
|
call void @finch_str_from_int(ptr %a31, i64 %t30)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } %t29, ptr %a34
|
|
store { ptr, i64, i64 } %t32, ptr %a35
|
|
call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35)
|
|
%t36 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } %t36, ptr %a38
|
|
store { ptr, i64, i64 } { ptr @.str.2386, i64 8, i64 0 }, ptr %a39
|
|
call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a37
|
|
%t41 = load i64, ptr %a5
|
|
call void @finch_str_from_int(ptr %a42, i64 %t41)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a42
|
|
store { ptr, i64, i64 } %t40, ptr %a45
|
|
store { ptr, i64, i64 } %t43, ptr %a46
|
|
call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46)
|
|
%t47 = load { ptr, i64, i64 }, ptr %a44
|
|
store { ptr, i64, i64 } %t47, ptr %a49
|
|
store { ptr, i64, i64 } { ptr @.str.2387, i64 12, i64 0 }, ptr %a50
|
|
call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a48
|
|
%t52 = load i64, ptr %a6
|
|
%t53 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t52)
|
|
store { ptr, i64, i64 } %t51, ptr %a55
|
|
store { ptr, i64, i64 } %t53, ptr %a56
|
|
call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t57, ptr %a59
|
|
store { ptr, i64, i64 } { ptr @.str.2388, i64 8, i64 0 }, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
%t62 = load i64, ptr %a7
|
|
call void @finch_str_from_int(ptr %a63, i64 %t62)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t61, ptr %a66
|
|
store { ptr, i64, i64 } %t64, ptr %a67
|
|
call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t68, ptr %a70
|
|
store { ptr, i64, i64 } { ptr @.str.2389, i64 10, i64 0 }, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
%t73 = load i64, ptr %a8
|
|
call void @finch_str_from_int(ptr %a74, i64 %t73)
|
|
%t75 = load { ptr, i64, i64 }, ptr %a74
|
|
store { ptr, i64, i64 } %t72, ptr %a77
|
|
store { ptr, i64, i64 } %t75, ptr %a78
|
|
call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78)
|
|
%t79 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } %t79, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.2390, i64 1, i64 0 }, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
%t84 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t83)
|
|
ret i64 %t84
|
|
}
|
|
|
|
define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca i64, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store i64 %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.2391, i64 20, i64 0 }, ptr %a8
|
|
store { ptr, i64, i64 } %t6, ptr %a9
|
|
call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9)
|
|
%t10 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t10, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.2392, i64 9, i64 0 }, ptr %a13
|
|
call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
%t15 = load i64, ptr %a3
|
|
call void @finch_str_from_int(ptr %a16, i64 %t15)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t14, ptr %a19
|
|
store { ptr, i64, i64 } %t17, ptr %a20
|
|
call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t21, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.2393, i64 12, i64 0 }, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
%t26 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t25, ptr %a28
|
|
store { ptr, i64, i64 } %t26, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t30, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.2394, i64 1, i64 0 }, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
%t35 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t34)
|
|
ret i64 %t35
|
|
}
|
|
|
|
define internal i64 @finch.gen.diType(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca i64, align 16
|
|
%a58 = alloca i64, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca %S.gen.EnumDef, align 16
|
|
%a126 = alloca %S.gen.EnumDef, align 16
|
|
%a128 = alloca %S.gen.EnumDef, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca i64, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca i32, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca i64, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca %S.gen.SizeAlign, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca i64, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a316 = alloca { ptr, i64, i64 }, align 16
|
|
%a317 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a328 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a336 = alloca { ptr, i64, i64 }, align 16
|
|
%a338 = alloca { ptr, i64, i64 }, align 16
|
|
%a339 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a344 = alloca { ptr, i64, i64 }, align 16
|
|
%a356 = alloca { ptr, i64, i64 }, align 16
|
|
%a357 = alloca { ptr, i64, i64 }, align 16
|
|
%a361 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a367 = alloca %S.ast.Type, align 16
|
|
%a369 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca %S.ast.Type, align 16
|
|
%a381 = alloca %S.ast.Type, align 16
|
|
%a388 = alloca { ptr, i64, i64 }, align 16
|
|
%a389 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a397 = alloca i64, align 16
|
|
%a401 = alloca i64, align 16
|
|
%a407 = alloca i64, align 16
|
|
%a413 = alloca i64, align 16
|
|
%a419 = alloca i64, align 16
|
|
%a422 = alloca { ptr, i64, i64 }, align 16
|
|
%a423 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a428 = alloca { ptr, i64, i64 }, align 16
|
|
%a431 = alloca { ptr, i64, i64 }, align 16
|
|
%a433 = alloca { ptr, i64, i64 }, align 16
|
|
%a434 = alloca { ptr, i64, i64 }, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a437 = alloca { ptr, i64, i64 }, align 16
|
|
%a438 = alloca { ptr, i64, i64 }, align 16
|
|
%a439 = alloca { ptr, i64, i64 }, align 16
|
|
%a442 = alloca { ptr, i64, i64 }, align 16
|
|
%a444 = alloca { ptr, i64, i64 }, align 16
|
|
%a445 = alloca { ptr, i64, i64 }, align 16
|
|
%a446 = alloca { ptr, i64, i64 }, align 16
|
|
%a448 = alloca { ptr, i64, i64 }, align 16
|
|
%a449 = alloca { ptr, i64, i64 }, align 16
|
|
%a450 = alloca { ptr, i64, i64 }, align 16
|
|
%a453 = alloca { ptr, i64, i64 }, align 16
|
|
%a455 = alloca { ptr, i64, i64 }, align 16
|
|
%a456 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a459 = alloca { ptr, i64, i64 }, align 16
|
|
%a460 = alloca { ptr, i64, i64 }, align 16
|
|
%a461 = alloca { ptr, i64, i64 }, align 16
|
|
%a464 = alloca { ptr, i64, i64 }, align 16
|
|
%a466 = alloca { ptr, i64, i64 }, align 16
|
|
%a467 = alloca { ptr, i64, i64 }, align 16
|
|
%a468 = alloca { ptr, i64, i64 }, align 16
|
|
%a470 = alloca { ptr, i64, i64 }, align 16
|
|
%a471 = alloca { ptr, i64, i64 }, align 16
|
|
%a472 = alloca { ptr, i64, i64 }, align 16
|
|
%a484 = alloca { ptr, i64, i64 }, align 16
|
|
%a485 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca i64, align 16
|
|
%a494 = alloca i64, align 16
|
|
%a507 = alloca { ptr, i64, i64 }, align 16
|
|
%a508 = alloca { ptr, i64, i64 }, align 16
|
|
%a509 = alloca i64, align 16
|
|
%a513 = alloca i64, align 16
|
|
%a535 = alloca { ptr, i64, i64 }, align 16
|
|
%a537 = alloca { ptr, i64, i64 }, align 16
|
|
%a538 = alloca { ptr, i64, i64 }, align 16
|
|
%a539 = alloca { ptr, i64, i64 }, align 16
|
|
%a549 = alloca { ptr, i64, i64 }, align 16
|
|
%a550 = alloca { ptr, i64, i64 }, align 16
|
|
%a551 = alloca { ptr, i64, i64 }, align 16
|
|
%a553 = alloca { ptr, i64, i64 }, align 16
|
|
%a554 = alloca { ptr, i64, i64 }, align 16
|
|
%a555 = alloca { ptr, i64, i64 }, align 16
|
|
%a558 = alloca { ptr, i64, i64 }, align 16
|
|
%a560 = alloca { ptr, i64, i64 }, align 16
|
|
%a561 = alloca { ptr, i64, i64 }, align 16
|
|
%a562 = alloca { ptr, i64, i64 }, align 16
|
|
%a564 = alloca { ptr, i64, i64 }, align 16
|
|
%a565 = alloca { ptr, i64, i64 }, align 16
|
|
%a566 = alloca { ptr, i64, i64 }, align 16
|
|
%a569 = alloca { ptr, i64, i64 }, align 16
|
|
%a570 = alloca { ptr, i64, i64 }, align 16
|
|
%a572 = alloca { ptr, i64, i64 }, align 16
|
|
%a573 = alloca { ptr, i64, i64 }, align 16
|
|
%a574 = alloca { ptr, i64, i64 }, align 16
|
|
%a576 = alloca { ptr, i64, i64 }, align 16
|
|
%a577 = alloca { ptr, i64, i64 }, align 16
|
|
%a578 = alloca { ptr, i64, i64 }, align 16
|
|
%a590 = alloca { ptr, i64, i64 }, align 16
|
|
%a591 = alloca { ptr, i64, i64 }, align 16
|
|
%a609 = alloca %S.gen.StructDef, align 16
|
|
%a610 = alloca %S.gen.StructDef, align 16
|
|
%a612 = alloca %S.gen.StructDef, align 16
|
|
%a616 = alloca { ptr, i64, i64 }, align 16
|
|
%a620 = alloca %S.gen.SizeAlign, align 16
|
|
%a621 = alloca { ptr, i64, i64 }, align 16
|
|
%a625 = alloca i64, align 16
|
|
%a638 = alloca %S.gen.SizeAlign, align 16
|
|
%a673 = alloca { ptr, i64, i64 }, align 16
|
|
%a675 = alloca { ptr, i64, i64 }, align 16
|
|
%a676 = alloca { ptr, i64, i64 }, align 16
|
|
%a677 = alloca { ptr, i64, i64 }, align 16
|
|
%a687 = alloca { ptr, i64, i64 }, align 16
|
|
%a688 = alloca { ptr, i64, i64 }, align 16
|
|
%a689 = alloca { ptr, i64, i64 }, align 16
|
|
%a691 = alloca { ptr, i64, i64 }, align 16
|
|
%a692 = alloca { ptr, i64, i64 }, align 16
|
|
%a693 = alloca { ptr, i64, i64 }, align 16
|
|
%a696 = alloca { ptr, i64, i64 }, align 16
|
|
%a698 = alloca { ptr, i64, i64 }, align 16
|
|
%a699 = alloca { ptr, i64, i64 }, align 16
|
|
%a700 = alloca { ptr, i64, i64 }, align 16
|
|
%a702 = alloca { ptr, i64, i64 }, align 16
|
|
%a703 = alloca { ptr, i64, i64 }, align 16
|
|
%a704 = alloca { ptr, i64, i64 }, align 16
|
|
%a709 = alloca { ptr, i64, i64 }, align 16
|
|
%a711 = alloca { ptr, i64, i64 }, align 16
|
|
%a712 = alloca { ptr, i64, i64 }, align 16
|
|
%a713 = alloca { ptr, i64, i64 }, align 16
|
|
%a715 = alloca { ptr, i64, i64 }, align 16
|
|
%a716 = alloca { ptr, i64, i64 }, align 16
|
|
%a717 = alloca { ptr, i64, i64 }, align 16
|
|
%a720 = alloca { ptr, i64, i64 }, align 16
|
|
%a721 = alloca { ptr, i64, i64 }, align 16
|
|
%a723 = alloca { ptr, i64, i64 }, align 16
|
|
%a724 = alloca { ptr, i64, i64 }, align 16
|
|
%a725 = alloca { ptr, i64, i64 }, align 16
|
|
%a727 = alloca { ptr, i64, i64 }, align 16
|
|
%a728 = alloca { ptr, i64, i64 }, align 16
|
|
%a729 = alloca { ptr, i64, i64 }, align 16
|
|
%a741 = alloca { ptr, i64, i64 }, align 16
|
|
%a742 = alloca { ptr, i64, i64 }, align 16
|
|
%a743 = alloca { ptr, i64, i64 }, align 16
|
|
%a745 = alloca { ptr, i64, i64 }, align 16
|
|
%a746 = alloca { ptr, i64, i64 }, align 16
|
|
%a747 = alloca { ptr, i64, i64 }, align 16
|
|
%a764 = alloca { ptr, i64, i64 }, align 16
|
|
%a765 = alloca i32, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
call void @finch_str_copy(ptr %a6, ptr %a5)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
%t9 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.2395, i64 4, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br label %logic.from3909
|
|
logic.from3909:
|
|
br i1 %t13, label %logic.end3911, label %logic.rhs3910
|
|
logic.rhs3910:
|
|
%t14 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.2396, i64 4, i64 0 }, ptr %a16
|
|
%t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16)
|
|
%t18 = icmp ne i32 %t17, 0
|
|
br label %logic.rend3912
|
|
logic.rend3912:
|
|
br label %logic.end3911
|
|
logic.end3911:
|
|
%t19 = phi i1 [ true, %logic.from3909 ], [ %t18, %logic.rend3912 ]
|
|
br i1 %t19, label %then3913, label %endif3915
|
|
then3913:
|
|
ret i64 -1
|
|
endif3915:
|
|
%t20 = load %S.ast.Type, ptr %a2
|
|
%t21 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t20)
|
|
store { ptr, i64, i64 } { ptr @.str.2397, i64 2, i64 0 }, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = icmp eq ptr %t27, null
|
|
br i1 %t28, label %panic3916, label %ok3917
|
|
panic3916:
|
|
call void @finch_panic(ptr @.str.2398, i64 1672, ptr @.str.2399)
|
|
unreachable
|
|
ok3917:
|
|
%t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 30
|
|
%t30 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t30, ptr %a31
|
|
%t32 = call i64 @finch_map_find(ptr %t29, ptr %a31, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t33 = icmp sge i64 %t32, 0
|
|
br i1 %t33, label %then3918, label %endif3920
|
|
then3918:
|
|
%t34 = load ptr, ptr %a1
|
|
%t35 = icmp eq ptr %t34, null
|
|
br i1 %t35, label %panic3921, label %ok3922
|
|
panic3921:
|
|
call void @finch_panic(ptr @.str.2400, i64 1673, ptr @.str.2401)
|
|
unreachable
|
|
ok3922:
|
|
%t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 30
|
|
%t37 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t37, ptr %a38
|
|
%t39 = call i64 @finch_map_find(ptr %t36, ptr %a38, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t40 = icmp slt i64 %t39, 0
|
|
br i1 %t40, label %map.missing3923, label %map.found3924
|
|
map.missing3923:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a41
|
|
store { ptr, i64, i64 } %t37, ptr %a42
|
|
call void @finch_buf_str(ptr %a41, ptr %a42, i32 1)
|
|
call void @finch_map_missing(ptr @.str.2402, i64 1673, ptr %a41)
|
|
unreachable
|
|
map.found3924:
|
|
%t43 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t36, i32 0, i32 0
|
|
%t44 = load ptr, ptr %t43
|
|
%t45 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t44, i64 %t39
|
|
%t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i32 0, i32 2
|
|
%t47 = load i64, ptr %t46
|
|
ret i64 %t47
|
|
endif3920:
|
|
store i64 -1, ptr %a48
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = icmp eq ptr %t49, null
|
|
br i1 %t50, label %panic3925, label %ok3926
|
|
panic3925:
|
|
call void @finch_panic(ptr @.str.2403, i64 1676, ptr @.str.2404)
|
|
unreachable
|
|
ok3926:
|
|
%t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 31
|
|
%t52 = load { ptr, i64, i64 }, ptr %t51
|
|
%t53 = extractvalue { ptr, i64, i64 } %t52, 1
|
|
%t54 = icmp uge i64 0, %t53
|
|
br i1 %t54, label %range3927, label %inrange3928
|
|
range3927:
|
|
call void @finch_panic_index(ptr @.str.2405, i64 1676, i64 0, i64 %t53)
|
|
unreachable
|
|
inrange3928:
|
|
%t55 = extractvalue { ptr, i64, i64 } %t52, 0
|
|
%t56 = getelementptr inbounds i64, ptr %t55, i64 0
|
|
%t57 = load i64, ptr %t56
|
|
store i64 %t57, ptr %a58
|
|
%t59 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t59, ptr %a60
|
|
store { ptr, i64, i64 } { ptr @.str.2406, i64 4, i64 0 }, ptr %a61
|
|
%t62 = call i32 @finch_str_eq(ptr %a60, ptr %a61)
|
|
%t63 = icmp ne i32 %t62, 0
|
|
br i1 %t63, label %then3929, label %else3930
|
|
then3929:
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = call i64 @finch.gen.basicType(ptr %t64, { ptr, i64, i64 } { ptr @.str.2407, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2408, i64 14, i64 0 })
|
|
store i64 %t65, ptr %a48
|
|
br label %endif3931
|
|
else3930:
|
|
%t66 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t66, ptr %a67
|
|
store { ptr, i64, i64 } { ptr @.str.2409, i64 4, i64 0 }, ptr %a68
|
|
%t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68)
|
|
%t70 = icmp ne i32 %t69, 0
|
|
br i1 %t70, label %then3932, label %else3933
|
|
then3932:
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = call i64 @finch.gen.basicType(ptr %t71, { ptr, i64, i64 } { ptr @.str.2410, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2411, i64 18, i64 0 })
|
|
store i64 %t72, ptr %a48
|
|
br label %endif3934
|
|
else3933:
|
|
%t73 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t73, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.2412, i64 3, i64 0 }, ptr %a75
|
|
%t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75)
|
|
%t77 = icmp ne i32 %t76, 0
|
|
br i1 %t77, label %then3935, label %else3936
|
|
then3935:
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = call i64 @finch.gen.basicType(ptr %t78, { ptr, i64, i64 } { ptr @.str.2413, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2414, i64 13, i64 0 })
|
|
store i64 %t79, ptr %a48
|
|
br label %endif3937
|
|
else3936:
|
|
%t80 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.2415, i64 5, i64 0 }, ptr %a82
|
|
%t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82)
|
|
%t84 = icmp ne i32 %t83, 0
|
|
br i1 %t84, label %then3938, label %else3939
|
|
then3938:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = call i64 @finch.gen.basicType(ptr %t85, { ptr, i64, i64 } { ptr @.str.2416, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2417, i64 12, i64 0 })
|
|
store i64 %t86, ptr %a48
|
|
br label %endif3940
|
|
else3939:
|
|
%t87 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
store { ptr, i64, i64 } { ptr @.str.2418, i64 3, i64 0 }, ptr %a89
|
|
%t90 = call i32 @finch_str_eq(ptr %a88, ptr %a89)
|
|
%t91 = icmp ne i32 %t90, 0
|
|
br i1 %t91, label %then3941, label %else3942
|
|
then3941:
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = call i64 @finch.gen.basicType(ptr %t92, { ptr, i64, i64 } { ptr @.str.2419, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2420, i64 12, i64 0 })
|
|
store i64 %t93, ptr %a48
|
|
br label %endif3943
|
|
else3942:
|
|
%t94 = load %S.ast.Type, ptr %a2
|
|
%t95 = call i1 @finch.gen.isInt(%S.ast.Type %t94)
|
|
br i1 %t95, label %then3944, label %else3945
|
|
then3944:
|
|
store { ptr, i64, i64 } { ptr @.str.2421, i64 15, i64 0 }, ptr %a96
|
|
%t97 = load %S.ast.Type, ptr %a2
|
|
%t98 = call i1 @finch.gen.isSigned(%S.ast.Type %t97)
|
|
br i1 %t98, label %then3947, label %endif3949
|
|
then3947:
|
|
store { ptr, i64, i64 } { ptr @.str.2422, i64 13, i64 0 }, ptr %a96
|
|
br label %endif3949
|
|
endif3949:
|
|
%t99 = load ptr, ptr %a1
|
|
%t100 = load { ptr, i64, i64 }, ptr %a8
|
|
%t101 = load %S.ast.Type, ptr %a2
|
|
%t102 = call i64 @finch.gen.bitsOf(%S.ast.Type %t101)
|
|
%t103 = load { ptr, i64, i64 }, ptr %a96
|
|
%t104 = call i64 @finch.gen.basicType(ptr %t99, { ptr, i64, i64 } %t100, i64 %t102, { ptr, i64, i64 } %t103)
|
|
store i64 %t104, ptr %a48
|
|
br label %endif3946
|
|
else3945:
|
|
%t105 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t105, ptr %a106
|
|
store { ptr, i64, i64 } { ptr @.str.2423, i64 4, i64 0 }, ptr %a107
|
|
%t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107)
|
|
%t109 = icmp ne i32 %t108, 0
|
|
br i1 %t109, label %then3950, label %else3951
|
|
then3950:
|
|
%t110 = load ptr, ptr %a1
|
|
%t111 = icmp eq ptr %t110, null
|
|
br i1 %t111, label %panic3953, label %ok3954
|
|
panic3953:
|
|
call void @finch_panic(ptr @.str.2424, i64 1694, ptr @.str.2425)
|
|
unreachable
|
|
ok3954:
|
|
%t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 20
|
|
%t113 = load ptr, ptr %a1
|
|
%t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t115 = load { ptr, i64, i64 }, ptr %t114
|
|
%t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t117 = load { ptr, i64, i64 }, ptr %t116
|
|
%t118 = call i64 @finch.gen.findEnum(ptr %t113, { ptr, i64, i64 } %t115, { ptr, i64, i64 } %t117)
|
|
%t119 = load { ptr, i64, i64 }, ptr %t112
|
|
%t120 = extractvalue { ptr, i64, i64 } %t119, 1
|
|
%t121 = icmp uge i64 %t118, %t120
|
|
br i1 %t121, label %range3955, label %inrange3956
|
|
range3955:
|
|
call void @finch_panic_index(ptr @.str.2426, i64 1694, i64 %t118, i64 %t120)
|
|
unreachable
|
|
inrange3956:
|
|
%t122 = extractvalue { ptr, i64, i64 } %t119, 0
|
|
%t123 = getelementptr inbounds %S.gen.EnumDef, ptr %t122, i64 %t118
|
|
%t124 = load %S.gen.EnumDef, ptr %t123
|
|
store %S.gen.EnumDef %t124, ptr %a125
|
|
call void @finch.copy.S_gen_EnumDef(ptr %a126, ptr %a125)
|
|
%t127 = load %S.gen.EnumDef, ptr %a126
|
|
store %S.gen.EnumDef %t127, ptr %a128
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a129
|
|
%t130 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 2
|
|
%t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i32 0, i32 1
|
|
%t132 = load i64, ptr %t131
|
|
store i64 0, ptr %a133
|
|
br label %for.cond3957
|
|
for.cond3957:
|
|
%t134 = load i64, ptr %a133
|
|
%t135 = icmp slt i64 %t134, %t132
|
|
br i1 %t135, label %for.body3958, label %for.end3960
|
|
for.body3958:
|
|
%t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1
|
|
%t137 = load ptr, ptr %a1
|
|
%t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 2
|
|
%t139 = load i64, ptr %a133
|
|
%t140 = load { ptr, i64, i64 }, ptr %t138
|
|
%t141 = extractvalue { ptr, i64, i64 } %t140, 1
|
|
%t142 = icmp uge i64 %t139, %t141
|
|
br i1 %t142, label %range3961, label %inrange3962
|
|
range3961:
|
|
call void @finch_panic_index(ptr @.str.2428, i64 1697, i64 %t139, i64 %t141)
|
|
unreachable
|
|
inrange3962:
|
|
%t143 = extractvalue { ptr, i64, i64 } %t140, 0
|
|
%t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i64 %t139
|
|
%t145 = load { ptr, i64, i64 }, ptr %t144
|
|
store { ptr, i64, i64 } { ptr @.str.2427, i64 21, i64 0 }, ptr %a147
|
|
store { ptr, i64, i64 } %t145, ptr %a148
|
|
call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148)
|
|
%t149 = load { ptr, i64, i64 }, ptr %a146
|
|
store { ptr, i64, i64 } %t149, ptr %a151
|
|
store { ptr, i64, i64 } { ptr @.str.2429, i64 10, i64 0 }, ptr %a152
|
|
call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152)
|
|
%t153 = load { ptr, i64, i64 }, ptr %a150
|
|
%t154 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 3
|
|
%t155 = load i64, ptr %a133
|
|
%t156 = load { ptr, i64, i64 }, ptr %t154
|
|
%t157 = extractvalue { ptr, i64, i64 } %t156, 1
|
|
%t158 = icmp uge i64 %t155, %t157
|
|
br i1 %t158, label %range3963, label %inrange3964
|
|
range3963:
|
|
call void @finch_panic_index(ptr @.str.2430, i64 1697, i64 %t155, i64 %t157)
|
|
unreachable
|
|
inrange3964:
|
|
%t159 = extractvalue { ptr, i64, i64 } %t156, 0
|
|
%t160 = getelementptr inbounds i64, ptr %t159, i64 %t155
|
|
%t161 = load i64, ptr %t160
|
|
call void @finch_str_from_int(ptr %a162, i64 %t161)
|
|
%t163 = load { ptr, i64, i64 }, ptr %a162
|
|
store { ptr, i64, i64 } %t153, ptr %a165
|
|
store { ptr, i64, i64 } %t163, ptr %a166
|
|
call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166)
|
|
%t167 = load { ptr, i64, i64 }, ptr %a164
|
|
store { ptr, i64, i64 } %t167, ptr %a169
|
|
store { ptr, i64, i64 } { ptr @.str.2431, i64 1, i64 0 }, ptr %a170
|
|
call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170)
|
|
%t171 = load { ptr, i64, i64 }, ptr %a168
|
|
%t172 = call i64 @finch.gen.md(ptr %t137, { ptr, i64, i64 } %t171)
|
|
%t173 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t172)
|
|
%t174 = load i64, ptr %t136
|
|
%t175 = add i64 %t174, 1
|
|
call void @finch_arr_reserve(ptr %a129, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t176 = load ptr, ptr %a129
|
|
%t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174
|
|
store { ptr, i64, i64 } %t173, ptr %t177
|
|
store i64 %t175, ptr %t136
|
|
br label %for.step3959
|
|
for.step3959:
|
|
%t178 = load i64, ptr %a133
|
|
%t179 = add i64 %t178, 1
|
|
store i64 %t179, ptr %a133
|
|
br label %for.cond3957
|
|
for.end3960:
|
|
%t180 = load ptr, ptr %a1
|
|
%t181 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 1
|
|
%t182 = load { ptr, i64, i64 }, ptr %t181
|
|
store { ptr, i64, i64 } { ptr @.str.2432, i64 54, i64 0 }, ptr %a184
|
|
store { ptr, i64, i64 } %t182, ptr %a185
|
|
call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185)
|
|
%t186 = load { ptr, i64, i64 }, ptr %a183
|
|
store { ptr, i64, i64 } %t186, ptr %a188
|
|
store { ptr, i64, i64 } { ptr @.str.2433, i64 10, i64 0 }, ptr %a189
|
|
call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189)
|
|
%t190 = load { ptr, i64, i64 }, ptr %a187
|
|
%t191 = load i64, ptr %a58
|
|
call void @finch_str_from_int(ptr %a192, i64 %t191)
|
|
%t193 = load { ptr, i64, i64 }, ptr %a192
|
|
store { ptr, i64, i64 } %t190, ptr %a195
|
|
store { ptr, i64, i64 } %t193, ptr %a196
|
|
call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196)
|
|
%t197 = load { ptr, i64, i64 }, ptr %a194
|
|
store { ptr, i64, i64 } %t197, ptr %a199
|
|
store { ptr, i64, i64 } { ptr @.str.2434, i64 24, i64 0 }, ptr %a200
|
|
call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200)
|
|
%t201 = load { ptr, i64, i64 }, ptr %a198
|
|
%t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2435, i64 2, i64 0 }, ptr %a203
|
|
call void @finch_str_join(ptr %a204, ptr %a129, ptr %a203)
|
|
%t205 = load { ptr, i64, i64 }, ptr %a204
|
|
store { ptr, i64, i64 } %t201, ptr %a207
|
|
store { ptr, i64, i64 } %t205, ptr %a208
|
|
call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208)
|
|
%t209 = load { ptr, i64, i64 }, ptr %a206
|
|
store { ptr, i64, i64 } %t209, ptr %a211
|
|
store { ptr, i64, i64 } { ptr @.str.2436, i64 2, i64 0 }, ptr %a212
|
|
call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212)
|
|
%t213 = load { ptr, i64, i64 }, ptr %a210
|
|
%t214 = call i64 @finch.gen.md(ptr %t180, { ptr, i64, i64 } %t213)
|
|
store i64 %t214, ptr %a48
|
|
br label %endif3952
|
|
else3951:
|
|
%t215 = load ptr, ptr %a1
|
|
%t216 = call i64 @finch.gen.md(ptr %t215, { ptr, i64, i64 } { ptr @.str.2437, i64 0, i64 0 })
|
|
store i64 %t216, ptr %a48
|
|
%t217 = load i64, ptr %a48
|
|
%t218 = load ptr, ptr %a1
|
|
%t219 = icmp eq ptr %t218, null
|
|
br i1 %t219, label %panic3965, label %ok3966
|
|
panic3965:
|
|
call void @finch_panic(ptr @.str.2438, i64 1703, ptr @.str.2439)
|
|
unreachable
|
|
ok3966:
|
|
%t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 30
|
|
%t221 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t221, ptr %a222
|
|
store i32 0, ptr %a223
|
|
%t224 = call i64 @finch_map_slot(ptr %t220, ptr %a222, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a223)
|
|
%t225 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t220, i32 0, i32 0
|
|
%t226 = load ptr, ptr %t225
|
|
%t227 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t226, i64 %t224
|
|
%t228 = load i32, ptr %a223
|
|
%t229 = icmp ne i32 %t228, 0
|
|
br i1 %t229, label %map.new3967, label %map.have3968
|
|
map.new3967:
|
|
%t230 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t227, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t230, ptr %a222)
|
|
%t231 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t227, i32 0, i32 2
|
|
store i64 0, ptr %t231
|
|
br label %map.have3968
|
|
map.have3968:
|
|
%t232 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t227, i32 0, i32 2
|
|
store i64 %t217, ptr %t232
|
|
%t233 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t233, ptr %a234
|
|
store { ptr, i64, i64 } { ptr @.str.2440, i64 3, i64 0 }, ptr %a235
|
|
%t236 = call i32 @finch_str_eq(ptr %a234, ptr %a235)
|
|
%t237 = icmp ne i32 %t236, 0
|
|
br i1 %t237, label %then3969, label %else3970
|
|
then3969:
|
|
store i64 -1, ptr %a238
|
|
%t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %t239, i32 0, i32 1
|
|
%t241 = load i64, ptr %t240
|
|
%t242 = icmp sgt i64 %t241, 0
|
|
br i1 %t242, label %then3972, label %endif3974
|
|
then3972:
|
|
%t243 = load ptr, ptr %a1
|
|
%t244 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t245 = load { ptr, i64, i64 }, ptr %t244
|
|
%t246 = extractvalue { ptr, i64, i64 } %t245, 1
|
|
%t247 = icmp uge i64 0, %t246
|
|
br i1 %t247, label %range3975, label %inrange3976
|
|
range3975:
|
|
call void @finch_panic_index(ptr @.str.2441, i64 1707, i64 0, i64 %t246)
|
|
unreachable
|
|
inrange3976:
|
|
%t248 = extractvalue { ptr, i64, i64 } %t245, 0
|
|
%t249 = getelementptr inbounds %S.ast.Type, ptr %t248, i64 0
|
|
%t250 = load %S.ast.Type, ptr %t249
|
|
%t251 = call i64 @finch.gen.diType(ptr %t243, %S.ast.Type %t250)
|
|
store i64 %t251, ptr %a238
|
|
br label %endif3974
|
|
endif3974:
|
|
%t252 = load i64, ptr %a238
|
|
%t253 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t252)
|
|
store { ptr, i64, i64 } { ptr @.str.2442, i64 51, i64 0 }, ptr %a255
|
|
store { ptr, i64, i64 } %t253, ptr %a256
|
|
call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256)
|
|
%t257 = load { ptr, i64, i64 }, ptr %a254
|
|
store { ptr, i64, i64 } %t257, ptr %a259
|
|
store { ptr, i64, i64 } { ptr @.str.2443, i64 11, i64 0 }, ptr %a260
|
|
call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260)
|
|
%t261 = load { ptr, i64, i64 }, ptr %a258
|
|
%t262 = load ptr, ptr %a1
|
|
%t263 = icmp eq ptr %t262, null
|
|
br i1 %t263, label %panic3977, label %ok3978
|
|
panic3977:
|
|
call void @finch_panic(ptr @.str.2444, i64 1709, ptr @.str.2445)
|
|
unreachable
|
|
ok3978:
|
|
%t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 29
|
|
%t265 = load i64, ptr %a48
|
|
%t266 = load { ptr, i64, i64 }, ptr %t264
|
|
%t267 = extractvalue { ptr, i64, i64 } %t266, 1
|
|
%t268 = icmp uge i64 %t265, %t267
|
|
br i1 %t268, label %range3979, label %inrange3980
|
|
range3979:
|
|
call void @finch_panic_index(ptr @.str.2446, i64 1709, i64 %t265, i64 %t267)
|
|
unreachable
|
|
inrange3980:
|
|
%t269 = extractvalue { ptr, i64, i64 } %t266, 0
|
|
%t270 = getelementptr inbounds { ptr, i64, i64 }, ptr %t269, i64 %t265
|
|
store { ptr, i64, i64 } %t261, ptr %t270
|
|
br label %endif3971
|
|
else3970:
|
|
%t271 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t271, ptr %a272
|
|
store { ptr, i64, i64 } { ptr @.str.2447, i64 5, i64 0 }, ptr %a273
|
|
%t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273)
|
|
%t275 = icmp ne i32 %t274, 0
|
|
br i1 %t275, label %then3981, label %else3982
|
|
then3981:
|
|
%t276 = load ptr, ptr %a1
|
|
%t277 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t278 = load { ptr, i64, i64 }, ptr %t277
|
|
%t279 = extractvalue { ptr, i64, i64 } %t278, 1
|
|
%t280 = icmp uge i64 0, %t279
|
|
br i1 %t280, label %range3984, label %inrange3985
|
|
range3984:
|
|
call void @finch_panic_index(ptr @.str.2448, i64 1711, i64 0, i64 %t279)
|
|
unreachable
|
|
inrange3985:
|
|
%t281 = extractvalue { ptr, i64, i64 } %t278, 0
|
|
%t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 0
|
|
%t283 = load %S.ast.Type, ptr %t282
|
|
%t284 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t276, %S.ast.Type %t283)
|
|
store %S.gen.SizeAlign %t284, ptr %a285
|
|
%t286 = load ptr, ptr %a1
|
|
%t287 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4
|
|
%t288 = load i64, ptr %t287
|
|
call void @finch_str_from_int(ptr %a289, i64 %t288)
|
|
%t290 = load { ptr, i64, i64 }, ptr %a289
|
|
store { ptr, i64, i64 } { ptr @.str.2449, i64 19, i64 0 }, ptr %a292
|
|
store { ptr, i64, i64 } %t290, ptr %a293
|
|
call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293)
|
|
%t294 = load { ptr, i64, i64 }, ptr %a291
|
|
store { ptr, i64, i64 } %t294, ptr %a296
|
|
store { ptr, i64, i64 } { ptr @.str.2450, i64 1, i64 0 }, ptr %a297
|
|
call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297)
|
|
%t298 = load { ptr, i64, i64 }, ptr %a295
|
|
%t299 = call i64 @finch.gen.md(ptr %t286, { ptr, i64, i64 } %t298)
|
|
store i64 %t299, ptr %a300
|
|
%t301 = load ptr, ptr %a1
|
|
%t302 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t303 = load { ptr, i64, i64 }, ptr %t302
|
|
%t304 = extractvalue { ptr, i64, i64 } %t303, 1
|
|
%t305 = icmp uge i64 0, %t304
|
|
br i1 %t305, label %range3986, label %inrange3987
|
|
range3986:
|
|
call void @finch_panic_index(ptr @.str.2452, i64 1713, i64 0, i64 %t304)
|
|
unreachable
|
|
inrange3987:
|
|
%t306 = extractvalue { ptr, i64, i64 } %t303, 0
|
|
%t307 = getelementptr inbounds %S.ast.Type, ptr %t306, i64 0
|
|
%t308 = load %S.ast.Type, ptr %t307
|
|
%t309 = call i64 @finch.gen.diType(ptr %t301, %S.ast.Type %t308)
|
|
%t310 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t309)
|
|
store { ptr, i64, i64 } { ptr @.str.2451, i64 51, i64 0 }, ptr %a312
|
|
store { ptr, i64, i64 } %t310, ptr %a313
|
|
call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313)
|
|
%t314 = load { ptr, i64, i64 }, ptr %a311
|
|
store { ptr, i64, i64 } %t314, ptr %a316
|
|
store { ptr, i64, i64 } { ptr @.str.2453, i64 8, i64 0 }, ptr %a317
|
|
call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317)
|
|
%t318 = load { ptr, i64, i64 }, ptr %a315
|
|
%t319 = getelementptr inbounds %S.gen.SizeAlign, ptr %a285, i32 0, i32 0
|
|
%t320 = load i64, ptr %t319
|
|
%t321 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4
|
|
%t322 = load i64, ptr %t321
|
|
%t323 = mul i64 %t320, %t322
|
|
%t324 = mul i64 %t323, 8
|
|
call void @finch_str_from_int(ptr %a325, i64 %t324)
|
|
%t326 = load { ptr, i64, i64 }, ptr %a325
|
|
store { ptr, i64, i64 } %t318, ptr %a328
|
|
store { ptr, i64, i64 } %t326, ptr %a329
|
|
call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329)
|
|
%t330 = load { ptr, i64, i64 }, ptr %a327
|
|
store { ptr, i64, i64 } %t330, ptr %a332
|
|
store { ptr, i64, i64 } { ptr @.str.2454, i64 15, i64 0 }, ptr %a333
|
|
call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333)
|
|
%t334 = load { ptr, i64, i64 }, ptr %a331
|
|
%t335 = load i64, ptr %a300
|
|
call void @finch_str_from_int(ptr %a336, i64 %t335)
|
|
%t337 = load { ptr, i64, i64 }, ptr %a336
|
|
store { ptr, i64, i64 } %t334, ptr %a339
|
|
store { ptr, i64, i64 } %t337, ptr %a340
|
|
call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340)
|
|
%t341 = load { ptr, i64, i64 }, ptr %a338
|
|
store { ptr, i64, i64 } %t341, ptr %a343
|
|
store { ptr, i64, i64 } { ptr @.str.2455, i64 2, i64 0 }, ptr %a344
|
|
call void @finch_str_concat(ptr %a342, ptr %a343, ptr %a344)
|
|
%t345 = load { ptr, i64, i64 }, ptr %a342
|
|
%t346 = load ptr, ptr %a1
|
|
%t347 = icmp eq ptr %t346, null
|
|
br i1 %t347, label %panic3988, label %ok3989
|
|
panic3988:
|
|
call void @finch_panic(ptr @.str.2456, i64 1713, ptr @.str.2457)
|
|
unreachable
|
|
ok3989:
|
|
%t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 29
|
|
%t349 = load i64, ptr %a48
|
|
%t350 = load { ptr, i64, i64 }, ptr %t348
|
|
%t351 = extractvalue { ptr, i64, i64 } %t350, 1
|
|
%t352 = icmp uge i64 %t349, %t351
|
|
br i1 %t352, label %range3990, label %inrange3991
|
|
range3990:
|
|
call void @finch_panic_index(ptr @.str.2458, i64 1713, i64 %t349, i64 %t351)
|
|
unreachable
|
|
inrange3991:
|
|
%t353 = extractvalue { ptr, i64, i64 } %t350, 0
|
|
%t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349
|
|
store { ptr, i64, i64 } %t345, ptr %t354
|
|
br label %endif3983
|
|
else3982:
|
|
%t355 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t355, ptr %a356
|
|
store { ptr, i64, i64 } { ptr @.str.2459, i64 3, i64 0 }, ptr %a357
|
|
%t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357)
|
|
%t359 = icmp ne i32 %t358, 0
|
|
br label %logic.from3992
|
|
logic.from3992:
|
|
br i1 %t359, label %logic.end3994, label %logic.rhs3993
|
|
logic.rhs3993:
|
|
%t360 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t360, ptr %a361
|
|
store { ptr, i64, i64 } { ptr @.str.2460, i64 5, i64 0 }, ptr %a362
|
|
%t363 = call i32 @finch_str_eq(ptr %a361, ptr %a362)
|
|
%t364 = icmp ne i32 %t363, 0
|
|
br label %logic.rend3995
|
|
logic.rend3995:
|
|
br label %logic.end3994
|
|
logic.end3994:
|
|
%t365 = phi i1 [ true, %logic.from3992 ], [ %t364, %logic.rend3995 ]
|
|
br i1 %t365, label %then3996, label %else3997
|
|
then3996:
|
|
%t366 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2461, i64 4, i64 0 })
|
|
store %S.ast.Type %t366, ptr %a367
|
|
%t368 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t368, ptr %a369
|
|
store { ptr, i64, i64 } { ptr @.str.2462, i64 5, i64 0 }, ptr %a370
|
|
%t371 = call i32 @finch_str_eq(ptr %a369, ptr %a370)
|
|
%t372 = icmp ne i32 %t371, 0
|
|
br i1 %t372, label %then3999, label %endif4001
|
|
then3999:
|
|
%t373 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t374 = load { ptr, i64, i64 }, ptr %t373
|
|
%t375 = extractvalue { ptr, i64, i64 } %t374, 1
|
|
%t376 = icmp uge i64 0, %t375
|
|
br i1 %t376, label %range4002, label %inrange4003
|
|
range4002:
|
|
call void @finch_panic_index(ptr @.str.2463, i64 1717, i64 0, i64 %t375)
|
|
unreachable
|
|
inrange4003:
|
|
%t377 = extractvalue { ptr, i64, i64 } %t374, 0
|
|
%t378 = getelementptr inbounds %S.ast.Type, ptr %t377, i64 0
|
|
%t379 = load %S.ast.Type, ptr %t378
|
|
store %S.ast.Type %t379, ptr %a380
|
|
call void @finch.copy.S_ast_Type(ptr %a381, ptr %a380)
|
|
%t382 = load %S.ast.Type, ptr %a381
|
|
store %S.ast.Type %t382, ptr %a367
|
|
br label %endif4001
|
|
endif4001:
|
|
%t383 = load ptr, ptr %a1
|
|
%t384 = load ptr, ptr %a1
|
|
%t385 = load %S.ast.Type, ptr %a367
|
|
%t386 = call i64 @finch.gen.diType(ptr %t384, %S.ast.Type %t385)
|
|
%t387 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t386)
|
|
store { ptr, i64, i64 } { ptr @.str.2464, i64 51, i64 0 }, ptr %a389
|
|
store { ptr, i64, i64 } %t387, ptr %a390
|
|
call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390)
|
|
%t391 = load { ptr, i64, i64 }, ptr %a388
|
|
store { ptr, i64, i64 } %t391, ptr %a393
|
|
store { ptr, i64, i64 } { ptr @.str.2465, i64 11, i64 0 }, ptr %a394
|
|
call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394)
|
|
%t395 = load { ptr, i64, i64 }, ptr %a392
|
|
%t396 = call i64 @finch.gen.md(ptr %t383, { ptr, i64, i64 } %t395)
|
|
store i64 %t396, ptr %a397
|
|
%t398 = load ptr, ptr %a1
|
|
%t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2466, i64 3, i64 0 })
|
|
%t400 = call i64 @finch.gen.diType(ptr %t398, %S.ast.Type %t399)
|
|
store i64 %t400, ptr %a401
|
|
%t402 = load ptr, ptr %a1
|
|
%t403 = load i64, ptr %a48
|
|
%t404 = load i64, ptr %a58
|
|
%t405 = load i64, ptr %a397
|
|
%t406 = call i64 @finch.gen.dbgMember(ptr %t402, { ptr, i64, i64 } { ptr @.str.2467, i64 3, i64 0 }, i64 %t403, i64 %t404, i64 0, i64 %t405, i64 64, i64 0)
|
|
store i64 %t406, ptr %a407
|
|
%t408 = load ptr, ptr %a1
|
|
%t409 = load i64, ptr %a48
|
|
%t410 = load i64, ptr %a58
|
|
%t411 = load i64, ptr %a401
|
|
%t412 = call i64 @finch.gen.dbgMember(ptr %t408, { ptr, i64, i64 } { ptr @.str.2468, i64 3, i64 0 }, i64 %t409, i64 %t410, i64 0, i64 %t411, i64 64, i64 64)
|
|
store i64 %t412, ptr %a413
|
|
%t414 = load ptr, ptr %a1
|
|
%t415 = load i64, ptr %a48
|
|
%t416 = load i64, ptr %a58
|
|
%t417 = load i64, ptr %a401
|
|
%t418 = call i64 @finch.gen.dbgMember(ptr %t414, { ptr, i64, i64 } { ptr @.str.2469, i64 3, i64 0 }, i64 %t415, i64 %t416, i64 0, i64 %t417, i64 64, i64 128)
|
|
store i64 %t418, ptr %a419
|
|
%t420 = load %S.ast.Type, ptr %a2
|
|
%t421 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t420)
|
|
store { ptr, i64, i64 } { ptr @.str.2470, i64 52, i64 0 }, ptr %a423
|
|
store { ptr, i64, i64 } %t421, ptr %a424
|
|
call void @finch_str_concat(ptr %a422, ptr %a423, ptr %a424)
|
|
%t425 = load { ptr, i64, i64 }, ptr %a422
|
|
store { ptr, i64, i64 } %t425, ptr %a427
|
|
store { ptr, i64, i64 } { ptr @.str.2471, i64 10, i64 0 }, ptr %a428
|
|
call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428)
|
|
%t429 = load { ptr, i64, i64 }, ptr %a426
|
|
%t430 = load i64, ptr %a58
|
|
call void @finch_str_from_int(ptr %a431, i64 %t430)
|
|
%t432 = load { ptr, i64, i64 }, ptr %a431
|
|
store { ptr, i64, i64 } %t429, ptr %a434
|
|
store { ptr, i64, i64 } %t432, ptr %a435
|
|
call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435)
|
|
%t436 = load { ptr, i64, i64 }, ptr %a433
|
|
store { ptr, i64, i64 } %t436, ptr %a438
|
|
store { ptr, i64, i64 } { ptr @.str.2472, i64 37, i64 0 }, ptr %a439
|
|
call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439)
|
|
%t440 = load { ptr, i64, i64 }, ptr %a437
|
|
%t441 = load i64, ptr %a407
|
|
call void @finch_str_from_int(ptr %a442, i64 %t441)
|
|
%t443 = load { ptr, i64, i64 }, ptr %a442
|
|
store { ptr, i64, i64 } %t440, ptr %a445
|
|
store { ptr, i64, i64 } %t443, ptr %a446
|
|
call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446)
|
|
%t447 = load { ptr, i64, i64 }, ptr %a444
|
|
store { ptr, i64, i64 } %t447, ptr %a449
|
|
store { ptr, i64, i64 } { ptr @.str.2473, i64 3, i64 0 }, ptr %a450
|
|
call void @finch_str_concat(ptr %a448, ptr %a449, ptr %a450)
|
|
%t451 = load { ptr, i64, i64 }, ptr %a448
|
|
%t452 = load i64, ptr %a413
|
|
call void @finch_str_from_int(ptr %a453, i64 %t452)
|
|
%t454 = load { ptr, i64, i64 }, ptr %a453
|
|
store { ptr, i64, i64 } %t451, ptr %a456
|
|
store { ptr, i64, i64 } %t454, ptr %a457
|
|
call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457)
|
|
%t458 = load { ptr, i64, i64 }, ptr %a455
|
|
store { ptr, i64, i64 } %t458, ptr %a460
|
|
store { ptr, i64, i64 } { ptr @.str.2474, i64 3, i64 0 }, ptr %a461
|
|
call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461)
|
|
%t462 = load { ptr, i64, i64 }, ptr %a459
|
|
%t463 = load i64, ptr %a419
|
|
call void @finch_str_from_int(ptr %a464, i64 %t463)
|
|
%t465 = load { ptr, i64, i64 }, ptr %a464
|
|
store { ptr, i64, i64 } %t462, ptr %a467
|
|
store { ptr, i64, i64 } %t465, ptr %a468
|
|
call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468)
|
|
%t469 = load { ptr, i64, i64 }, ptr %a466
|
|
store { ptr, i64, i64 } %t469, ptr %a471
|
|
store { ptr, i64, i64 } { ptr @.str.2475, i64 2, i64 0 }, ptr %a472
|
|
call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472)
|
|
%t473 = load { ptr, i64, i64 }, ptr %a470
|
|
%t474 = load ptr, ptr %a1
|
|
%t475 = icmp eq ptr %t474, null
|
|
br i1 %t475, label %panic4004, label %ok4005
|
|
panic4004:
|
|
call void @finch_panic(ptr @.str.2476, i64 1724, ptr @.str.2477)
|
|
unreachable
|
|
ok4005:
|
|
%t476 = getelementptr inbounds %S.gen.Gen, ptr %t474, i32 0, i32 29
|
|
%t477 = load i64, ptr %a48
|
|
%t478 = load { ptr, i64, i64 }, ptr %t476
|
|
%t479 = extractvalue { ptr, i64, i64 } %t478, 1
|
|
%t480 = icmp uge i64 %t477, %t479
|
|
br i1 %t480, label %range4006, label %inrange4007
|
|
range4006:
|
|
call void @finch_panic_index(ptr @.str.2478, i64 1724, i64 %t477, i64 %t479)
|
|
unreachable
|
|
inrange4007:
|
|
%t481 = extractvalue { ptr, i64, i64 } %t478, 0
|
|
%t482 = getelementptr inbounds { ptr, i64, i64 }, ptr %t481, i64 %t477
|
|
store { ptr, i64, i64 } %t473, ptr %t482
|
|
br label %endif3998
|
|
else3997:
|
|
%t483 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t483, ptr %a484
|
|
store { ptr, i64, i64 } { ptr @.str.2479, i64 3, i64 0 }, ptr %a485
|
|
%t486 = call i32 @finch_str_eq(ptr %a484, ptr %a485)
|
|
%t487 = icmp ne i32 %t486, 0
|
|
br i1 %t487, label %then4008, label %else4009
|
|
then4008:
|
|
%t488 = load ptr, ptr %a1
|
|
%t489 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2480, i64 3, i64 0 })
|
|
%t490 = call i64 @finch.gen.diType(ptr %t488, %S.ast.Type %t489)
|
|
store i64 %t490, ptr %a491
|
|
%t492 = load ptr, ptr %a1
|
|
%t493 = call i64 @finch.gen.md(ptr %t492, { ptr, i64, i64 } { ptr @.str.2481, i64 66, i64 0 })
|
|
store i64 %t493, ptr %a494
|
|
%t495 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t496 = call ptr @finch_alloc(i64 %t495)
|
|
%t497 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.2482, i64 7, i64 0 }, ptr %t497
|
|
%t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.2483, i64 3, i64 0 }, ptr %t498
|
|
%t499 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.2484, i64 4, i64 0 }, ptr %t499
|
|
%t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.2485, i64 3, i64 0 }, ptr %t500
|
|
%t501 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.2486, i64 5, i64 0 }, ptr %t501
|
|
%t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.2487, i64 4, i64 0 }, ptr %t502
|
|
%t503 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.2488, i64 4, i64 0 }, ptr %t503
|
|
%t504 = insertvalue { ptr, i64, i64 } undef, ptr %t496, 0
|
|
%t505 = insertvalue { ptr, i64, i64 } %t504, i64 7, 1
|
|
%t506 = insertvalue { ptr, i64, i64 } %t505, i64 7, 2
|
|
store { ptr, i64, i64 } %t506, ptr %a507
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a508
|
|
store i64 0, ptr %a509
|
|
br label %for.cond4011
|
|
for.cond4011:
|
|
%t510 = load i64, ptr %a509
|
|
%t511 = icmp slt i64 %t510, 7
|
|
br i1 %t511, label %for.body4012, label %for.end4014
|
|
for.body4012:
|
|
%t512 = load i64, ptr %a491
|
|
store i64 %t512, ptr %a513
|
|
%t514 = load i64, ptr %a509
|
|
%t515 = icmp eq i64 %t514, 0
|
|
br label %logic.from4015
|
|
logic.from4015:
|
|
br i1 %t515, label %logic.end4017, label %logic.rhs4016
|
|
logic.rhs4016:
|
|
%t516 = load i64, ptr %a509
|
|
%t517 = icmp eq i64 %t516, 4
|
|
br label %logic.rend4018
|
|
logic.rend4018:
|
|
br label %logic.end4017
|
|
logic.end4017:
|
|
%t518 = phi i1 [ true, %logic.from4015 ], [ %t517, %logic.rend4018 ]
|
|
br i1 %t518, label %then4019, label %endif4021
|
|
then4019:
|
|
%t519 = load i64, ptr %a494
|
|
store i64 %t519, ptr %a513
|
|
br label %endif4021
|
|
endif4021:
|
|
%t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %a508, i32 0, i32 1
|
|
%t521 = load ptr, ptr %a1
|
|
%t522 = load i64, ptr %a509
|
|
%t523 = load { ptr, i64, i64 }, ptr %a507
|
|
%t524 = extractvalue { ptr, i64, i64 } %t523, 1
|
|
%t525 = icmp uge i64 %t522, %t524
|
|
br i1 %t525, label %range4022, label %inrange4023
|
|
range4022:
|
|
call void @finch_panic_index(ptr @.str.2490, i64 1735, i64 %t522, i64 %t524)
|
|
unreachable
|
|
inrange4023:
|
|
%t526 = extractvalue { ptr, i64, i64 } %t523, 0
|
|
%t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t526, i64 %t522
|
|
%t528 = load { ptr, i64, i64 }, ptr %t527
|
|
%t529 = load i64, ptr %a48
|
|
%t530 = load i64, ptr %a58
|
|
%t531 = load i64, ptr %a513
|
|
%t532 = load i64, ptr %a509
|
|
%t533 = mul i64 64, %t532
|
|
%t534 = call i64 @finch.gen.dbgMember(ptr %t521, { ptr, i64, i64 } %t528, i64 %t529, i64 %t530, i64 0, i64 %t531, i64 64, i64 %t533)
|
|
call void @finch_str_from_int(ptr %a535, i64 %t534)
|
|
%t536 = load { ptr, i64, i64 }, ptr %a535
|
|
store { ptr, i64, i64 } { ptr @.str.2489, i64 1, i64 0 }, ptr %a538
|
|
store { ptr, i64, i64 } %t536, ptr %a539
|
|
call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539)
|
|
%t540 = load { ptr, i64, i64 }, ptr %a537
|
|
%t541 = load i64, ptr %t520
|
|
%t542 = add i64 %t541, 1
|
|
call void @finch_arr_reserve(ptr %a508, i64 %t542, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t543 = load ptr, ptr %a508
|
|
%t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i64 %t541
|
|
store { ptr, i64, i64 } %t540, ptr %t544
|
|
store i64 %t542, ptr %t520
|
|
br label %for.step4013
|
|
for.step4013:
|
|
%t545 = load i64, ptr %a509
|
|
%t546 = add i64 %t545, 1
|
|
store i64 %t546, ptr %a509
|
|
br label %for.cond4011
|
|
for.end4014:
|
|
%t547 = load %S.ast.Type, ptr %a2
|
|
%t548 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t547)
|
|
store { ptr, i64, i64 } { ptr @.str.2491, i64 52, i64 0 }, ptr %a550
|
|
store { ptr, i64, i64 } %t548, ptr %a551
|
|
call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551)
|
|
%t552 = load { ptr, i64, i64 }, ptr %a549
|
|
store { ptr, i64, i64 } %t552, ptr %a554
|
|
store { ptr, i64, i64 } { ptr @.str.2492, i64 10, i64 0 }, ptr %a555
|
|
call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555)
|
|
%t556 = load { ptr, i64, i64 }, ptr %a553
|
|
%t557 = load i64, ptr %a58
|
|
call void @finch_str_from_int(ptr %a558, i64 %t557)
|
|
%t559 = load { ptr, i64, i64 }, ptr %a558
|
|
store { ptr, i64, i64 } %t556, ptr %a561
|
|
store { ptr, i64, i64 } %t559, ptr %a562
|
|
call void @finch_str_concat(ptr %a560, ptr %a561, ptr %a562)
|
|
%t563 = load { ptr, i64, i64 }, ptr %a560
|
|
store { ptr, i64, i64 } %t563, ptr %a565
|
|
store { ptr, i64, i64 } { ptr @.str.2493, i64 36, i64 0 }, ptr %a566
|
|
call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566)
|
|
%t567 = load { ptr, i64, i64 }, ptr %a564
|
|
%t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a508, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2494, i64 2, i64 0 }, ptr %a569
|
|
call void @finch_str_join(ptr %a570, ptr %a508, ptr %a569)
|
|
%t571 = load { ptr, i64, i64 }, ptr %a570
|
|
store { ptr, i64, i64 } %t567, ptr %a573
|
|
store { ptr, i64, i64 } %t571, ptr %a574
|
|
call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574)
|
|
%t575 = load { ptr, i64, i64 }, ptr %a572
|
|
store { ptr, i64, i64 } %t575, ptr %a577
|
|
store { ptr, i64, i64 } { ptr @.str.2495, i64 2, i64 0 }, ptr %a578
|
|
call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578)
|
|
%t579 = load { ptr, i64, i64 }, ptr %a576
|
|
%t580 = load ptr, ptr %a1
|
|
%t581 = icmp eq ptr %t580, null
|
|
br i1 %t581, label %panic4024, label %ok4025
|
|
panic4024:
|
|
call void @finch_panic(ptr @.str.2496, i64 1737, ptr @.str.2497)
|
|
unreachable
|
|
ok4025:
|
|
%t582 = getelementptr inbounds %S.gen.Gen, ptr %t580, i32 0, i32 29
|
|
%t583 = load i64, ptr %a48
|
|
%t584 = load { ptr, i64, i64 }, ptr %t582
|
|
%t585 = extractvalue { ptr, i64, i64 } %t584, 1
|
|
%t586 = icmp uge i64 %t583, %t585
|
|
br i1 %t586, label %range4026, label %inrange4027
|
|
range4026:
|
|
call void @finch_panic_index(ptr @.str.2498, i64 1737, i64 %t583, i64 %t585)
|
|
unreachable
|
|
inrange4027:
|
|
%t587 = extractvalue { ptr, i64, i64 } %t584, 0
|
|
%t588 = getelementptr inbounds { ptr, i64, i64 }, ptr %t587, i64 %t583
|
|
store { ptr, i64, i64 } %t579, ptr %t588
|
|
br label %endif4010
|
|
else4009:
|
|
%t589 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t589, ptr %a590
|
|
store { ptr, i64, i64 } { ptr @.str.2499, i64 6, i64 0 }, ptr %a591
|
|
%t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591)
|
|
%t593 = icmp ne i32 %t592, 0
|
|
br i1 %t593, label %then4028, label %else4029
|
|
then4028:
|
|
%t594 = load ptr, ptr %a1
|
|
%t595 = icmp eq ptr %t594, null
|
|
br i1 %t595, label %panic4031, label %ok4032
|
|
panic4031:
|
|
call void @finch_panic(ptr @.str.2500, i64 1739, ptr @.str.2501)
|
|
unreachable
|
|
ok4032:
|
|
%t596 = getelementptr inbounds %S.gen.Gen, ptr %t594, i32 0, i32 15
|
|
%t597 = load ptr, ptr %a1
|
|
%t598 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t599 = load { ptr, i64, i64 }, ptr %t598
|
|
%t600 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t601 = load { ptr, i64, i64 }, ptr %t600
|
|
%t602 = call i64 @finch.gen.findStruct(ptr %t597, { ptr, i64, i64 } %t599, { ptr, i64, i64 } %t601)
|
|
%t603 = load { ptr, i64, i64 }, ptr %t596
|
|
%t604 = extractvalue { ptr, i64, i64 } %t603, 1
|
|
%t605 = icmp uge i64 %t602, %t604
|
|
br i1 %t605, label %range4033, label %inrange4034
|
|
range4033:
|
|
call void @finch_panic_index(ptr @.str.2502, i64 1739, i64 %t602, i64 %t604)
|
|
unreachable
|
|
inrange4034:
|
|
%t606 = extractvalue { ptr, i64, i64 } %t603, 0
|
|
%t607 = getelementptr inbounds %S.gen.StructDef, ptr %t606, i64 %t602
|
|
%t608 = load %S.gen.StructDef, ptr %t607
|
|
store %S.gen.StructDef %t608, ptr %a609
|
|
call void @finch.copy.S_gen_StructDef(ptr %a610, ptr %a609)
|
|
%t611 = load %S.gen.StructDef, ptr %a610
|
|
store %S.gen.StructDef %t611, ptr %a612
|
|
%t613 = load ptr, ptr %a1
|
|
%t614 = load %S.gen.StructDef, ptr %a612
|
|
%t615 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t613, %S.gen.StructDef %t614)
|
|
store { ptr, i64, i64 } %t615, ptr %a616
|
|
%t617 = load ptr, ptr %a1
|
|
%t618 = load %S.ast.Type, ptr %a2
|
|
%t619 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t617, %S.ast.Type %t618)
|
|
store %S.gen.SizeAlign %t619, ptr %a620
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a621
|
|
%t622 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 12
|
|
%t623 = getelementptr inbounds { ptr, i64, i64 }, ptr %t622, i32 0, i32 1
|
|
%t624 = load i64, ptr %t623
|
|
store i64 0, ptr %a625
|
|
br label %for.cond4035
|
|
for.cond4035:
|
|
%t626 = load i64, ptr %a625
|
|
%t627 = icmp slt i64 %t626, %t624
|
|
br i1 %t627, label %for.body4036, label %for.end4038
|
|
for.body4036:
|
|
%t628 = load ptr, ptr %a1
|
|
%t629 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 12
|
|
%t630 = load i64, ptr %a625
|
|
%t631 = load { ptr, i64, i64 }, ptr %t629
|
|
%t632 = extractvalue { ptr, i64, i64 } %t631, 1
|
|
%t633 = icmp uge i64 %t630, %t632
|
|
br i1 %t633, label %range4039, label %inrange4040
|
|
range4039:
|
|
call void @finch_panic_index(ptr @.str.2503, i64 1744, i64 %t630, i64 %t632)
|
|
unreachable
|
|
inrange4040:
|
|
%t634 = extractvalue { ptr, i64, i64 } %t631, 0
|
|
%t635 = getelementptr inbounds %S.ast.Type, ptr %t634, i64 %t630
|
|
%t636 = load %S.ast.Type, ptr %t635
|
|
%t637 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t628, %S.ast.Type %t636)
|
|
store %S.gen.SizeAlign %t637, ptr %a638
|
|
%t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %a621, i32 0, i32 1
|
|
%t640 = load ptr, ptr %a1
|
|
%t641 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 11
|
|
%t642 = load i64, ptr %a625
|
|
%t643 = load { ptr, i64, i64 }, ptr %t641
|
|
%t644 = extractvalue { ptr, i64, i64 } %t643, 1
|
|
%t645 = icmp uge i64 %t642, %t644
|
|
br i1 %t645, label %range4041, label %inrange4042
|
|
range4041:
|
|
call void @finch_panic_index(ptr @.str.2505, i64 1745, i64 %t642, i64 %t644)
|
|
unreachable
|
|
inrange4042:
|
|
%t646 = extractvalue { ptr, i64, i64 } %t643, 0
|
|
%t647 = getelementptr inbounds { ptr, i64, i64 }, ptr %t646, i64 %t642
|
|
%t648 = load { ptr, i64, i64 }, ptr %t647
|
|
%t649 = load i64, ptr %a48
|
|
%t650 = load i64, ptr %a58
|
|
%t651 = load ptr, ptr %a1
|
|
%t652 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 12
|
|
%t653 = load i64, ptr %a625
|
|
%t654 = load { ptr, i64, i64 }, ptr %t652
|
|
%t655 = extractvalue { ptr, i64, i64 } %t654, 1
|
|
%t656 = icmp uge i64 %t653, %t655
|
|
br i1 %t656, label %range4043, label %inrange4044
|
|
range4043:
|
|
call void @finch_panic_index(ptr @.str.2506, i64 1745, i64 %t653, i64 %t655)
|
|
unreachable
|
|
inrange4044:
|
|
%t657 = extractvalue { ptr, i64, i64 } %t654, 0
|
|
%t658 = getelementptr inbounds %S.ast.Type, ptr %t657, i64 %t653
|
|
%t659 = load %S.ast.Type, ptr %t658
|
|
%t660 = call i64 @finch.gen.diType(ptr %t651, %S.ast.Type %t659)
|
|
%t661 = getelementptr inbounds %S.gen.SizeAlign, ptr %a638, i32 0, i32 0
|
|
%t662 = load i64, ptr %t661
|
|
%t663 = mul i64 %t662, 8
|
|
%t664 = load i64, ptr %a625
|
|
%t665 = load { ptr, i64, i64 }, ptr %a616
|
|
%t666 = extractvalue { ptr, i64, i64 } %t665, 1
|
|
%t667 = icmp uge i64 %t664, %t666
|
|
br i1 %t667, label %range4045, label %inrange4046
|
|
range4045:
|
|
call void @finch_panic_index(ptr @.str.2507, i64 1745, i64 %t664, i64 %t666)
|
|
unreachable
|
|
inrange4046:
|
|
%t668 = extractvalue { ptr, i64, i64 } %t665, 0
|
|
%t669 = getelementptr inbounds i64, ptr %t668, i64 %t664
|
|
%t670 = load i64, ptr %t669
|
|
%t671 = mul i64 %t670, 8
|
|
%t672 = call i64 @finch.gen.dbgMember(ptr %t640, { ptr, i64, i64 } %t648, i64 %t649, i64 %t650, i64 0, i64 %t660, i64 %t663, i64 %t671)
|
|
call void @finch_str_from_int(ptr %a673, i64 %t672)
|
|
%t674 = load { ptr, i64, i64 }, ptr %a673
|
|
store { ptr, i64, i64 } { ptr @.str.2504, i64 1, i64 0 }, ptr %a676
|
|
store { ptr, i64, i64 } %t674, ptr %a677
|
|
call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677)
|
|
%t678 = load { ptr, i64, i64 }, ptr %a675
|
|
%t679 = load i64, ptr %t639
|
|
%t680 = add i64 %t679, 1
|
|
call void @finch_arr_reserve(ptr %a621, i64 %t680, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t681 = load ptr, ptr %a621
|
|
%t682 = getelementptr inbounds { ptr, i64, i64 }, ptr %t681, i64 %t679
|
|
store { ptr, i64, i64 } %t678, ptr %t682
|
|
store i64 %t680, ptr %t639
|
|
br label %for.step4037
|
|
for.step4037:
|
|
%t683 = load i64, ptr %a625
|
|
%t684 = add i64 %t683, 1
|
|
store i64 %t684, ptr %a625
|
|
br label %for.cond4035
|
|
for.end4038:
|
|
%t685 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 1
|
|
%t686 = load { ptr, i64, i64 }, ptr %t685
|
|
store { ptr, i64, i64 } { ptr @.str.2508, i64 52, i64 0 }, ptr %a688
|
|
store { ptr, i64, i64 } %t686, ptr %a689
|
|
call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689)
|
|
%t690 = load { ptr, i64, i64 }, ptr %a687
|
|
store { ptr, i64, i64 } %t690, ptr %a692
|
|
store { ptr, i64, i64 } { ptr @.str.2509, i64 10, i64 0 }, ptr %a693
|
|
call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693)
|
|
%t694 = load { ptr, i64, i64 }, ptr %a691
|
|
%t695 = load i64, ptr %a58
|
|
call void @finch_str_from_int(ptr %a696, i64 %t695)
|
|
%t697 = load { ptr, i64, i64 }, ptr %a696
|
|
store { ptr, i64, i64 } %t694, ptr %a699
|
|
store { ptr, i64, i64 } %t697, ptr %a700
|
|
call void @finch_str_concat(ptr %a698, ptr %a699, ptr %a700)
|
|
%t701 = load { ptr, i64, i64 }, ptr %a698
|
|
store { ptr, i64, i64 } %t701, ptr %a703
|
|
store { ptr, i64, i64 } { ptr @.str.2510, i64 8, i64 0 }, ptr %a704
|
|
call void @finch_str_concat(ptr %a702, ptr %a703, ptr %a704)
|
|
%t705 = load { ptr, i64, i64 }, ptr %a702
|
|
%t706 = getelementptr inbounds %S.gen.SizeAlign, ptr %a620, i32 0, i32 0
|
|
%t707 = load i64, ptr %t706
|
|
%t708 = mul i64 %t707, 8
|
|
call void @finch_str_from_int(ptr %a709, i64 %t708)
|
|
%t710 = load { ptr, i64, i64 }, ptr %a709
|
|
store { ptr, i64, i64 } %t705, ptr %a712
|
|
store { ptr, i64, i64 } %t710, ptr %a713
|
|
call void @finch_str_concat(ptr %a711, ptr %a712, ptr %a713)
|
|
%t714 = load { ptr, i64, i64 }, ptr %a711
|
|
store { ptr, i64, i64 } %t714, ptr %a716
|
|
store { ptr, i64, i64 } { ptr @.str.2511, i64 24, i64 0 }, ptr %a717
|
|
call void @finch_str_concat(ptr %a715, ptr %a716, ptr %a717)
|
|
%t718 = load { ptr, i64, i64 }, ptr %a715
|
|
%t719 = getelementptr inbounds { ptr, i64, i64 }, ptr %a621, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2512, i64 2, i64 0 }, ptr %a720
|
|
call void @finch_str_join(ptr %a721, ptr %a621, ptr %a720)
|
|
%t722 = load { ptr, i64, i64 }, ptr %a721
|
|
store { ptr, i64, i64 } %t718, ptr %a724
|
|
store { ptr, i64, i64 } %t722, ptr %a725
|
|
call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725)
|
|
%t726 = load { ptr, i64, i64 }, ptr %a723
|
|
store { ptr, i64, i64 } %t726, ptr %a728
|
|
store { ptr, i64, i64 } { ptr @.str.2513, i64 2, i64 0 }, ptr %a729
|
|
call void @finch_str_concat(ptr %a727, ptr %a728, ptr %a729)
|
|
%t730 = load { ptr, i64, i64 }, ptr %a727
|
|
%t731 = load ptr, ptr %a1
|
|
%t732 = icmp eq ptr %t731, null
|
|
br i1 %t732, label %panic4047, label %ok4048
|
|
panic4047:
|
|
call void @finch_panic(ptr @.str.2514, i64 1747, ptr @.str.2515)
|
|
unreachable
|
|
ok4048:
|
|
%t733 = getelementptr inbounds %S.gen.Gen, ptr %t731, i32 0, i32 29
|
|
%t734 = load i64, ptr %a48
|
|
%t735 = load { ptr, i64, i64 }, ptr %t733
|
|
%t736 = extractvalue { ptr, i64, i64 } %t735, 1
|
|
%t737 = icmp uge i64 %t734, %t736
|
|
br i1 %t737, label %range4049, label %inrange4050
|
|
range4049:
|
|
call void @finch_panic_index(ptr @.str.2516, i64 1747, i64 %t734, i64 %t736)
|
|
unreachable
|
|
inrange4050:
|
|
%t738 = extractvalue { ptr, i64, i64 } %t735, 0
|
|
%t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734
|
|
store { ptr, i64, i64 } %t730, ptr %t739
|
|
br label %endif4030
|
|
else4029:
|
|
%t740 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.2517, i64 20, i64 0 }, ptr %a742
|
|
store { ptr, i64, i64 } %t740, ptr %a743
|
|
call void @finch_str_concat(ptr %a741, ptr %a742, ptr %a743)
|
|
%t744 = load { ptr, i64, i64 }, ptr %a741
|
|
store { ptr, i64, i64 } %t744, ptr %a746
|
|
store { ptr, i64, i64 } { ptr @.str.2518, i64 39, i64 0 }, ptr %a747
|
|
call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747)
|
|
%t748 = load { ptr, i64, i64 }, ptr %a745
|
|
%t749 = load ptr, ptr %a1
|
|
%t750 = icmp eq ptr %t749, null
|
|
br i1 %t750, label %panic4051, label %ok4052
|
|
panic4051:
|
|
call void @finch_panic(ptr @.str.2519, i64 1749, ptr @.str.2520)
|
|
unreachable
|
|
ok4052:
|
|
%t751 = getelementptr inbounds %S.gen.Gen, ptr %t749, i32 0, i32 29
|
|
%t752 = load i64, ptr %a48
|
|
%t753 = load { ptr, i64, i64 }, ptr %t751
|
|
%t754 = extractvalue { ptr, i64, i64 } %t753, 1
|
|
%t755 = icmp uge i64 %t752, %t754
|
|
br i1 %t755, label %range4053, label %inrange4054
|
|
range4053:
|
|
call void @finch_panic_index(ptr @.str.2521, i64 1749, i64 %t752, i64 %t754)
|
|
unreachable
|
|
inrange4054:
|
|
%t756 = extractvalue { ptr, i64, i64 } %t753, 0
|
|
%t757 = getelementptr inbounds { ptr, i64, i64 }, ptr %t756, i64 %t752
|
|
store { ptr, i64, i64 } %t748, ptr %t757
|
|
br label %endif4030
|
|
endif4030:
|
|
br label %endif4010
|
|
endif4010:
|
|
br label %endif3998
|
|
endif3998:
|
|
br label %endif3983
|
|
endif3983:
|
|
br label %endif3971
|
|
endif3971:
|
|
%t758 = load i64, ptr %a48
|
|
ret i64 %t758
|
|
endif3952:
|
|
br label %endif3946
|
|
endif3946:
|
|
br label %endif3943
|
|
endif3943:
|
|
br label %endif3940
|
|
endif3940:
|
|
br label %endif3937
|
|
endif3937:
|
|
br label %endif3934
|
|
endif3934:
|
|
br label %endif3931
|
|
endif3931:
|
|
%t759 = load i64, ptr %a48
|
|
%t760 = load ptr, ptr %a1
|
|
%t761 = icmp eq ptr %t760, null
|
|
br i1 %t761, label %panic4055, label %ok4056
|
|
panic4055:
|
|
call void @finch_panic(ptr @.str.2522, i64 1753, ptr @.str.2523)
|
|
unreachable
|
|
ok4056:
|
|
%t762 = getelementptr inbounds %S.gen.Gen, ptr %t760, i32 0, i32 30
|
|
%t763 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t763, ptr %a764
|
|
store i32 0, ptr %a765
|
|
%t766 = call i64 @finch_map_slot(ptr %t762, ptr %a764, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a765)
|
|
%t767 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t762, i32 0, i32 0
|
|
%t768 = load ptr, ptr %t767
|
|
%t769 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t768, i64 %t766
|
|
%t770 = load i32, ptr %a765
|
|
%t771 = icmp ne i32 %t770, 0
|
|
br i1 %t771, label %map.new4057, label %map.have4058
|
|
map.new4057:
|
|
%t772 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t769, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t772, ptr %a764)
|
|
%t773 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t769, i32 0, i32 2
|
|
store i64 0, ptr %t773
|
|
br label %map.have4058
|
|
map.have4058:
|
|
%t774 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t769, i32 0, i32 2
|
|
store i64 %t759, ptr %t774
|
|
%t775 = load i64, ptr %a48
|
|
ret i64 %t775
|
|
}
|
|
|
|
define internal i64 @finch.gen.dbgLocation(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca i64, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca i32, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = icmp eq ptr %t2, null
|
|
br i1 %t3, label %panic4059, label %ok4060
|
|
panic4059:
|
|
call void @finch_panic(ptr @.str.2525, i64 1758, ptr @.str.2526)
|
|
unreachable
|
|
ok4060:
|
|
%t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 33
|
|
%t5 = load i64, ptr %t4
|
|
call void @finch_str_from_int(ptr %a6, i64 %t5)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.2524, i64 2, i64 0 }, ptr %a9
|
|
store { ptr, i64, i64 } %t7, ptr %a10
|
|
call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t11, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.2527, i64 1, i64 0 }, ptr %a14
|
|
call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a12
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = icmp eq ptr %t16, null
|
|
br i1 %t17, label %panic4061, label %ok4062
|
|
panic4061:
|
|
call void @finch_panic(ptr @.str.2528, i64 1758, ptr @.str.2529)
|
|
unreachable
|
|
ok4062:
|
|
%t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 34
|
|
%t19 = load i64, ptr %t18
|
|
call void @finch_str_from_int(ptr %a20, i64 %t19)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } %t15, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.2530, i64 1, i64 0 }, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = icmp eq ptr %t30, null
|
|
br i1 %t31, label %panic4063, label %ok4064
|
|
panic4063:
|
|
call void @finch_panic(ptr @.str.2531, i64 1758, ptr @.str.2532)
|
|
unreachable
|
|
ok4064:
|
|
%t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 32
|
|
%t33 = load i64, ptr %t32
|
|
call void @finch_str_from_int(ptr %a34, i64 %t33)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } %t29, ptr %a37
|
|
store { ptr, i64, i64 } %t35, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
store { ptr, i64, i64 } %t39, ptr %a40
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = icmp eq ptr %t41, null
|
|
br i1 %t42, label %panic4065, label %ok4066
|
|
panic4065:
|
|
call void @finch_panic(ptr @.str.2533, i64 1759, ptr @.str.2534)
|
|
unreachable
|
|
ok4066:
|
|
%t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 30
|
|
%t44 = load { ptr, i64, i64 }, ptr %a40
|
|
store { ptr, i64, i64 } %t44, ptr %a45
|
|
%t46 = call i64 @finch_map_find(ptr %t43, ptr %a45, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t47 = icmp sge i64 %t46, 0
|
|
br i1 %t47, label %then4067, label %endif4069
|
|
then4067:
|
|
%t48 = load ptr, ptr %a1
|
|
%t49 = icmp eq ptr %t48, null
|
|
br i1 %t49, label %panic4070, label %ok4071
|
|
panic4070:
|
|
call void @finch_panic(ptr @.str.2535, i64 1760, ptr @.str.2536)
|
|
unreachable
|
|
ok4071:
|
|
%t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 30
|
|
%t51 = load { ptr, i64, i64 }, ptr %a40
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
%t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t54 = icmp slt i64 %t53, 0
|
|
br i1 %t54, label %map.missing4072, label %map.found4073
|
|
map.missing4072:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a55
|
|
store { ptr, i64, i64 } %t51, ptr %a56
|
|
call void @finch_buf_str(ptr %a55, ptr %a56, i32 1)
|
|
call void @finch_map_missing(ptr @.str.2537, i64 1760, ptr %a55)
|
|
unreachable
|
|
map.found4073:
|
|
%t57 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t50, i32 0, i32 0
|
|
%t58 = load ptr, ptr %t57
|
|
%t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t58, i64 %t53
|
|
%t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t59, i32 0, i32 2
|
|
%t61 = load i64, ptr %t60
|
|
ret i64 %t61
|
|
endif4069:
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = load ptr, ptr %a1
|
|
%t64 = icmp eq ptr %t63, null
|
|
br i1 %t64, label %panic4074, label %ok4075
|
|
panic4074:
|
|
call void @finch_panic(ptr @.str.2539, i64 1762, ptr @.str.2540)
|
|
unreachable
|
|
ok4075:
|
|
%t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 33
|
|
%t66 = load i64, ptr %t65
|
|
call void @finch_str_from_int(ptr %a67, i64 %t66)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } { ptr @.str.2538, i64 18, i64 0 }, ptr %a70
|
|
store { ptr, i64, i64 } %t68, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
store { ptr, i64, i64 } %t72, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.2541, i64 10, i64 0 }, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
%t77 = load ptr, ptr %a1
|
|
%t78 = icmp eq ptr %t77, null
|
|
br i1 %t78, label %panic4076, label %ok4077
|
|
panic4076:
|
|
call void @finch_panic(ptr @.str.2542, i64 1762, ptr @.str.2543)
|
|
unreachable
|
|
ok4077:
|
|
%t79 = getelementptr inbounds %S.gen.Gen, ptr %t77, i32 0, i32 34
|
|
%t80 = load i64, ptr %t79
|
|
call void @finch_str_from_int(ptr %a81, i64 %t80)
|
|
%t82 = load { ptr, i64, i64 }, ptr %a81
|
|
store { ptr, i64, i64 } %t76, ptr %a84
|
|
store { ptr, i64, i64 } %t82, ptr %a85
|
|
call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85)
|
|
%t86 = load { ptr, i64, i64 }, ptr %a83
|
|
store { ptr, i64, i64 } %t86, ptr %a88
|
|
store { ptr, i64, i64 } { ptr @.str.2544, i64 10, i64 0 }, ptr %a89
|
|
call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a87
|
|
%t91 = load ptr, ptr %a1
|
|
%t92 = icmp eq ptr %t91, null
|
|
br i1 %t92, label %panic4078, label %ok4079
|
|
panic4078:
|
|
call void @finch_panic(ptr @.str.2545, i64 1762, ptr @.str.2546)
|
|
unreachable
|
|
ok4079:
|
|
%t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 32
|
|
%t94 = load i64, ptr %t93
|
|
call void @finch_str_from_int(ptr %a95, i64 %t94)
|
|
%t96 = load { ptr, i64, i64 }, ptr %a95
|
|
store { ptr, i64, i64 } %t90, ptr %a98
|
|
store { ptr, i64, i64 } %t96, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
store { ptr, i64, i64 } %t100, ptr %a102
|
|
store { ptr, i64, i64 } { ptr @.str.2547, i64 1, i64 0 }, ptr %a103
|
|
call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103)
|
|
%t104 = load { ptr, i64, i64 }, ptr %a101
|
|
%t105 = call i64 @finch.gen.md(ptr %t62, { ptr, i64, i64 } %t104)
|
|
store i64 %t105, ptr %a106
|
|
%t107 = load i64, ptr %a106
|
|
%t108 = load ptr, ptr %a1
|
|
%t109 = icmp eq ptr %t108, null
|
|
br i1 %t109, label %panic4080, label %ok4081
|
|
panic4080:
|
|
call void @finch_panic(ptr @.str.2548, i64 1763, ptr @.str.2549)
|
|
unreachable
|
|
ok4081:
|
|
%t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 30
|
|
%t111 = load { ptr, i64, i64 }, ptr %a40
|
|
store { ptr, i64, i64 } %t111, ptr %a112
|
|
store i32 0, ptr %a113
|
|
%t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a113)
|
|
%t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0
|
|
%t116 = load ptr, ptr %t115
|
|
%t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t116, i64 %t114
|
|
%t118 = load i32, ptr %a113
|
|
%t119 = icmp ne i32 %t118, 0
|
|
br i1 %t119, label %map.new4082, label %map.have4083
|
|
map.new4082:
|
|
%t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t117, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t120, ptr %a112)
|
|
%t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t117, i32 0, i32 2
|
|
store i64 0, ptr %t121
|
|
br label %map.have4083
|
|
map.have4083:
|
|
%t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t117, i32 0, i32 2
|
|
store i64 %t107, ptr %t122
|
|
%t123 = load i64, ptr %a106
|
|
ret i64 %t123
|
|
}
|
|
|
|
define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a7 = alloca %S.gen.FnSig, align 16
|
|
%a8 = alloca %S.gen.FnSig, align 16
|
|
%a10 = alloca %S.gen.FnSig, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca i64, align 16
|
|
%a40 = alloca %S.ast.Type, align 16
|
|
%a63 = alloca i64, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca i64, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic4084, label %ok4085
|
|
panic4084:
|
|
call void @finch_panic(ptr @.str.2550, i64 1768, ptr @.str.2551)
|
|
unreachable
|
|
ok4085:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 12
|
|
%t6 = load %S.gen.FnSig, ptr %t5
|
|
store %S.gen.FnSig %t6, ptr %a7
|
|
call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7)
|
|
%t9 = load %S.gen.FnSig, ptr %a8
|
|
store %S.gen.FnSig %t9, ptr %a10
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 12
|
|
%t15 = load %S.ast.Type, ptr %t14
|
|
%t16 = call i64 @finch.gen.diType(ptr %t13, %S.ast.Type %t15)
|
|
%t17 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t16)
|
|
%t18 = load i64, ptr %t12
|
|
%t19 = add i64 %t18, 1
|
|
call void @finch_arr_reserve(ptr %a11, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t20 = load ptr, ptr %a11
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18
|
|
store { ptr, i64, i64 } %t17, ptr %t21
|
|
store i64 %t19, ptr %t12
|
|
%t22 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 2
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1
|
|
%t24 = load i64, ptr %t23
|
|
%t25 = icmp sgt i64 %t24, 0
|
|
br i1 %t25, label %then4086, label %endif4088
|
|
then4086:
|
|
%t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1
|
|
%t27 = load i64, ptr %t26
|
|
%t28 = add i64 %t27, 1
|
|
call void @finch_arr_reserve(ptr %a11, i64 %t28, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t29 = load ptr, ptr %a11
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t27
|
|
store { ptr, i64, i64 } { ptr @.str.2552, i64 4, i64 0 }, ptr %t30
|
|
store i64 %t28, ptr %t26
|
|
br label %endif4088
|
|
endif4088:
|
|
%t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13
|
|
store i64 0, ptr %a32
|
|
br label %each.cond4089
|
|
each.cond4089:
|
|
%t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1
|
|
%t34 = load i64, ptr %t33
|
|
%t35 = load i64, ptr %a32
|
|
%t36 = icmp slt i64 %t35, %t34
|
|
br i1 %t36, label %each.body4090, label %each.end4092
|
|
each.body4090:
|
|
%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.step4091
|
|
each.step4091:
|
|
%t50 = load i64, ptr %a32
|
|
%t51 = add i64 %t50, 1
|
|
store i64 %t51, ptr %a32
|
|
br label %each.cond4089
|
|
each.end4092:
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = icmp eq ptr %t52, null
|
|
br i1 %t53, label %panic4093, label %ok4094
|
|
panic4093:
|
|
call void @finch_panic(ptr @.str.2553, i64 1777, ptr @.str.2554)
|
|
unreachable
|
|
ok4094:
|
|
%t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 31
|
|
%t55 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t56 = load i64, ptr %t55
|
|
%t57 = load { ptr, i64, i64 }, ptr %t54
|
|
%t58 = extractvalue { ptr, i64, i64 } %t57, 1
|
|
%t59 = icmp uge i64 %t56, %t58
|
|
br i1 %t59, label %range4095, label %inrange4096
|
|
range4095:
|
|
call void @finch_panic_index(ptr @.str.2555, i64 1777, i64 %t56, i64 %t58)
|
|
unreachable
|
|
inrange4096:
|
|
%t60 = extractvalue { ptr, i64, i64 } %t57, 0
|
|
%t61 = getelementptr inbounds i64, ptr %t60, i64 %t56
|
|
%t62 = load i64, ptr %t61
|
|
store i64 %t62, ptr %a63
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2557, i64 2, i64 0 }, ptr %a66
|
|
call void @finch_str_join(ptr %a67, ptr %a11, ptr %a66)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } { ptr @.str.2556, i64 27, i64 0 }, ptr %a70
|
|
store { ptr, i64, i64 } %t68, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
store { ptr, i64, i64 } %t72, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.2558, i64 2, i64 0 }, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
%t77 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t76)
|
|
store i64 %t77, ptr %a78
|
|
%t79 = load ptr, ptr %a1
|
|
%t80 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1
|
|
%t81 = load { ptr, i64, i64 }, ptr %t80
|
|
store { ptr, i64, i64 } { ptr @.str.2559, i64 30, i64 0 }, ptr %a83
|
|
store { ptr, i64, i64 } %t81, ptr %a84
|
|
call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } %t85, ptr %a87
|
|
store { ptr, i64, i64 } { ptr @.str.2560, i64 17, i64 0 }, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
%t90 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11
|
|
%t91 = load { ptr, i64, i64 }, ptr %t90
|
|
store { ptr, i64, i64 } %t91, ptr %a92
|
|
%t94 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1
|
|
%t96 = load i64, ptr %t95
|
|
call void @finch_str_sub(ptr %a93, ptr %a92, i64 1, i64 %t96, ptr @.str.2561, i64 1779)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a93
|
|
store { ptr, i64, i64 } %t89, ptr %a99
|
|
store { ptr, i64, i64 } %t97, ptr %a100
|
|
call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a98
|
|
store { ptr, i64, i64 } %t101, ptr %a103
|
|
store { ptr, i64, i64 } { ptr @.str.2562, i64 11, i64 0 }, ptr %a104
|
|
call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104)
|
|
%t105 = load { ptr, i64, i64 }, ptr %a102
|
|
%t106 = load i64, ptr %a63
|
|
call void @finch_str_from_int(ptr %a107, i64 %t106)
|
|
%t108 = load { ptr, i64, i64 }, ptr %a107
|
|
store { ptr, i64, i64 } %t105, ptr %a110
|
|
store { ptr, i64, i64 } %t108, ptr %a111
|
|
call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111)
|
|
%t112 = load { ptr, i64, i64 }, ptr %a109
|
|
store { ptr, i64, i64 } %t112, ptr %a114
|
|
store { ptr, i64, i64 } { ptr @.str.2563, i64 9, i64 0 }, ptr %a115
|
|
call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115)
|
|
%t116 = load { ptr, i64, i64 }, ptr %a113
|
|
%t117 = load i64, ptr %a63
|
|
call void @finch_str_from_int(ptr %a118, i64 %t117)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a118
|
|
store { ptr, i64, i64 } %t116, ptr %a121
|
|
store { ptr, i64, i64 } %t119, ptr %a122
|
|
call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122)
|
|
%t123 = load { ptr, i64, i64 }, ptr %a120
|
|
store { ptr, i64, i64 } %t123, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.2564, i64 8, i64 0 }, ptr %a126
|
|
call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126)
|
|
%t127 = load { ptr, i64, i64 }, ptr %a124
|
|
%t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t129 = load i64, ptr %t128
|
|
call void @finch_str_from_int(ptr %a130, i64 %t129)
|
|
%t131 = load { ptr, i64, i64 }, ptr %a130
|
|
store { ptr, i64, i64 } %t127, ptr %a133
|
|
store { ptr, i64, i64 } %t131, ptr %a134
|
|
call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134)
|
|
%t135 = load { ptr, i64, i64 }, ptr %a132
|
|
store { ptr, i64, i64 } %t135, ptr %a137
|
|
store { ptr, i64, i64 } { ptr @.str.2565, i64 9, i64 0 }, ptr %a138
|
|
call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138)
|
|
%t139 = load { ptr, i64, i64 }, ptr %a136
|
|
%t140 = load i64, ptr %a78
|
|
call void @finch_str_from_int(ptr %a141, i64 %t140)
|
|
%t142 = load { ptr, i64, i64 }, ptr %a141
|
|
store { ptr, i64, i64 } %t139, ptr %a144
|
|
store { ptr, i64, i64 } %t142, ptr %a145
|
|
call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145)
|
|
%t146 = load { ptr, i64, i64 }, ptr %a143
|
|
store { ptr, i64, i64 } %t146, ptr %a148
|
|
store { ptr, i64, i64 } { ptr @.str.2566, i64 13, i64 0 }, ptr %a149
|
|
call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149)
|
|
%t150 = load { ptr, i64, i64 }, ptr %a147
|
|
%t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t152 = load i64, ptr %t151
|
|
call void @finch_str_from_int(ptr %a153, i64 %t152)
|
|
%t154 = load { ptr, i64, i64 }, ptr %a153
|
|
store { ptr, i64, i64 } %t150, ptr %a156
|
|
store { ptr, i64, i64 } %t154, ptr %a157
|
|
call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157)
|
|
%t158 = load { ptr, i64, i64 }, ptr %a155
|
|
store { ptr, i64, i64 } %t158, ptr %a160
|
|
store { ptr, i64, i64 } { ptr @.str.2567, i64 87, i64 0 }, ptr %a161
|
|
call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161)
|
|
%t162 = load { ptr, i64, i64 }, ptr %a159
|
|
%t163 = call i64 @finch.gen.md(ptr %t79, { ptr, i64, i64 } %t162)
|
|
ret i64 %t163
|
|
}
|
|
|
|
define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca i64, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca i64, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
store { ptr, i64, i64 } %p4, ptr %a5
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = icmp eq ptr %t6, null
|
|
br i1 %t7, label %panic4097, label %ok4098
|
|
panic4097:
|
|
call void @finch_panic(ptr @.str.2568, i64 1783, ptr @.str.2569)
|
|
unreachable
|
|
ok4098:
|
|
%t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 26
|
|
%t9 = load i1, ptr %t8
|
|
%t10 = xor i1 %t9, true
|
|
br label %logic.from4099
|
|
logic.from4099:
|
|
br i1 %t10, label %logic.end4101, label %logic.rhs4100
|
|
logic.rhs4100:
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = icmp eq ptr %t11, null
|
|
br i1 %t12, label %panic4102, label %ok4103
|
|
panic4102:
|
|
call void @finch_panic(ptr @.str.2570, i64 1783, ptr @.str.2571)
|
|
unreachable
|
|
ok4103:
|
|
%t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 32
|
|
%t14 = load i64, ptr %t13
|
|
%t15 = icmp slt i64 %t14, 0
|
|
br label %logic.rend4104
|
|
logic.rend4104:
|
|
br label %logic.end4101
|
|
logic.end4101:
|
|
%t16 = phi i1 [ true, %logic.from4099 ], [ %t15, %logic.rend4104 ]
|
|
br i1 %t16, label %then4105, label %endif4107
|
|
then4105:
|
|
ret void
|
|
endif4107:
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = load %S.ast.Type, ptr %a4
|
|
%t19 = call i64 @finch.gen.diType(ptr %t17, %S.ast.Type %t18)
|
|
store i64 %t19, ptr %a20
|
|
%t21 = load i64, ptr %a20
|
|
%t22 = icmp slt i64 %t21, 0
|
|
br i1 %t22, label %then4108, label %endif4110
|
|
then4108:
|
|
ret void
|
|
endif4110:
|
|
store { ptr, i64, i64 } { ptr @.str.2572, i64 0, i64 0 }, ptr %a23
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = icmp eq ptr %t24, null
|
|
br i1 %t25, label %panic4111, label %ok4112
|
|
panic4111:
|
|
call void @finch_panic(ptr @.str.2573, i64 1791, ptr @.str.2574)
|
|
unreachable
|
|
ok4112:
|
|
%t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 35
|
|
%t27 = load i64, ptr %t26
|
|
%t28 = icmp sgt i64 %t27, 0
|
|
br i1 %t28, label %then4113, label %endif4115
|
|
then4113:
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = icmp eq ptr %t29, null
|
|
br i1 %t30, label %panic4116, label %ok4117
|
|
panic4116:
|
|
call void @finch_panic(ptr @.str.2576, i64 1792, ptr @.str.2577)
|
|
unreachable
|
|
ok4117:
|
|
%t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 35
|
|
%t32 = load i64, ptr %t31
|
|
call void @finch_str_from_int(ptr %a33, i64 %t32)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } { ptr @.str.2575, i64 7, i64 0 }, ptr %a36
|
|
store { ptr, i64, i64 } %t34, ptr %a37
|
|
call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } %t38, ptr %a23
|
|
br label %endif4115
|
|
endif4115:
|
|
%t39 = load ptr, ptr %a1
|
|
%t40 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.2578, i64 24, i64 0 }, ptr %a42
|
|
store { ptr, i64, i64 } %t40, ptr %a43
|
|
call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a41
|
|
store { ptr, i64, i64 } %t44, ptr %a46
|
|
store { ptr, i64, i64 } { ptr @.str.2579, i64 11, i64 0 }, ptr %a47
|
|
call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a45
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = icmp eq ptr %t49, null
|
|
br i1 %t50, label %panic4118, label %ok4119
|
|
panic4118:
|
|
call void @finch_panic(ptr @.str.2580, i64 1794, ptr @.str.2581)
|
|
unreachable
|
|
ok4119:
|
|
%t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 32
|
|
%t52 = load i64, ptr %t51
|
|
call void @finch_str_from_int(ptr %a53, i64 %t52)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t48, ptr %a56
|
|
store { ptr, i64, i64 } %t54, ptr %a57
|
|
call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57)
|
|
%t58 = load { ptr, i64, i64 }, ptr %a55
|
|
store { ptr, i64, i64 } %t58, ptr %a60
|
|
store { ptr, i64, i64 } { ptr @.str.2582, i64 9, i64 0 }, ptr %a61
|
|
call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61)
|
|
%t62 = load { ptr, i64, i64 }, ptr %a59
|
|
%t63 = load ptr, ptr %a1
|
|
%t64 = icmp eq ptr %t63, null
|
|
br i1 %t64, label %panic4120, label %ok4121
|
|
panic4120:
|
|
call void @finch_panic(ptr @.str.2583, i64 1794, ptr @.str.2584)
|
|
unreachable
|
|
ok4121:
|
|
%t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 31
|
|
%t66 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t67 = load i64, ptr %t66
|
|
%t68 = load { ptr, i64, i64 }, ptr %t65
|
|
%t69 = extractvalue { ptr, i64, i64 } %t68, 1
|
|
%t70 = icmp uge i64 %t67, %t69
|
|
br i1 %t70, label %range4122, label %inrange4123
|
|
range4122:
|
|
call void @finch_panic_index(ptr @.str.2585, i64 1794, i64 %t67, i64 %t69)
|
|
unreachable
|
|
inrange4123:
|
|
%t71 = extractvalue { ptr, i64, i64 } %t68, 0
|
|
%t72 = getelementptr inbounds i64, ptr %t71, i64 %t67
|
|
%t73 = load i64, ptr %t72
|
|
call void @finch_str_from_int(ptr %a74, i64 %t73)
|
|
%t75 = load { ptr, i64, i64 }, ptr %a74
|
|
store { ptr, i64, i64 } %t62, ptr %a77
|
|
store { ptr, i64, i64 } %t75, ptr %a78
|
|
call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78)
|
|
%t79 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } %t79, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.2586, i64 8, i64 0 }, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
%t84 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t85 = load i64, ptr %t84
|
|
call void @finch_str_from_int(ptr %a86, i64 %t85)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t83, ptr %a89
|
|
store { ptr, i64, i64 } %t87, ptr %a90
|
|
call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90)
|
|
%t91 = load { ptr, i64, i64 }, ptr %a88
|
|
store { ptr, i64, i64 } %t91, ptr %a93
|
|
store { ptr, i64, i64 } { ptr @.str.2587, i64 9, i64 0 }, ptr %a94
|
|
call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94)
|
|
%t95 = load { ptr, i64, i64 }, ptr %a92
|
|
%t96 = load i64, ptr %a20
|
|
call void @finch_str_from_int(ptr %a97, i64 %t96)
|
|
%t98 = load { ptr, i64, i64 }, ptr %a97
|
|
store { ptr, i64, i64 } %t95, ptr %a100
|
|
store { ptr, i64, i64 } %t98, ptr %a101
|
|
call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a99
|
|
%t103 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t102, ptr %a105
|
|
store { ptr, i64, i64 } %t103, ptr %a106
|
|
call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106)
|
|
%t107 = load { ptr, i64, i64 }, ptr %a104
|
|
store { ptr, i64, i64 } %t107, ptr %a109
|
|
store { ptr, i64, i64 } { ptr @.str.2588, i64 1, i64 0 }, ptr %a110
|
|
call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a108
|
|
%t112 = call i64 @finch.gen.md(ptr %t39, { ptr, i64, i64 } %t111)
|
|
store i64 %t112, ptr %a113
|
|
%t114 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t115 = load i64, ptr %t114
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = icmp eq ptr %t116, null
|
|
br i1 %t117, label %panic4124, label %ok4125
|
|
panic4124:
|
|
call void @finch_panic(ptr @.str.2589, i64 1795, ptr @.str.2590)
|
|
unreachable
|
|
ok4125:
|
|
%t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 33
|
|
store i64 %t115, ptr %t118
|
|
%t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12
|
|
%t120 = load i64, ptr %t119
|
|
%t121 = load ptr, ptr %a1
|
|
%t122 = icmp eq ptr %t121, null
|
|
br i1 %t122, label %panic4126, label %ok4127
|
|
panic4126:
|
|
call void @finch_panic(ptr @.str.2591, i64 1796, ptr @.str.2592)
|
|
unreachable
|
|
ok4127:
|
|
%t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 34
|
|
store i64 %t120, ptr %t123
|
|
%t124 = load ptr, ptr %a1
|
|
%t125 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.2593, i64 41, i64 0 }, ptr %a127
|
|
store { ptr, i64, i64 } %t125, ptr %a128
|
|
call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128)
|
|
%t129 = load { ptr, i64, i64 }, ptr %a126
|
|
store { ptr, i64, i64 } %t129, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.2594, i64 12, i64 0 }, ptr %a132
|
|
call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132)
|
|
%t133 = load { ptr, i64, i64 }, ptr %a130
|
|
%t134 = load i64, ptr %a113
|
|
call void @finch_str_from_int(ptr %a135, i64 %t134)
|
|
%t136 = load { ptr, i64, i64 }, ptr %a135
|
|
store { ptr, i64, i64 } %t133, ptr %a138
|
|
store { ptr, i64, i64 } %t136, ptr %a139
|
|
call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139)
|
|
%t140 = load { ptr, i64, i64 }, ptr %a137
|
|
store { ptr, i64, i64 } %t140, ptr %a142
|
|
store { ptr, i64, i64 } { ptr @.str.2595, i64 27, i64 0 }, ptr %a143
|
|
call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143)
|
|
%t144 = load { ptr, i64, i64 }, ptr %a141
|
|
call void @finch.gen.emit(ptr %t124, { ptr, i64, i64 } %t144)
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.dbgModule(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca i64, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = mul i64 2, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t3 = call ptr @finch_alloc(i64 %t2)
|
|
%t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.2596, i64 20, i64 0 }, ptr %t4
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.2597, i64 30, i64 0 }, ptr %t5
|
|
%t6 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0
|
|
%t7 = insertvalue { ptr, i64, i64 } %t6, i64 2, 1
|
|
%t8 = insertvalue { ptr, i64, i64 } %t7, i64 2, 2
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = icmp eq ptr %t10, null
|
|
br i1 %t11, label %panic4128, label %ok4129
|
|
panic4128:
|
|
call void @finch_panic(ptr @.str.2598, i64 1803, ptr @.str.2599)
|
|
unreachable
|
|
ok4129:
|
|
%t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 29
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1
|
|
%t14 = load i64, ptr %t13
|
|
store i64 0, ptr %a15
|
|
br label %for.cond4130
|
|
for.cond4130:
|
|
%t16 = load i64, ptr %a15
|
|
%t17 = icmp slt i64 %t16, %t14
|
|
br i1 %t17, label %for.body4131, label %for.end4133
|
|
for.body4131:
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1
|
|
%t19 = load i64, ptr %a15
|
|
call void @finch_str_from_int(ptr %a20, i64 %t19)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.2600, i64 1, i64 0 }, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.2601, i64 3, i64 0 }, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = icmp eq ptr %t30, null
|
|
br i1 %t31, label %panic4134, label %ok4135
|
|
panic4134:
|
|
call void @finch_panic(ptr @.str.2602, i64 1804, ptr @.str.2603)
|
|
unreachable
|
|
ok4135:
|
|
%t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 29
|
|
%t33 = load i64, ptr %a15
|
|
%t34 = load { ptr, i64, i64 }, ptr %t32
|
|
%t35 = extractvalue { ptr, i64, i64 } %t34, 1
|
|
%t36 = icmp uge i64 %t33, %t35
|
|
br i1 %t36, label %range4136, label %inrange4137
|
|
range4136:
|
|
call void @finch_panic_index(ptr @.str.2604, i64 1804, i64 %t33, i64 %t35)
|
|
unreachable
|
|
inrange4137:
|
|
%t37 = extractvalue { ptr, i64, i64 } %t34, 0
|
|
%t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t33
|
|
%t39 = load { ptr, i64, i64 }, ptr %t38
|
|
store { ptr, i64, i64 } %t29, ptr %a41
|
|
store { ptr, i64, i64 } %t39, ptr %a42
|
|
call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a40
|
|
%t44 = load i64, ptr %t18
|
|
%t45 = add i64 %t44, 1
|
|
call void @finch_arr_reserve(ptr %a9, i64 %t45, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t46 = load ptr, ptr %a9
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t44
|
|
store { ptr, i64, i64 } %t43, ptr %t47
|
|
store i64 %t45, ptr %t18
|
|
br label %for.step4132
|
|
for.step4132:
|
|
%t48 = load i64, ptr %a15
|
|
%t49 = add i64 %t48, 1
|
|
store i64 %t49, ptr %a15
|
|
br label %for.cond4130
|
|
for.end4133:
|
|
%t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2605, i64 1, i64 0 }, ptr %a51
|
|
call void @finch_str_join(ptr %a52, ptr %a9, ptr %a51)
|
|
%t53 = load { ptr, i64, i64 }, ptr %a52
|
|
store { ptr, i64, i64 } %t53, ptr %a55
|
|
store { ptr, i64, i64 } { ptr @.str.2606, i64 1, i64 0 }, ptr %a56
|
|
call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a54
|
|
ret { ptr, i64, i64 } %t57
|
|
}
|
|
|
|
define internal void @finch.copy.arr_S_gen_Scope(ptr %dst, ptr %src) {
|
|
entry:
|
|
%a5 = alloca i64, align 16
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Scope, ptr null, i32 1) to i64))
|
|
%t1 = load ptr, ptr %dst
|
|
%t2 = load ptr, ptr %src
|
|
%t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1
|
|
%t4 = load i64, ptr %t3
|
|
store i64 0, ptr %a5
|
|
br label %n.cond4206
|
|
n.cond4206:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body4207, label %n.end4208
|
|
n.body4207:
|
|
%t8 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds %S.gen.Scope, ptr %t2, i64 %t6
|
|
call void @finch.copy.S_gen_Scope(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond4206
|
|
n.end4208:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.define(ptr %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a16 = alloca %S.gen.FnSig, align 16
|
|
%a17 = alloca %S.gen.FnSig, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca %S.ast.Node, align 16
|
|
%a104 = alloca %S.ast.Node, align 16
|
|
%a106 = alloca %S.ast.Node, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca i64, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca %S.ast.Type, align 16
|
|
%a226 = alloca %S.ast.Type, align 16
|
|
%a227 = alloca %S.ast.Type, align 16
|
|
%a249 = alloca i64, align 16
|
|
%a263 = alloca %S.ast.Type, align 16
|
|
%a264 = alloca %S.ast.Type, align 16
|
|
%a266 = alloca %S.ast.Type, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a382 = alloca { ptr, i64, i64 }, align 16
|
|
%a383 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a391 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a395 = alloca { ptr, i64, i64 }, align 16
|
|
%a396 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a405 = alloca { ptr, i64, i64 }, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a422 = alloca { ptr, i64, i64 }, align 16
|
|
%a423 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a434 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a437 = alloca { ptr, i64, i64 }, align 16
|
|
%a438 = alloca { ptr, i64, i64 }, align 16
|
|
%a453 = alloca { ptr, i64, i64 }, align 16
|
|
%a454 = alloca { ptr, i64, i64 }, align 16
|
|
%a455 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a458 = alloca { ptr, i64, i64 }, align 16
|
|
%a459 = alloca { ptr, i64, i64 }, align 16
|
|
%a466 = alloca { ptr, i64, i64 }, align 16
|
|
%a467 = alloca { ptr, i64, i64 }, align 16
|
|
%a468 = alloca { ptr, i64, i64 }, align 16
|
|
%a470 = alloca { ptr, i64, i64 }, align 16
|
|
%a471 = alloca { ptr, i64, i64 }, align 16
|
|
%a472 = alloca { ptr, i64, i64 }, align 16
|
|
%a475 = alloca { ptr, i64, i64 }, align 16
|
|
%a476 = alloca { ptr, i64, i64 }, align 16
|
|
%a478 = alloca { ptr, i64, i64 }, align 16
|
|
%a479 = alloca { ptr, i64, i64 }, align 16
|
|
%a480 = alloca { ptr, i64, i64 }, align 16
|
|
%a482 = alloca { ptr, i64, i64 }, align 16
|
|
%a483 = alloca { ptr, i64, i64 }, align 16
|
|
%a484 = alloca { ptr, i64, i64 }, align 16
|
|
%a487 = alloca { ptr, i64, i64 }, align 16
|
|
%a488 = alloca { ptr, i64, i64 }, align 16
|
|
%a489 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca { ptr, i64, i64 }, align 16
|
|
%a492 = alloca { ptr, i64, i64 }, align 16
|
|
%a493 = alloca { ptr, i64, i64 }, align 16
|
|
%a499 = alloca { ptr, i64, i64 }, align 16
|
|
%a500 = alloca { ptr, i64, i64 }, align 16
|
|
%a502 = alloca { ptr, i64, i64 }, align 16
|
|
%a503 = alloca { ptr, i64, i64 }, align 16
|
|
%a504 = alloca { ptr, i64, i64 }, align 16
|
|
%a506 = alloca { ptr, i64, i64 }, align 16
|
|
%a507 = alloca { ptr, i64, i64 }, align 16
|
|
%a508 = alloca { ptr, i64, i64 }, align 16
|
|
%a514 = alloca { ptr, i64, i64 }, align 16
|
|
%a515 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a518 = alloca { ptr, i64, i64 }, align 16
|
|
%a519 = alloca { ptr, i64, i64 }, align 16
|
|
%a521 = alloca { ptr, i64, i64 }, align 16
|
|
%a522 = alloca { ptr, i64, i64 }, align 16
|
|
%a523 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic4138, label %ok4139
|
|
panic4138:
|
|
call void @finch_panic(ptr @.str.2607, i64 1810, ptr @.str.2608)
|
|
unreachable
|
|
ok4139:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 14
|
|
%t6 = load i64, ptr %a2
|
|
%t7 = load { ptr, i64, i64 }, ptr %t5
|
|
%t8 = extractvalue { ptr, i64, i64 } %t7, 1
|
|
%t9 = icmp uge i64 %t6, %t8
|
|
br i1 %t9, label %range4140, label %inrange4141
|
|
range4140:
|
|
call void @finch_panic_index(ptr @.str.2609, i64 1810, i64 %t6, i64 %t8)
|
|
unreachable
|
|
inrange4141:
|
|
%t10 = extractvalue { ptr, i64, i64 } %t7, 0
|
|
%t11 = getelementptr inbounds %S.gen.FnSig, ptr %t10, i64 %t6
|
|
%t12 = load %S.gen.FnSig, ptr %t11
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = icmp eq ptr %t13, null
|
|
br i1 %t14, label %panic4142, label %ok4143
|
|
panic4142:
|
|
call void @finch_panic(ptr @.str.2610, i64 1810, ptr @.str.2611)
|
|
unreachable
|
|
ok4143:
|
|
%t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 12
|
|
store %S.gen.FnSig %t12, ptr %a16
|
|
call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16)
|
|
%t18 = load %S.gen.FnSig, ptr %a17
|
|
store %S.gen.FnSig %t18, ptr %t15
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = icmp eq ptr %t19, null
|
|
br i1 %t20, label %panic4144, label %ok4145
|
|
panic4144:
|
|
call void @finch_panic(ptr @.str.2612, i64 1811, ptr @.str.2613)
|
|
unreachable
|
|
ok4145:
|
|
%t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 12
|
|
%t22 = getelementptr inbounds %S.gen.FnSig, ptr %t21, i32 0, i32 0
|
|
%t23 = load { ptr, i64, i64 }, ptr %t22
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = icmp eq ptr %t24, null
|
|
br i1 %t25, label %panic4146, label %ok4147
|
|
panic4146:
|
|
call void @finch_panic(ptr @.str.2614, i64 1811, ptr @.str.2615)
|
|
unreachable
|
|
ok4147:
|
|
%t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t23, ptr %a27
|
|
call void @finch_str_copy(ptr %a28, ptr %a27)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a28
|
|
store { ptr, i64, i64 } %t29, ptr %t26
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = icmp eq ptr %t30, null
|
|
br i1 %t31, label %panic4148, label %ok4149
|
|
panic4148:
|
|
call void @finch_panic(ptr @.str.2616, i64 1812, ptr @.str.2617)
|
|
unreachable
|
|
ok4149:
|
|
%t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 12
|
|
%t33 = getelementptr inbounds %S.gen.FnSig, ptr %t32, i32 0, i32 6
|
|
%t34 = load { ptr, i64, i64 }, ptr %t33
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = icmp eq ptr %t35, null
|
|
br i1 %t36, label %panic4150, label %ok4151
|
|
panic4150:
|
|
call void @finch_panic(ptr @.str.2618, i64 1812, ptr @.str.2619)
|
|
unreachable
|
|
ok4151:
|
|
%t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 17
|
|
store { ptr, i64, i64 } %t34, ptr %a38
|
|
call void @finch.copy.arr_str(ptr %a39, ptr %a38)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a39
|
|
store { ptr, i64, i64 } %t40, ptr %t37
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = icmp eq ptr %t41, null
|
|
br i1 %t42, label %panic4152, label %ok4153
|
|
panic4152:
|
|
call void @finch_panic(ptr @.str.2620, i64 1813, ptr @.str.2621)
|
|
unreachable
|
|
ok4153:
|
|
%t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 12
|
|
%t44 = getelementptr inbounds %S.gen.FnSig, ptr %t43, i32 0, i32 7
|
|
%t45 = load { ptr, i64, i64 }, ptr %t44
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = icmp eq ptr %t46, null
|
|
br i1 %t47, label %panic4154, label %ok4155
|
|
panic4154:
|
|
call void @finch_panic(ptr @.str.2622, i64 1813, ptr @.str.2623)
|
|
unreachable
|
|
ok4155:
|
|
%t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 18
|
|
store { ptr, i64, i64 } %t45, ptr %a49
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a50, ptr %a49)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a50
|
|
store { ptr, i64, i64 } %t51, ptr %t48
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = icmp eq ptr %t52, null
|
|
br i1 %t53, label %panic4156, label %ok4157
|
|
panic4156:
|
|
call void @finch_panic(ptr @.str.2625, i64 1814, ptr @.str.2626)
|
|
unreachable
|
|
ok4157:
|
|
%t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19
|
|
store { ptr, i64, i64 } { ptr @.str.2624, i64 0, i64 0 }, ptr %t54
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = icmp eq ptr %t55, null
|
|
br i1 %t56, label %panic4158, label %ok4159
|
|
panic4158:
|
|
call void @finch_panic(ptr @.str.2627, i64 1815, ptr @.str.2628)
|
|
unreachable
|
|
ok4159:
|
|
%t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 12
|
|
%t58 = getelementptr inbounds %S.gen.FnSig, ptr %t57, i32 0, i32 7
|
|
%t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i32 0, i32 1
|
|
%t60 = load i64, ptr %t59
|
|
%t61 = icmp sgt i64 %t60, 0
|
|
br i1 %t61, label %then4160, label %endif4162
|
|
then4160:
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = icmp eq ptr %t62, null
|
|
br i1 %t63, label %panic4163, label %ok4164
|
|
panic4163:
|
|
call void @finch_panic(ptr @.str.2630, i64 1816, ptr @.str.2631)
|
|
unreachable
|
|
ok4164:
|
|
%t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 12
|
|
%t65 = getelementptr inbounds %S.gen.FnSig, ptr %t64, i32 0, i32 8
|
|
%t66 = load { ptr, i64, i64 }, ptr %t65
|
|
store { ptr, i64, i64 } { ptr @.str.2629, i64 17, i64 0 }, ptr %a68
|
|
store { ptr, i64, i64 } %t66, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t70, ptr %a72
|
|
store { ptr, i64, i64 } { ptr @.str.2632, i64 1, i64 0 }, ptr %a73
|
|
call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73)
|
|
%t74 = load { ptr, i64, i64 }, ptr %a71
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = icmp eq ptr %t75, null
|
|
br i1 %t76, label %panic4165, label %ok4166
|
|
panic4165:
|
|
call void @finch_panic(ptr @.str.2633, i64 1816, ptr @.str.2634)
|
|
unreachable
|
|
ok4166:
|
|
%t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 19
|
|
store { ptr, i64, i64 } %t74, ptr %t77
|
|
br label %endif4162
|
|
endif4162:
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = icmp eq ptr %t78, null
|
|
br i1 %t79, label %panic4167, label %ok4168
|
|
panic4167:
|
|
call void @finch_panic(ptr @.str.2635, i64 1818, ptr @.str.2636)
|
|
unreachable
|
|
ok4168:
|
|
%t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 0
|
|
%t81 = load ptr, ptr %a1
|
|
%t82 = icmp eq ptr %t81, null
|
|
br i1 %t82, label %panic4169, label %ok4170
|
|
panic4169:
|
|
call void @finch_panic(ptr @.str.2637, i64 1818, ptr @.str.2638)
|
|
unreachable
|
|
ok4170:
|
|
%t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 12
|
|
%t84 = getelementptr inbounds %S.gen.FnSig, ptr %t83, i32 0, i32 16
|
|
%t85 = load i64, ptr %t84
|
|
%t86 = load { ptr, i64, i64 }, ptr %t80
|
|
%t87 = extractvalue { ptr, i64, i64 } %t86, 1
|
|
%t88 = icmp uge i64 %t85, %t87
|
|
br i1 %t88, label %range4171, label %inrange4172
|
|
range4171:
|
|
call void @finch_panic_index(ptr @.str.2639, i64 1818, i64 %t85, i64 %t87)
|
|
unreachable
|
|
inrange4172:
|
|
%t89 = extractvalue { ptr, i64, i64 } %t86, 0
|
|
%t90 = getelementptr inbounds %S.ast.Program, ptr %t89, i64 %t85
|
|
%t91 = getelementptr inbounds %S.ast.Program, ptr %t90, i32 0, i32 8
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = icmp eq ptr %t92, null
|
|
br i1 %t93, label %panic4173, label %ok4174
|
|
panic4173:
|
|
call void @finch_panic(ptr @.str.2640, i64 1818, ptr @.str.2641)
|
|
unreachable
|
|
ok4174:
|
|
%t94 = getelementptr inbounds %S.gen.Gen, ptr %t92, i32 0, i32 12
|
|
%t95 = getelementptr inbounds %S.gen.FnSig, ptr %t94, i32 0, i32 17
|
|
%t96 = load i64, ptr %t95
|
|
%t97 = load { ptr, i64, i64 }, ptr %t91
|
|
%t98 = extractvalue { ptr, i64, i64 } %t97, 1
|
|
%t99 = icmp uge i64 %t96, %t98
|
|
br i1 %t99, label %range4175, label %inrange4176
|
|
range4175:
|
|
call void @finch_panic_index(ptr @.str.2642, i64 1818, i64 %t96, i64 %t98)
|
|
unreachable
|
|
inrange4176:
|
|
%t100 = extractvalue { ptr, i64, i64 } %t97, 0
|
|
%t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t96
|
|
%t102 = load %S.ast.Node, ptr %t101
|
|
store %S.ast.Node %t102, ptr %a103
|
|
call void @finch.copy.S_ast_Node(ptr %a104, ptr %a103)
|
|
%t105 = load %S.ast.Node, ptr %a104
|
|
store %S.ast.Node %t105, ptr %a106
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a107
|
|
%t108 = load { ptr, i64, i64 }, ptr %a107
|
|
%t109 = load ptr, ptr %a1
|
|
%t110 = icmp eq ptr %t109, null
|
|
br i1 %t110, label %panic4177, label %ok4178
|
|
panic4177:
|
|
call void @finch_panic(ptr @.str.2643, i64 1820, ptr @.str.2644)
|
|
unreachable
|
|
ok4178:
|
|
%t111 = getelementptr inbounds %S.gen.Gen, ptr %t109, i32 0, i32 4
|
|
store { ptr, i64, i64 } %t108, ptr %a112
|
|
call void @finch.copy.arr_str(ptr %a113, ptr %a112)
|
|
%t114 = load { ptr, i64, i64 }, ptr %a113
|
|
store { ptr, i64, i64 } %t114, ptr %t111
|
|
%t115 = load { ptr, i64, i64 }, ptr %a107
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = icmp eq ptr %t116, null
|
|
br i1 %t117, label %panic4179, label %ok4180
|
|
panic4179:
|
|
call void @finch_panic(ptr @.str.2645, i64 1821, ptr @.str.2646)
|
|
unreachable
|
|
ok4180:
|
|
%t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 5
|
|
store { ptr, i64, i64 } %t115, ptr %a119
|
|
call void @finch.copy.arr_str(ptr %a120, ptr %a119)
|
|
%t121 = load { ptr, i64, i64 }, ptr %a120
|
|
store { ptr, i64, i64 } %t121, ptr %t118
|
|
%t122 = load ptr, ptr %a1
|
|
%t123 = icmp eq ptr %t122, null
|
|
br i1 %t123, label %panic4181, label %ok4182
|
|
panic4181:
|
|
call void @finch_panic(ptr @.str.2647, i64 1822, ptr @.str.2648)
|
|
unreachable
|
|
ok4182:
|
|
%t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 6
|
|
store i64 0, ptr %t124
|
|
%t125 = load ptr, ptr %a1
|
|
%t126 = icmp eq ptr %t125, null
|
|
br i1 %t126, label %panic4183, label %ok4184
|
|
panic4183:
|
|
call void @finch_panic(ptr @.str.2649, i64 1823, ptr @.str.2650)
|
|
unreachable
|
|
ok4184:
|
|
%t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 9
|
|
store i1 false, ptr %t127
|
|
%t128 = load ptr, ptr %a1
|
|
%t129 = icmp eq ptr %t128, null
|
|
br i1 %t129, label %panic4185, label %ok4186
|
|
panic4185:
|
|
call void @finch_panic(ptr @.str.2651, i64 1824, ptr @.str.2652)
|
|
unreachable
|
|
ok4186:
|
|
%t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 23
|
|
store i64 0, ptr %t130
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = icmp eq ptr %t131, null
|
|
br i1 %t132, label %panic4187, label %ok4188
|
|
panic4187:
|
|
call void @finch_panic(ptr @.str.2653, i64 1825, ptr @.str.2654)
|
|
unreachable
|
|
ok4188:
|
|
%t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 32
|
|
store i64 -1, ptr %t133
|
|
store i64 -1, ptr %a134
|
|
%t135 = load ptr, ptr %a1
|
|
%t136 = icmp eq ptr %t135, null
|
|
br i1 %t136, label %panic4189, label %ok4190
|
|
panic4189:
|
|
call void @finch_panic(ptr @.str.2655, i64 1827, ptr @.str.2656)
|
|
unreachable
|
|
ok4190:
|
|
%t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 26
|
|
%t138 = load i1, ptr %t137
|
|
br i1 %t138, label %then4191, label %endif4193
|
|
then4191:
|
|
%t139 = load ptr, ptr %a1
|
|
%t140 = load %S.ast.Node, ptr %a106
|
|
%t141 = call i64 @finch.gen.dbgSubprogram(ptr %t139, %S.ast.Node %t140)
|
|
store i64 %t141, ptr %a134
|
|
%t142 = load i64, ptr %a134
|
|
%t143 = load ptr, ptr %a1
|
|
%t144 = icmp eq ptr %t143, null
|
|
br i1 %t144, label %panic4194, label %ok4195
|
|
panic4194:
|
|
call void @finch_panic(ptr @.str.2657, i64 1829, ptr @.str.2658)
|
|
unreachable
|
|
ok4195:
|
|
%t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 32
|
|
store i64 %t142, ptr %t145
|
|
%t146 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 11
|
|
%t147 = load i64, ptr %t146
|
|
%t148 = load ptr, ptr %a1
|
|
%t149 = icmp eq ptr %t148, null
|
|
br i1 %t149, label %panic4196, label %ok4197
|
|
panic4196:
|
|
call void @finch_panic(ptr @.str.2659, i64 1830, ptr @.str.2660)
|
|
unreachable
|
|
ok4197:
|
|
%t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 33
|
|
store i64 %t147, ptr %t150
|
|
%t151 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 12
|
|
%t152 = load i64, ptr %t151
|
|
%t153 = load ptr, ptr %a1
|
|
%t154 = icmp eq ptr %t153, null
|
|
br i1 %t154, label %panic4198, label %ok4199
|
|
panic4198:
|
|
call void @finch_panic(ptr @.str.2661, i64 1831, ptr @.str.2662)
|
|
unreachable
|
|
ok4199:
|
|
%t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 34
|
|
store i64 %t152, ptr %t155
|
|
br label %endif4193
|
|
endif4193:
|
|
%t156 = load ptr, ptr %a1
|
|
%t157 = icmp eq ptr %t156, null
|
|
br i1 %t157, label %panic4200, label %ok4201
|
|
panic4200:
|
|
call void @finch_panic(ptr @.str.2663, i64 1833, ptr @.str.2664)
|
|
unreachable
|
|
ok4201:
|
|
%t158 = getelementptr inbounds %S.gen.Gen, ptr %t156, i32 0, i32 40
|
|
store i1 false, ptr %t158
|
|
%t159 = load ptr, ptr %a1
|
|
%t160 = icmp eq ptr %t159, null
|
|
br i1 %t160, label %panic4202, label %ok4203
|
|
panic4202:
|
|
call void @finch_panic(ptr @.str.2665, i64 1834, ptr @.str.2666)
|
|
unreachable
|
|
ok4203:
|
|
%t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 42
|
|
store i64 0, ptr %t161
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a162
|
|
%t163 = load { ptr, i64, i64 }, ptr %a162
|
|
%t164 = load ptr, ptr %a1
|
|
%t165 = icmp eq ptr %t164, null
|
|
br i1 %t165, label %panic4204, label %ok4205
|
|
panic4204:
|
|
call void @finch_panic(ptr @.str.2667, i64 1836, ptr @.str.2668)
|
|
unreachable
|
|
ok4205:
|
|
%t166 = getelementptr inbounds %S.gen.Gen, ptr %t164, i32 0, i32 10
|
|
store { ptr, i64, i64 } %t163, ptr %a167
|
|
call void @finch.copy.arr_S_gen_Scope(ptr %a168, ptr %a167)
|
|
%t169 = load { ptr, i64, i64 }, ptr %a168
|
|
store { ptr, i64, i64 } %t169, ptr %t166
|
|
%t170 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t170)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a171
|
|
%t172 = load ptr, ptr %a1
|
|
%t173 = icmp eq ptr %t172, null
|
|
br i1 %t173, label %panic4209, label %ok4210
|
|
panic4209:
|
|
call void @finch_panic(ptr @.str.2669, i64 1839, ptr @.str.2670)
|
|
unreachable
|
|
ok4210:
|
|
%t174 = getelementptr inbounds %S.gen.Gen, ptr %t172, i32 0, i32 12
|
|
%t175 = getelementptr inbounds %S.gen.FnSig, ptr %t174, i32 0, i32 2
|
|
%t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1
|
|
%t177 = load i64, ptr %t176
|
|
%t178 = icmp sgt i64 %t177, 0
|
|
br i1 %t178, label %then4211, label %endif4213
|
|
then4211:
|
|
%t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %a171, i32 0, i32 1
|
|
%t180 = load i64, ptr %t179
|
|
%t181 = add i64 %t180, 1
|
|
call void @finch_arr_reserve(ptr %a171, i64 %t181, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t182 = load ptr, ptr %a171
|
|
%t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t180
|
|
store { ptr, i64, i64 } { ptr @.str.2671, i64 9, i64 0 }, ptr %t183
|
|
store i64 %t181, ptr %t179
|
|
store { ptr, i64, i64 } { ptr @.str.2672, i64 6, i64 0 }, ptr %a184
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = icmp eq ptr %t185, null
|
|
br i1 %t186, label %panic4214, label %ok4215
|
|
panic4214:
|
|
call void @finch_panic(ptr @.str.2673, i64 1843, ptr @.str.2674)
|
|
unreachable
|
|
ok4215:
|
|
%t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 12
|
|
%t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i32 0, i32 4
|
|
%t189 = load i1, ptr %t188
|
|
br i1 %t189, label %then4216, label %endif4218
|
|
then4216:
|
|
store { ptr, i64, i64 } { ptr @.str.2675, i64 4, i64 0 }, ptr %a184
|
|
br label %endif4218
|
|
endif4218:
|
|
%t190 = load { ptr, i64, i64 }, ptr %a184
|
|
store { ptr, i64, i64 } %t190, ptr %a191
|
|
call void @finch_str_copy(ptr %a192, ptr %a191)
|
|
%t193 = load { ptr, i64, i64 }, ptr %a192
|
|
%t194 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t193, 0
|
|
%t195 = load ptr, ptr %a1
|
|
%t196 = icmp eq ptr %t195, null
|
|
br i1 %t196, label %panic4219, label %ok4220
|
|
panic4219:
|
|
call void @finch_panic(ptr @.str.2676, i64 1846, ptr @.str.2677)
|
|
unreachable
|
|
ok4220:
|
|
%t197 = getelementptr inbounds %S.gen.Gen, ptr %t195, i32 0, i32 12
|
|
%t198 = getelementptr inbounds %S.gen.FnSig, ptr %t197, i32 0, i32 2
|
|
%t199 = load { ptr, i64, i64 }, ptr %t198
|
|
store { ptr, i64, i64 } %t199, ptr %a200
|
|
call void @finch_str_copy(ptr %a201, ptr %a200)
|
|
%t202 = load { ptr, i64, i64 }, ptr %a201
|
|
%t203 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t202, 2
|
|
%t204 = load ptr, ptr %a1
|
|
%t205 = icmp eq ptr %t204, null
|
|
br i1 %t205, label %panic4221, label %ok4222
|
|
panic4221:
|
|
call void @finch_panic(ptr @.str.2678, i64 1846, ptr @.str.2679)
|
|
unreachable
|
|
ok4222:
|
|
%t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 12
|
|
%t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 3
|
|
%t208 = load { ptr, i64, i64 }, ptr %t207
|
|
store { ptr, i64, i64 } %t208, ptr %a209
|
|
call void @finch_str_copy(ptr %a210, ptr %a209)
|
|
%t211 = load { ptr, i64, i64 }, ptr %a210
|
|
%t212 = insertvalue %S.ast.Type %t203, { ptr, i64, i64 } %t211, 3
|
|
store %S.ast.Type %t212, ptr %a213
|
|
%t214 = load ptr, ptr %a1
|
|
%t215 = icmp eq ptr %t214, null
|
|
br i1 %t215, label %panic4223, label %ok4224
|
|
panic4223:
|
|
call void @finch_panic(ptr @.str.2680, i64 1847, ptr @.str.2681)
|
|
unreachable
|
|
ok4224:
|
|
%t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 10
|
|
%t217 = load { ptr, i64, i64 }, ptr %t216
|
|
%t218 = extractvalue { ptr, i64, i64 } %t217, 1
|
|
%t219 = icmp uge i64 0, %t218
|
|
br i1 %t219, label %range4225, label %inrange4226
|
|
range4225:
|
|
call void @finch_panic_index(ptr @.str.2682, i64 1847, i64 0, i64 %t218)
|
|
unreachable
|
|
inrange4226:
|
|
%t220 = extractvalue { ptr, i64, i64 } %t217, 0
|
|
%t221 = getelementptr inbounds %S.gen.Scope, ptr %t220, i64 0
|
|
%t222 = getelementptr inbounds %S.gen.Scope, ptr %t221, i32 0, i32 0
|
|
%t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i32 0, i32 1
|
|
%t224 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.2683, i64 4, i64 0 }, 0
|
|
%t225 = load %S.ast.Type, ptr %a213
|
|
store %S.ast.Type %t225, ptr %a226
|
|
call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226)
|
|
%t228 = load %S.ast.Type, ptr %a227
|
|
%t229 = insertvalue %S.gen.Var %t224, %S.ast.Type %t228, 1
|
|
%t230 = insertvalue %S.gen.Var %t229, { ptr, i64, i64 } { ptr @.str.2684, i64 5, i64 0 }, 2
|
|
%t231 = insertvalue %S.gen.Var %t230, i1 false, 3
|
|
%t232 = load i64, ptr %t223
|
|
%t233 = add i64 %t232, 1
|
|
call void @finch_arr_reserve(ptr %t222, i64 %t233, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64))
|
|
%t234 = load ptr, ptr %t222
|
|
%t235 = getelementptr inbounds %S.gen.Var, ptr %t234, i64 %t232
|
|
store %S.gen.Var %t231, ptr %t235
|
|
store i64 %t233, ptr %t223
|
|
%t236 = load ptr, ptr %a1
|
|
%t237 = icmp eq ptr %t236, null
|
|
br i1 %t237, label %panic4227, label %ok4228
|
|
panic4227:
|
|
call void @finch_panic(ptr @.str.2685, i64 1848, ptr @.str.2686)
|
|
unreachable
|
|
ok4228:
|
|
%t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 26
|
|
%t239 = load i1, ptr %t238
|
|
br i1 %t239, label %then4229, label %endif4231
|
|
then4229:
|
|
%t240 = load ptr, ptr %a1
|
|
%t241 = load %S.ast.Node, ptr %a106
|
|
%t242 = load %S.ast.Type, ptr %a213
|
|
call void @finch.gen.dbgVariable(ptr %t240, %S.ast.Node %t241, { ptr, i64, i64 } { ptr @.str.2687, i64 4, i64 0 }, %S.ast.Type %t242, { ptr, i64, i64 } { ptr @.str.2688, i64 5, i64 0 })
|
|
br label %endif4231
|
|
endif4231:
|
|
br label %endif4213
|
|
endif4213:
|
|
%t243 = load ptr, ptr %a1
|
|
%t244 = icmp eq ptr %t243, null
|
|
br i1 %t244, label %panic4232, label %ok4233
|
|
panic4232:
|
|
call void @finch_panic(ptr @.str.2689, i64 1853, ptr @.str.2690)
|
|
unreachable
|
|
ok4233:
|
|
%t245 = getelementptr inbounds %S.gen.Gen, ptr %t243, i32 0, i32 12
|
|
%t246 = getelementptr inbounds %S.gen.FnSig, ptr %t245, i32 0, i32 13
|
|
%t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1
|
|
%t248 = load i64, ptr %t247
|
|
store i64 0, ptr %a249
|
|
br label %for.cond4234
|
|
for.cond4234:
|
|
%t250 = load i64, ptr %a249
|
|
%t251 = icmp slt i64 %t250, %t248
|
|
br i1 %t251, label %for.body4235, label %for.end4237
|
|
for.body4235:
|
|
%t252 = load ptr, ptr %a1
|
|
%t253 = icmp eq ptr %t252, null
|
|
br i1 %t253, label %panic4238, label %ok4239
|
|
panic4238:
|
|
call void @finch_panic(ptr @.str.2691, i64 1854, ptr @.str.2692)
|
|
unreachable
|
|
ok4239:
|
|
%t254 = getelementptr inbounds %S.gen.Gen, ptr %t252, i32 0, i32 12
|
|
%t255 = getelementptr inbounds %S.gen.FnSig, ptr %t254, i32 0, i32 13
|
|
%t256 = load i64, ptr %a249
|
|
%t257 = load { ptr, i64, i64 }, ptr %t255
|
|
%t258 = extractvalue { ptr, i64, i64 } %t257, 1
|
|
%t259 = icmp uge i64 %t256, %t258
|
|
br i1 %t259, label %range4240, label %inrange4241
|
|
range4240:
|
|
call void @finch_panic_index(ptr @.str.2693, i64 1854, i64 %t256, i64 %t258)
|
|
unreachable
|
|
inrange4241:
|
|
%t260 = extractvalue { ptr, i64, i64 } %t257, 0
|
|
%t261 = getelementptr inbounds %S.ast.Type, ptr %t260, i64 %t256
|
|
%t262 = load %S.ast.Type, ptr %t261
|
|
store %S.ast.Type %t262, ptr %a263
|
|
call void @finch.copy.S_ast_Type(ptr %a264, ptr %a263)
|
|
%t265 = load %S.ast.Type, ptr %a264
|
|
store %S.ast.Type %t265, ptr %a266
|
|
%t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %a171, i32 0, i32 1
|
|
%t268 = load ptr, ptr %a1
|
|
%t269 = load %S.ast.Type, ptr %a266
|
|
%t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269)
|
|
store { ptr, i64, i64 } %t270, ptr %a272
|
|
store { ptr, i64, i64 } { ptr @.str.2694, i64 3, i64 0 }, ptr %a273
|
|
call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273)
|
|
%t274 = load { ptr, i64, i64 }, ptr %a271
|
|
%t275 = load i64, ptr %a249
|
|
call void @finch_str_from_int(ptr %a276, i64 %t275)
|
|
%t277 = load { ptr, i64, i64 }, ptr %a276
|
|
store { ptr, i64, i64 } %t274, ptr %a279
|
|
store { ptr, i64, i64 } %t277, ptr %a280
|
|
call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280)
|
|
%t281 = load { ptr, i64, i64 }, ptr %a278
|
|
%t282 = load i64, ptr %t267
|
|
%t283 = add i64 %t282, 1
|
|
call void @finch_arr_reserve(ptr %a171, i64 %t283, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t284 = load ptr, ptr %a171
|
|
%t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 %t282
|
|
store { ptr, i64, i64 } %t281, ptr %t285
|
|
store i64 %t283, ptr %t267
|
|
%t286 = load i64, ptr %a249
|
|
call void @finch_str_from_int(ptr %a287, i64 %t286)
|
|
%t288 = load { ptr, i64, i64 }, ptr %a287
|
|
store { ptr, i64, i64 } { ptr @.str.2695, i64 2, i64 0 }, ptr %a290
|
|
store { ptr, i64, i64 } %t288, ptr %a291
|
|
call void @finch_str_concat(ptr %a289, ptr %a290, ptr %a291)
|
|
%t292 = load { ptr, i64, i64 }, ptr %a289
|
|
store { ptr, i64, i64 } %t292, ptr %a293
|
|
%t294 = load ptr, ptr %a1
|
|
%t295 = load %S.ast.Type, ptr %a266
|
|
%t296 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t295)
|
|
br label %logic.from4242
|
|
logic.from4242:
|
|
br i1 %t296, label %logic.rhs4243, label %logic.end4244
|
|
logic.rhs4243:
|
|
%t297 = load ptr, ptr %a1
|
|
%t298 = icmp eq ptr %t297, null
|
|
br i1 %t298, label %panic4245, label %ok4246
|
|
panic4245:
|
|
call void @finch_panic(ptr @.str.2696, i64 1857, ptr @.str.2697)
|
|
unreachable
|
|
ok4246:
|
|
%t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 12
|
|
%t300 = getelementptr inbounds %S.gen.FnSig, ptr %t299, i32 0, i32 15
|
|
%t301 = load i64, ptr %a249
|
|
%t302 = load { ptr, i64, i64 }, ptr %t300
|
|
%t303 = extractvalue { ptr, i64, i64 } %t302, 1
|
|
%t304 = icmp uge i64 %t301, %t303
|
|
br i1 %t304, label %range4247, label %inrange4248
|
|
range4247:
|
|
call void @finch_panic_index(ptr @.str.2698, i64 1857, i64 %t301, i64 %t303)
|
|
unreachable
|
|
inrange4248:
|
|
%t305 = extractvalue { ptr, i64, i64 } %t302, 0
|
|
%t306 = getelementptr inbounds i1, ptr %t305, i64 %t301
|
|
%t307 = load i1, ptr %t306
|
|
%t308 = xor i1 %t307, true
|
|
br label %logic.rend4249
|
|
logic.rend4249:
|
|
br label %logic.end4244
|
|
logic.end4244:
|
|
%t309 = phi i1 [ false, %logic.from4242 ], [ %t308, %logic.rend4249 ]
|
|
br i1 %t309, label %then4250, label %endif4252
|
|
then4250:
|
|
%t310 = load ptr, ptr %a1
|
|
%t311 = load { ptr, i64, i64 }, ptr %a293
|
|
%t312 = load %S.ast.Type, ptr %a266
|
|
%t313 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t310, { ptr, i64, i64 } %t311, %S.ast.Type %t312)
|
|
store { ptr, i64, i64 } %t313, ptr %a293
|
|
br label %endif4252
|
|
endif4252:
|
|
%t314 = load i64, ptr %a249
|
|
%t315 = add i64 %t314, 1
|
|
%t316 = load ptr, ptr %a1
|
|
%t317 = icmp eq ptr %t316, null
|
|
br i1 %t317, label %panic4253, label %ok4254
|
|
panic4253:
|
|
call void @finch_panic(ptr @.str.2699, i64 1860, ptr @.str.2700)
|
|
unreachable
|
|
ok4254:
|
|
%t318 = getelementptr inbounds %S.gen.Gen, ptr %t316, i32 0, i32 35
|
|
store i64 %t315, ptr %t318
|
|
%t319 = load ptr, ptr %a1
|
|
%t320 = icmp eq ptr %t319, null
|
|
br i1 %t320, label %panic4255, label %ok4256
|
|
panic4255:
|
|
call void @finch_panic(ptr @.str.2701, i64 1861, ptr @.str.2702)
|
|
unreachable
|
|
ok4256:
|
|
%t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 12
|
|
%t322 = getelementptr inbounds %S.gen.FnSig, ptr %t321, i32 0, i32 2
|
|
%t323 = getelementptr inbounds { ptr, i64, i64 }, ptr %t322, i32 0, i32 1
|
|
%t324 = load i64, ptr %t323
|
|
%t325 = icmp sgt i64 %t324, 0
|
|
br i1 %t325, label %then4257, label %endif4259
|
|
then4257:
|
|
%t326 = load i64, ptr %a249
|
|
%t327 = add i64 %t326, 2
|
|
%t328 = load ptr, ptr %a1
|
|
%t329 = icmp eq ptr %t328, null
|
|
br i1 %t329, label %panic4260, label %ok4261
|
|
panic4260:
|
|
call void @finch_panic(ptr @.str.2703, i64 1862, ptr @.str.2704)
|
|
unreachable
|
|
ok4261:
|
|
%t330 = getelementptr inbounds %S.gen.Gen, ptr %t328, i32 0, i32 35
|
|
store i64 %t327, ptr %t330
|
|
br label %endif4259
|
|
endif4259:
|
|
%t331 = load ptr, ptr %a1
|
|
%t332 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 9
|
|
%t333 = load i64, ptr %a249
|
|
%t334 = load { ptr, i64, i64 }, ptr %t332
|
|
%t335 = extractvalue { ptr, i64, i64 } %t334, 1
|
|
%t336 = icmp uge i64 %t333, %t335
|
|
br i1 %t336, label %range4262, label %inrange4263
|
|
range4262:
|
|
call void @finch_panic_index(ptr @.str.2705, i64 1864, i64 %t333, i64 %t335)
|
|
unreachable
|
|
inrange4263:
|
|
%t337 = extractvalue { ptr, i64, i64 } %t334, 0
|
|
%t338 = getelementptr inbounds %S.ast.Node, ptr %t337, i64 %t333
|
|
%t339 = load %S.ast.Node, ptr %t338
|
|
%t340 = load ptr, ptr %a1
|
|
%t341 = icmp eq ptr %t340, null
|
|
br i1 %t341, label %panic4264, label %ok4265
|
|
panic4264:
|
|
call void @finch_panic(ptr @.str.2706, i64 1864, ptr @.str.2707)
|
|
unreachable
|
|
ok4265:
|
|
%t342 = getelementptr inbounds %S.gen.Gen, ptr %t340, i32 0, i32 12
|
|
%t343 = getelementptr inbounds %S.gen.FnSig, ptr %t342, i32 0, i32 14
|
|
%t344 = load i64, ptr %a249
|
|
%t345 = load { ptr, i64, i64 }, ptr %t343
|
|
%t346 = extractvalue { ptr, i64, i64 } %t345, 1
|
|
%t347 = icmp uge i64 %t344, %t346
|
|
br i1 %t347, label %range4266, label %inrange4267
|
|
range4266:
|
|
call void @finch_panic_index(ptr @.str.2708, i64 1864, i64 %t344, i64 %t346)
|
|
unreachable
|
|
inrange4267:
|
|
%t348 = extractvalue { ptr, i64, i64 } %t345, 0
|
|
%t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i64 %t344
|
|
%t350 = load { ptr, i64, i64 }, ptr %t349
|
|
%t351 = load %S.ast.Type, ptr %a266
|
|
%t352 = load { ptr, i64, i64 }, ptr %a293
|
|
%t353 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t331, %S.ast.Node %t339, { ptr, i64, i64 } %t350, %S.ast.Type %t351, { ptr, i64, i64 } %t352, i1 false)
|
|
%t354 = load ptr, ptr %a1
|
|
%t355 = icmp eq ptr %t354, null
|
|
br i1 %t355, label %panic4268, label %ok4269
|
|
panic4268:
|
|
call void @finch_panic(ptr @.str.2709, i64 1865, ptr @.str.2710)
|
|
unreachable
|
|
ok4269:
|
|
%t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 35
|
|
store i64 0, ptr %t356
|
|
br label %for.step4236
|
|
for.step4236:
|
|
%t357 = load i64, ptr %a249
|
|
%t358 = add i64 %t357, 1
|
|
store i64 %t358, ptr %a249
|
|
br label %for.cond4234
|
|
for.end4237:
|
|
%t359 = load ptr, ptr %a1
|
|
%t360 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 9
|
|
%t361 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 9
|
|
%t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1
|
|
%t363 = load i64, ptr %t362
|
|
%t364 = sub i64 %t363, 1
|
|
%t365 = load { ptr, i64, i64 }, ptr %t360
|
|
%t366 = extractvalue { ptr, i64, i64 } %t365, 1
|
|
%t367 = icmp uge i64 %t364, %t366
|
|
br i1 %t367, label %range4270, label %inrange4271
|
|
range4270:
|
|
call void @finch_panic_index(ptr @.str.2711, i64 1867, i64 %t364, i64 %t366)
|
|
unreachable
|
|
inrange4271:
|
|
%t368 = extractvalue { ptr, i64, i64 } %t365, 0
|
|
%t369 = getelementptr inbounds %S.ast.Node, ptr %t368, i64 %t364
|
|
%t370 = load %S.ast.Node, ptr %t369
|
|
call void @finch.gen.block(ptr %t359, %S.ast.Node %t370, i1 false)
|
|
%t371 = load ptr, ptr %a1
|
|
%t372 = icmp eq ptr %t371, null
|
|
br i1 %t372, label %panic4272, label %ok4273
|
|
panic4272:
|
|
call void @finch_panic(ptr @.str.2712, i64 1868, ptr @.str.2713)
|
|
unreachable
|
|
ok4273:
|
|
%t373 = getelementptr inbounds %S.gen.Gen, ptr %t371, i32 0, i32 9
|
|
%t374 = load i1, ptr %t373
|
|
%t375 = xor i1 %t374, true
|
|
br i1 %t375, label %then4274, label %endif4276
|
|
then4274:
|
|
%t376 = load ptr, ptr %a1
|
|
%t377 = icmp eq ptr %t376, null
|
|
br i1 %t377, label %panic4277, label %ok4278
|
|
panic4277:
|
|
call void @finch_panic(ptr @.str.2714, i64 1869, ptr @.str.2715)
|
|
unreachable
|
|
ok4278:
|
|
%t378 = getelementptr inbounds %S.gen.Gen, ptr %t376, i32 0, i32 12
|
|
%t379 = getelementptr inbounds %S.gen.FnSig, ptr %t378, i32 0, i32 12
|
|
%t380 = getelementptr inbounds %S.ast.Type, ptr %t379, i32 0, i32 0
|
|
%t381 = load { ptr, i64, i64 }, ptr %t380
|
|
store { ptr, i64, i64 } %t381, ptr %a382
|
|
store { ptr, i64, i64 } { ptr @.str.2716, i64 4, i64 0 }, ptr %a383
|
|
%t384 = call i32 @finch_str_eq(ptr %a382, ptr %a383)
|
|
%t385 = icmp eq i32 %t384, 0
|
|
br i1 %t385, label %then4279, label %endif4281
|
|
then4279:
|
|
%t386 = load ptr, ptr %a1
|
|
%t387 = load %S.ast.Node, ptr %a106
|
|
%t388 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 1
|
|
%t389 = load { ptr, i64, i64 }, ptr %t388
|
|
store { ptr, i64, i64 } { ptr @.str.2717, i64 10, i64 0 }, ptr %a391
|
|
store { ptr, i64, i64 } %t389, ptr %a392
|
|
call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392)
|
|
%t393 = load { ptr, i64, i64 }, ptr %a390
|
|
store { ptr, i64, i64 } %t393, ptr %a395
|
|
store { ptr, i64, i64 } { ptr @.str.2718, i64 38, i64 0 }, ptr %a396
|
|
call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396)
|
|
%t397 = load { ptr, i64, i64 }, ptr %a394
|
|
%t398 = load ptr, ptr %a1
|
|
%t399 = icmp eq ptr %t398, null
|
|
br i1 %t399, label %panic4282, label %ok4283
|
|
panic4282:
|
|
call void @finch_panic(ptr @.str.2719, i64 1870, ptr @.str.2720)
|
|
unreachable
|
|
ok4283:
|
|
%t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 12
|
|
%t401 = getelementptr inbounds %S.gen.FnSig, ptr %t400, i32 0, i32 12
|
|
%t402 = load %S.ast.Type, ptr %t401
|
|
%t403 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t402)
|
|
store { ptr, i64, i64 } %t397, ptr %a405
|
|
store { ptr, i64, i64 } %t403, ptr %a406
|
|
call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406)
|
|
%t407 = load { ptr, i64, i64 }, ptr %a404
|
|
call void @finch.gen.fail(ptr %t386, %S.ast.Node %t387, { ptr, i64, i64 } %t407)
|
|
br label %endif4281
|
|
endif4281:
|
|
%t408 = load ptr, ptr %a1
|
|
call void @finch.gen.runDefers(ptr %t408, i64 0)
|
|
%t409 = load ptr, ptr %a1
|
|
%t410 = icmp eq ptr %t409, null
|
|
br i1 %t410, label %panic4284, label %ok4285
|
|
panic4284:
|
|
call void @finch_panic(ptr @.str.2721, i64 1873, ptr @.str.2722)
|
|
unreachable
|
|
ok4285:
|
|
%t411 = getelementptr inbounds %S.gen.Gen, ptr %t409, i32 0, i32 12
|
|
%t412 = getelementptr inbounds %S.gen.FnSig, ptr %t411, i32 0, i32 9
|
|
%t413 = load i1, ptr %t412
|
|
br i1 %t413, label %then4286, label %else4287
|
|
then4286:
|
|
%t414 = load ptr, ptr %a1
|
|
%t415 = load ptr, ptr %a1
|
|
%t416 = load ptr, ptr %a1
|
|
%t417 = icmp eq ptr %t416, null
|
|
br i1 %t417, label %panic4289, label %ok4290
|
|
panic4289:
|
|
call void @finch_panic(ptr @.str.2724, i64 1874, ptr @.str.2725)
|
|
unreachable
|
|
ok4290:
|
|
%t418 = getelementptr inbounds %S.gen.Gen, ptr %t416, i32 0, i32 12
|
|
%t419 = load %S.gen.FnSig, ptr %t418
|
|
%t420 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t415, %S.gen.FnSig %t419)
|
|
store { ptr, i64, i64 } { ptr @.str.2723, i64 4, i64 0 }, ptr %a422
|
|
store { ptr, i64, i64 } %t420, ptr %a423
|
|
call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423)
|
|
%t424 = load { ptr, i64, i64 }, ptr %a421
|
|
store { ptr, i64, i64 } %t424, ptr %a426
|
|
store { ptr, i64, i64 } { ptr @.str.2726, i64 53, i64 0 }, ptr %a427
|
|
call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427)
|
|
%t428 = load { ptr, i64, i64 }, ptr %a425
|
|
call void @finch.gen.emit(ptr %t414, { ptr, i64, i64 } %t428)
|
|
br label %endif4288
|
|
else4287:
|
|
%t429 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t429, { ptr, i64, i64 } { ptr @.str.2727, i64 8, i64 0 })
|
|
br label %endif4288
|
|
endif4288:
|
|
br label %endif4276
|
|
endif4276:
|
|
store { ptr, i64, i64 } { ptr @.str.2728, i64 0, i64 0 }, ptr %a430
|
|
%t431 = load i64, ptr %a134
|
|
%t432 = icmp sge i64 %t431, 0
|
|
br i1 %t432, label %then4291, label %endif4293
|
|
then4291:
|
|
%t433 = load i64, ptr %a134
|
|
call void @finch_str_from_int(ptr %a434, i64 %t433)
|
|
%t435 = load { ptr, i64, i64 }, ptr %a434
|
|
store { ptr, i64, i64 } { ptr @.str.2729, i64 7, i64 0 }, ptr %a437
|
|
store { ptr, i64, i64 } %t435, ptr %a438
|
|
call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438)
|
|
%t439 = load { ptr, i64, i64 }, ptr %a436
|
|
store { ptr, i64, i64 } %t439, ptr %a430
|
|
br label %endif4293
|
|
endif4293:
|
|
%t440 = load ptr, ptr %a1
|
|
%t441 = icmp eq ptr %t440, null
|
|
br i1 %t441, label %panic4294, label %ok4295
|
|
panic4294:
|
|
call void @finch_panic(ptr @.str.2730, i64 1883, ptr @.str.2731)
|
|
unreachable
|
|
ok4295:
|
|
%t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 32
|
|
store i64 -1, ptr %t442
|
|
%t443 = load ptr, ptr %a1
|
|
%t444 = icmp eq ptr %t443, null
|
|
br i1 %t444, label %panic4296, label %ok4297
|
|
panic4296:
|
|
call void @finch_panic(ptr @.str.2732, i64 1884, ptr @.str.2733)
|
|
unreachable
|
|
ok4297:
|
|
%t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 3
|
|
%t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i32 0, i32 1
|
|
%t447 = load ptr, ptr %a1
|
|
%t448 = load ptr, ptr %a1
|
|
%t449 = icmp eq ptr %t448, null
|
|
br i1 %t449, label %panic4298, label %ok4299
|
|
panic4298:
|
|
call void @finch_panic(ptr @.str.2735, i64 1884, ptr @.str.2736)
|
|
unreachable
|
|
ok4299:
|
|
%t450 = getelementptr inbounds %S.gen.Gen, ptr %t448, i32 0, i32 12
|
|
%t451 = load %S.gen.FnSig, ptr %t450
|
|
%t452 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t447, %S.gen.FnSig %t451)
|
|
store { ptr, i64, i64 } { ptr @.str.2734, i64 16, i64 0 }, ptr %a454
|
|
store { ptr, i64, i64 } %t452, ptr %a455
|
|
call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455)
|
|
%t456 = load { ptr, i64, i64 }, ptr %a453
|
|
store { ptr, i64, i64 } %t456, ptr %a458
|
|
store { ptr, i64, i64 } { ptr @.str.2737, i64 1, i64 0 }, ptr %a459
|
|
call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459)
|
|
%t460 = load { ptr, i64, i64 }, ptr %a457
|
|
%t461 = load ptr, ptr %a1
|
|
%t462 = icmp eq ptr %t461, null
|
|
br i1 %t462, label %panic4300, label %ok4301
|
|
panic4300:
|
|
call void @finch_panic(ptr @.str.2738, i64 1884, ptr @.str.2739)
|
|
unreachable
|
|
ok4301:
|
|
%t463 = getelementptr inbounds %S.gen.Gen, ptr %t461, i32 0, i32 12
|
|
%t464 = getelementptr inbounds %S.gen.FnSig, ptr %t463, i32 0, i32 11
|
|
%t465 = load { ptr, i64, i64 }, ptr %t464
|
|
store { ptr, i64, i64 } %t460, ptr %a467
|
|
store { ptr, i64, i64 } %t465, ptr %a468
|
|
call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468)
|
|
%t469 = load { ptr, i64, i64 }, ptr %a466
|
|
store { ptr, i64, i64 } %t469, ptr %a471
|
|
store { ptr, i64, i64 } { ptr @.str.2740, i64 1, i64 0 }, ptr %a472
|
|
call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472)
|
|
%t473 = load { ptr, i64, i64 }, ptr %a470
|
|
%t474 = getelementptr inbounds { ptr, i64, i64 }, ptr %a171, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2741, i64 2, i64 0 }, ptr %a475
|
|
call void @finch_str_join(ptr %a476, ptr %a171, ptr %a475)
|
|
%t477 = load { ptr, i64, i64 }, ptr %a476
|
|
store { ptr, i64, i64 } %t473, ptr %a479
|
|
store { ptr, i64, i64 } %t477, ptr %a480
|
|
call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480)
|
|
%t481 = load { ptr, i64, i64 }, ptr %a478
|
|
store { ptr, i64, i64 } %t481, ptr %a483
|
|
store { ptr, i64, i64 } { ptr @.str.2742, i64 1, i64 0 }, ptr %a484
|
|
call void @finch_str_concat(ptr %a482, ptr %a483, ptr %a484)
|
|
%t485 = load { ptr, i64, i64 }, ptr %a482
|
|
%t486 = load { ptr, i64, i64 }, ptr %a430
|
|
store { ptr, i64, i64 } %t485, ptr %a488
|
|
store { ptr, i64, i64 } %t486, ptr %a489
|
|
call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489)
|
|
%t490 = load { ptr, i64, i64 }, ptr %a487
|
|
store { ptr, i64, i64 } %t490, ptr %a492
|
|
store { ptr, i64, i64 } { ptr @.str.2743, i64 10, i64 0 }, ptr %a493
|
|
call void @finch_str_concat(ptr %a491, ptr %a492, ptr %a493)
|
|
%t494 = load { ptr, i64, i64 }, ptr %a491
|
|
%t495 = load ptr, ptr %a1
|
|
%t496 = icmp eq ptr %t495, null
|
|
br i1 %t496, label %panic4302, label %ok4303
|
|
panic4302:
|
|
call void @finch_panic(ptr @.str.2744, i64 1885, ptr @.str.2745)
|
|
unreachable
|
|
ok4303:
|
|
%t497 = getelementptr inbounds %S.gen.Gen, ptr %t495, i32 0, i32 5
|
|
%t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2746, i64 1, i64 0 }, ptr %a499
|
|
call void @finch_str_join(ptr %a500, ptr %t497, ptr %a499)
|
|
%t501 = load { ptr, i64, i64 }, ptr %a500
|
|
store { ptr, i64, i64 } %t494, ptr %a503
|
|
store { ptr, i64, i64 } %t501, ptr %a504
|
|
call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504)
|
|
%t505 = load { ptr, i64, i64 }, ptr %a502
|
|
store { ptr, i64, i64 } %t505, ptr %a507
|
|
store { ptr, i64, i64 } { ptr @.str.2747, i64 1, i64 0 }, ptr %a508
|
|
call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508)
|
|
%t509 = load { ptr, i64, i64 }, ptr %a506
|
|
%t510 = load ptr, ptr %a1
|
|
%t511 = icmp eq ptr %t510, null
|
|
br i1 %t511, label %panic4304, label %ok4305
|
|
panic4304:
|
|
call void @finch_panic(ptr @.str.2748, i64 1885, ptr @.str.2749)
|
|
unreachable
|
|
ok4305:
|
|
%t512 = getelementptr inbounds %S.gen.Gen, ptr %t510, i32 0, i32 4
|
|
%t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.2750, i64 1, i64 0 }, ptr %a514
|
|
call void @finch_str_join(ptr %a515, ptr %t512, ptr %a514)
|
|
%t516 = load { ptr, i64, i64 }, ptr %a515
|
|
store { ptr, i64, i64 } %t509, ptr %a518
|
|
store { ptr, i64, i64 } %t516, ptr %a519
|
|
call void @finch_str_concat(ptr %a517, ptr %a518, ptr %a519)
|
|
%t520 = load { ptr, i64, i64 }, ptr %a517
|
|
store { ptr, i64, i64 } %t520, ptr %a522
|
|
store { ptr, i64, i64 } { ptr @.str.2751, i64 3, i64 0 }, ptr %a523
|
|
call void @finch_str_concat(ptr %a521, ptr %a522, ptr %a523)
|
|
%t524 = load { ptr, i64, i64 }, ptr %a521
|
|
%t525 = load i64, ptr %t446
|
|
%t526 = add i64 %t525, 1
|
|
call void @finch_arr_reserve(ptr %t445, i64 %t526, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t527 = load ptr, ptr %t445
|
|
%t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t527, i64 %t525
|
|
store { ptr, i64, i64 } %t524, ptr %t528
|
|
store i64 %t526, ptr %t446
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.block(ptr %p0, %S.ast.Node %p1, i1 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i1, align 16
|
|
%a7 = alloca i64, align 16
|
|
%a15 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i1 %p2, ptr %a3
|
|
%t4 = load i1, ptr %a3
|
|
br i1 %t4, label %then4306, label %endif4308
|
|
then4306:
|
|
%t5 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t5)
|
|
br label %endif4308
|
|
endif4308:
|
|
%t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
store i64 0, ptr %a7
|
|
br label %each.cond4309
|
|
each.cond4309:
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1
|
|
%t9 = load i64, ptr %t8
|
|
%t10 = load i64, ptr %a7
|
|
%t11 = icmp slt i64 %t10, %t9
|
|
br i1 %t11, label %each.body4310, label %each.end4312
|
|
each.body4310:
|
|
%t12 = load ptr, ptr %t6
|
|
%t13 = getelementptr inbounds %S.ast.Node, ptr %t12, i64 %t10
|
|
%t14 = load %S.ast.Node, ptr %t13
|
|
store %S.ast.Node %t14, ptr %a15
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = icmp eq ptr %t16, null
|
|
br i1 %t17, label %panic4313, label %ok4314
|
|
panic4313:
|
|
call void @finch_panic(ptr @.str.2752, i64 1895, ptr @.str.2753)
|
|
unreachable
|
|
ok4314:
|
|
%t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9
|
|
%t19 = load i1, ptr %t18
|
|
br i1 %t19, label %then4315, label %endif4317
|
|
then4315:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = load %S.ast.Node, ptr %a15
|
|
call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } { ptr @.str.2754, i64 66, i64 0 })
|
|
br label %endif4317
|
|
endif4317:
|
|
%t22 = load ptr, ptr %a1
|
|
%t23 = load %S.ast.Node, ptr %a15
|
|
call void @finch.gen.stmt(ptr %t22, %S.ast.Node %t23)
|
|
br label %each.step4311
|
|
each.step4311:
|
|
%t24 = load i64, ptr %a7
|
|
%t25 = add i64 %t24, 1
|
|
store i64 %t25, ptr %a7
|
|
br label %each.cond4309
|
|
each.end4312:
|
|
%t26 = load i1, ptr %a3
|
|
br i1 %t26, label %then4318, label %endif4320
|
|
then4318:
|
|
%t27 = load ptr, ptr %a1
|
|
call void @finch.gen.endScope(ptr %t27)
|
|
br label %endif4320
|
|
endif4320:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Loop(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Loop, ptr %src
|
|
store %S.gen.Loop %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Loop, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Loop, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Loop, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Loop, ptr %src, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca i64, align 16
|
|
%a155 = alloca %S.ast.Node, align 16
|
|
%a156 = alloca %S.ast.Node, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca %S.gen.Loop, align 16
|
|
%a233 = alloca %S.gen.Loop, align 16
|
|
%a235 = alloca %S.gen.Loop, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t4 = load i64, ptr %t3
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = icmp eq ptr %t5, null
|
|
br i1 %t6, label %panic4321, label %ok4322
|
|
panic4321:
|
|
call void @finch_panic(ptr @.str.2755, i64 1906, ptr @.str.2756)
|
|
unreachable
|
|
ok4322:
|
|
%t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 33
|
|
store i64 %t4, ptr %t7
|
|
%t8 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12
|
|
%t9 = load i64, ptr %t8
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = icmp eq ptr %t10, null
|
|
br i1 %t11, label %panic4323, label %ok4324
|
|
panic4323:
|
|
call void @finch_panic(ptr @.str.2757, i64 1907, ptr @.str.2758)
|
|
unreachable
|
|
ok4324:
|
|
%t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 34
|
|
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.2759, i64 5, i64 0 }, ptr %a21
|
|
%t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21)
|
|
%t23 = icmp ne i32 %t22, 0
|
|
br i1 %t23, label %then4325, label %else4326
|
|
then4325:
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.block(ptr %t24, %S.ast.Node %t25, i1 true)
|
|
br label %endif4327
|
|
else4326:
|
|
%t26 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t26, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.2760, i64 4, i64 0 }, ptr %a28
|
|
%t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28)
|
|
%t30 = icmp ne i32 %t29, 0
|
|
br i1 %t30, label %then4328, label %else4329
|
|
then4328:
|
|
%t31 = load ptr, ptr %a1
|
|
%t32 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.declStmt(ptr %t31, %S.ast.Node %t32)
|
|
br label %endif4330
|
|
else4329:
|
|
%t33 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t33, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.2761, i64 6, i64 0 }, ptr %a35
|
|
%t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35)
|
|
%t37 = icmp ne i32 %t36, 0
|
|
br i1 %t37, label %then4331, label %else4332
|
|
then4331:
|
|
%t38 = load ptr, ptr %a1
|
|
%t39 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.assignStmt(ptr %t38, %S.ast.Node %t39)
|
|
br label %endif4333
|
|
else4332:
|
|
%t40 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t40, ptr %a41
|
|
store { ptr, i64, i64 } { ptr @.str.2762, i64 4, i64 0 }, ptr %a42
|
|
%t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42)
|
|
%t44 = icmp ne i32 %t43, 0
|
|
br i1 %t44, label %then4334, label %else4335
|
|
then4334:
|
|
%t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t46 = load { ptr, i64, i64 }, ptr %t45
|
|
%t47 = extractvalue { ptr, i64, i64 } %t46, 1
|
|
%t48 = icmp uge i64 0, %t47
|
|
br i1 %t48, label %range4337, label %inrange4338
|
|
range4337:
|
|
call void @finch_panic_index(ptr @.str.2763, i64 1916, i64 0, i64 %t47)
|
|
unreachable
|
|
inrange4338:
|
|
%t49 = extractvalue { ptr, i64, i64 } %t46, 0
|
|
%t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 0
|
|
%t51 = getelementptr inbounds %S.ast.Node, ptr %t50, i32 0, i32 0
|
|
%t52 = load { ptr, i64, i64 }, ptr %t51
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.2764, i64 2, i64 0 }, ptr %a54
|
|
%t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54)
|
|
%t56 = icmp ne i32 %t55, 0
|
|
br i1 %t56, label %then4339, label %else4340
|
|
then4339:
|
|
%t57 = load ptr, ptr %a1
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t59 = load { ptr, i64, i64 }, ptr %t58
|
|
%t60 = extractvalue { ptr, i64, i64 } %t59, 1
|
|
%t61 = icmp uge i64 0, %t60
|
|
br i1 %t61, label %range4342, label %inrange4343
|
|
range4342:
|
|
call void @finch_panic_index(ptr @.str.2765, i64 1917, i64 0, i64 %t60)
|
|
unreachable
|
|
inrange4343:
|
|
%t62 = extractvalue { ptr, i64, i64 } %t59, 0
|
|
%t63 = getelementptr inbounds %S.ast.Node, ptr %t62, i64 0
|
|
%t64 = load %S.ast.Node, ptr %t63
|
|
%t65 = call %S.gen.Val @finch.gen.orElse(ptr %t57, %S.ast.Node %t64, i1 true)
|
|
br label %endif4341
|
|
else4340:
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t68 = load { ptr, i64, i64 }, ptr %t67
|
|
%t69 = extractvalue { ptr, i64, i64 } %t68, 1
|
|
%t70 = icmp uge i64 0, %t69
|
|
br i1 %t70, label %range4344, label %inrange4345
|
|
range4344:
|
|
call void @finch_panic_index(ptr @.str.2766, i64 1919, i64 0, i64 %t69)
|
|
unreachable
|
|
inrange4345:
|
|
%t71 = extractvalue { ptr, i64, i64 } %t68, 0
|
|
%t72 = getelementptr inbounds %S.ast.Node, ptr %t71, i64 0
|
|
%t73 = load %S.ast.Node, ptr %t72
|
|
%t74 = call %S.gen.Val @finch.gen.expr(ptr %t66, %S.ast.Node %t73)
|
|
br label %endif4341
|
|
endif4341:
|
|
br label %endif4336
|
|
else4335:
|
|
%t75 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.2767, i64 5, i64 0 }, ptr %a77
|
|
%t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77)
|
|
%t79 = icmp ne i32 %t78, 0
|
|
br i1 %t79, label %then4346, label %else4347
|
|
then4346:
|
|
%t80 = load ptr, ptr %a1
|
|
%t81 = load %S.ast.Node, ptr %a2
|
|
%t82 = call %S.gen.Val @finch.gen.matchGen(ptr %t80, %S.ast.Node %t81, i1 false)
|
|
br label %endif4348
|
|
else4347:
|
|
%t83 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t83, ptr %a84
|
|
store { ptr, i64, i64 } { ptr @.str.2768, i64 2, i64 0 }, ptr %a85
|
|
%t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85)
|
|
%t87 = icmp ne i32 %t86, 0
|
|
br i1 %t87, label %then4349, label %else4350
|
|
then4349:
|
|
%t88 = load ptr, ptr %a1
|
|
%t89 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.ifStmt(ptr %t88, %S.ast.Node %t89)
|
|
br label %endif4351
|
|
else4350:
|
|
%t90 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t90, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.2769, i64 5, i64 0 }, ptr %a92
|
|
%t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92)
|
|
%t94 = icmp ne i32 %t93, 0
|
|
br i1 %t94, label %then4352, label %else4353
|
|
then4352:
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.whileStmt(ptr %t95, %S.ast.Node %t96)
|
|
br label %endif4354
|
|
else4353:
|
|
%t97 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t97, ptr %a98
|
|
store { ptr, i64, i64 } { ptr @.str.2770, i64 3, i64 0 }, ptr %a99
|
|
%t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99)
|
|
%t101 = icmp ne i32 %t100, 0
|
|
br i1 %t101, label %then4355, label %else4356
|
|
then4355:
|
|
%t102 = load ptr, ptr %a1
|
|
%t103 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.forStmt(ptr %t102, %S.ast.Node %t103)
|
|
br label %endif4357
|
|
else4356:
|
|
%t104 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t104, ptr %a105
|
|
store { ptr, i64, i64 } { ptr @.str.2771, i64 4, i64 0 }, ptr %a106
|
|
%t107 = call i32 @finch_str_eq(ptr %a105, ptr %a106)
|
|
%t108 = icmp ne i32 %t107, 0
|
|
br i1 %t108, label %then4358, label %else4359
|
|
then4358:
|
|
%t109 = load ptr, ptr %a1
|
|
%t110 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.eachStmt(ptr %t109, %S.ast.Node %t110)
|
|
br label %endif4360
|
|
else4359:
|
|
%t111 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t111, ptr %a112
|
|
store { ptr, i64, i64 } { ptr @.str.2772, i64 6, i64 0 }, ptr %a113
|
|
%t114 = call i32 @finch_str_eq(ptr %a112, ptr %a113)
|
|
%t115 = icmp ne i32 %t114, 0
|
|
br i1 %t115, label %then4361, label %else4362
|
|
then4361:
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.returnStmt(ptr %t116, %S.ast.Node %t117)
|
|
br label %endif4363
|
|
else4362:
|
|
%t118 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t118, ptr %a119
|
|
store { ptr, i64, i64 } { ptr @.str.2773, i64 5, i64 0 }, ptr %a120
|
|
%t121 = call i32 @finch_str_eq(ptr %a119, ptr %a120)
|
|
%t122 = icmp ne i32 %t121, 0
|
|
br i1 %t122, label %then4364, label %else4365
|
|
then4364:
|
|
%t123 = load ptr, ptr %a1
|
|
%t124 = icmp eq ptr %t123, null
|
|
br i1 %t124, label %panic4367, label %ok4368
|
|
panic4367:
|
|
call void @finch_panic(ptr @.str.2774, i64 1934, ptr @.str.2775)
|
|
unreachable
|
|
ok4368:
|
|
%t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 42
|
|
%t126 = load i64, ptr %t125
|
|
%t127 = icmp sgt i64 %t126, 0
|
|
br i1 %t127, label %then4369, label %endif4371
|
|
then4369:
|
|
%t128 = load ptr, ptr %a1
|
|
%t129 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t128, %S.ast.Node %t129, { ptr, i64, i64 } { ptr @.str.2776, i64 33, i64 0 })
|
|
br label %endif4371
|
|
endif4371:
|
|
%t130 = load ptr, ptr %a1
|
|
%t131 = icmp eq ptr %t130, null
|
|
br i1 %t131, label %panic4372, label %ok4373
|
|
panic4372:
|
|
call void @finch_panic(ptr @.str.2777, i64 1937, ptr @.str.2778)
|
|
unreachable
|
|
ok4373:
|
|
%t132 = getelementptr inbounds %S.gen.Gen, ptr %t130, i32 0, i32 10
|
|
%t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t132, i32 0, i32 1
|
|
%t134 = load i64, ptr %t133
|
|
%t135 = sub i64 %t134, 1
|
|
store i64 %t135, ptr %a136
|
|
%t137 = load ptr, ptr %a1
|
|
%t138 = icmp eq ptr %t137, null
|
|
br i1 %t138, label %panic4374, label %ok4375
|
|
panic4374:
|
|
call void @finch_panic(ptr @.str.2779, i64 1938, ptr @.str.2780)
|
|
unreachable
|
|
ok4375:
|
|
%t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 10
|
|
%t140 = load i64, ptr %a136
|
|
%t141 = load { ptr, i64, i64 }, ptr %t139
|
|
%t142 = extractvalue { ptr, i64, i64 } %t141, 1
|
|
%t143 = icmp uge i64 %t140, %t142
|
|
br i1 %t143, label %range4376, label %inrange4377
|
|
range4376:
|
|
call void @finch_panic_index(ptr @.str.2781, i64 1938, i64 %t140, i64 %t142)
|
|
unreachable
|
|
inrange4377:
|
|
%t144 = extractvalue { ptr, i64, i64 } %t141, 0
|
|
%t145 = getelementptr inbounds %S.gen.Scope, ptr %t144, i64 %t140
|
|
%t146 = getelementptr inbounds %S.gen.Scope, ptr %t145, i32 0, i32 1
|
|
%t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1
|
|
%t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t149 = load { ptr, i64, i64 }, ptr %t148
|
|
%t150 = extractvalue { ptr, i64, i64 } %t149, 1
|
|
%t151 = icmp uge i64 0, %t150
|
|
br i1 %t151, label %range4378, label %inrange4379
|
|
range4378:
|
|
call void @finch_panic_index(ptr @.str.2782, i64 1938, i64 0, i64 %t150)
|
|
unreachable
|
|
inrange4379:
|
|
%t152 = extractvalue { ptr, i64, i64 } %t149, 0
|
|
%t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 0
|
|
%t154 = load %S.ast.Node, ptr %t153
|
|
store %S.ast.Node %t154, ptr %a155
|
|
call void @finch.copy.S_ast_Node(ptr %a156, ptr %a155)
|
|
%t157 = load %S.ast.Node, ptr %a156
|
|
%t158 = load i64, ptr %t147
|
|
%t159 = add i64 %t158, 1
|
|
call void @finch_arr_reserve(ptr %t146, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t160 = load ptr, ptr %t146
|
|
%t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158
|
|
store %S.ast.Node %t157, ptr %t161
|
|
store i64 %t159, ptr %t147
|
|
%t162 = load ptr, ptr %a1
|
|
%t163 = icmp eq ptr %t162, null
|
|
br i1 %t163, label %panic4380, label %ok4381
|
|
panic4380:
|
|
call void @finch_panic(ptr @.str.2783, i64 1939, ptr @.str.2784)
|
|
unreachable
|
|
ok4381:
|
|
%t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 10
|
|
%t165 = load i64, ptr %a136
|
|
%t166 = load { ptr, i64, i64 }, ptr %t164
|
|
%t167 = extractvalue { ptr, i64, i64 } %t166, 1
|
|
%t168 = icmp uge i64 %t165, %t167
|
|
br i1 %t168, label %range4382, label %inrange4383
|
|
range4382:
|
|
call void @finch_panic_index(ptr @.str.2785, i64 1939, i64 %t165, i64 %t167)
|
|
unreachable
|
|
inrange4383:
|
|
%t169 = extractvalue { ptr, i64, i64 } %t166, 0
|
|
%t170 = getelementptr inbounds %S.gen.Scope, ptr %t169, i64 %t165
|
|
%t171 = getelementptr inbounds %S.gen.Scope, ptr %t170, i32 0, i32 2
|
|
%t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1
|
|
%t173 = load ptr, ptr %a1
|
|
%t174 = icmp eq ptr %t173, null
|
|
br i1 %t174, label %panic4384, label %ok4385
|
|
panic4384:
|
|
call void @finch_panic(ptr @.str.2786, i64 1939, ptr @.str.2787)
|
|
unreachable
|
|
ok4385:
|
|
%t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 23
|
|
%t176 = load i64, ptr %t175
|
|
%t177 = load i64, ptr %t172
|
|
%t178 = add i64 %t177, 1
|
|
call void @finch_arr_reserve(ptr %t171, i64 %t178, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64))
|
|
%t179 = load ptr, ptr %t171
|
|
%t180 = getelementptr inbounds i64, ptr %t179, i64 %t177
|
|
store i64 %t176, ptr %t180
|
|
store i64 %t178, ptr %t172
|
|
br label %endif4366
|
|
else4365:
|
|
%t181 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t181, ptr %a182
|
|
store { ptr, i64, i64 } { ptr @.str.2788, i64 5, i64 0 }, ptr %a183
|
|
%t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183)
|
|
%t185 = icmp ne i32 %t184, 0
|
|
br label %logic.from4386
|
|
logic.from4386:
|
|
br i1 %t185, label %logic.end4388, label %logic.rhs4387
|
|
logic.rhs4387:
|
|
%t186 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t186, ptr %a187
|
|
store { ptr, i64, i64 } { ptr @.str.2789, i64 8, i64 0 }, ptr %a188
|
|
%t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188)
|
|
%t190 = icmp ne i32 %t189, 0
|
|
br label %logic.rend4389
|
|
logic.rend4389:
|
|
br label %logic.end4388
|
|
logic.end4388:
|
|
%t191 = phi i1 [ true, %logic.from4386 ], [ %t190, %logic.rend4389 ]
|
|
br i1 %t191, label %then4390, label %else4391
|
|
then4390:
|
|
%t192 = load ptr, ptr %a1
|
|
%t193 = icmp eq ptr %t192, null
|
|
br i1 %t193, label %panic4393, label %ok4394
|
|
panic4393:
|
|
call void @finch_panic(ptr @.str.2790, i64 1941, ptr @.str.2791)
|
|
unreachable
|
|
ok4394:
|
|
%t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 42
|
|
%t195 = load i64, ptr %t194
|
|
%t196 = icmp sgt i64 %t195, 0
|
|
br i1 %t196, label %then4395, label %endif4397
|
|
then4395:
|
|
%t197 = load ptr, ptr %a1
|
|
%t198 = load %S.ast.Node, ptr %a2
|
|
%t199 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t199, ptr %a201
|
|
store { ptr, i64, i64 } { ptr @.str.2792, i64 27, i64 0 }, ptr %a202
|
|
call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202)
|
|
%t203 = load { ptr, i64, i64 }, ptr %a200
|
|
call void @finch.gen.fail(ptr %t197, %S.ast.Node %t198, { ptr, i64, i64 } %t203)
|
|
br label %endif4397
|
|
endif4397:
|
|
%t204 = load ptr, ptr %a1
|
|
%t205 = icmp eq ptr %t204, null
|
|
br i1 %t205, label %panic4398, label %ok4399
|
|
panic4398:
|
|
call void @finch_panic(ptr @.str.2793, i64 1944, ptr @.str.2794)
|
|
unreachable
|
|
ok4399:
|
|
%t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 11
|
|
%t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1
|
|
%t208 = load i64, ptr %t207
|
|
%t209 = icmp eq i64 %t208, 0
|
|
br i1 %t209, label %then4400, label %endif4402
|
|
then4400:
|
|
%t210 = load ptr, ptr %a1
|
|
%t211 = load %S.ast.Node, ptr %a2
|
|
%t212 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t212, ptr %a214
|
|
store { ptr, i64, i64 } { ptr @.str.2795, i64 31, i64 0 }, ptr %a215
|
|
call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215)
|
|
%t216 = load { ptr, i64, i64 }, ptr %a213
|
|
call void @finch.gen.fail(ptr %t210, %S.ast.Node %t211, { ptr, i64, i64 } %t216)
|
|
br label %endif4402
|
|
endif4402:
|
|
%t217 = load ptr, ptr %a1
|
|
%t218 = icmp eq ptr %t217, null
|
|
br i1 %t218, label %panic4403, label %ok4404
|
|
panic4403:
|
|
call void @finch_panic(ptr @.str.2796, i64 1947, ptr @.str.2797)
|
|
unreachable
|
|
ok4404:
|
|
%t219 = getelementptr inbounds %S.gen.Gen, ptr %t217, i32 0, i32 11
|
|
%t220 = load ptr, ptr %a1
|
|
%t221 = icmp eq ptr %t220, null
|
|
br i1 %t221, label %panic4405, label %ok4406
|
|
panic4405:
|
|
call void @finch_panic(ptr @.str.2798, i64 1947, ptr @.str.2799)
|
|
unreachable
|
|
ok4406:
|
|
%t222 = getelementptr inbounds %S.gen.Gen, ptr %t220, i32 0, i32 11
|
|
%t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i32 0, i32 1
|
|
%t224 = load i64, ptr %t223
|
|
%t225 = sub i64 %t224, 1
|
|
%t226 = load { ptr, i64, i64 }, ptr %t219
|
|
%t227 = extractvalue { ptr, i64, i64 } %t226, 1
|
|
%t228 = icmp uge i64 %t225, %t227
|
|
br i1 %t228, label %range4407, label %inrange4408
|
|
range4407:
|
|
call void @finch_panic_index(ptr @.str.2800, i64 1947, i64 %t225, i64 %t227)
|
|
unreachable
|
|
inrange4408:
|
|
%t229 = extractvalue { ptr, i64, i64 } %t226, 0
|
|
%t230 = getelementptr inbounds %S.gen.Loop, ptr %t229, i64 %t225
|
|
%t231 = load %S.gen.Loop, ptr %t230
|
|
store %S.gen.Loop %t231, ptr %a232
|
|
call void @finch.copy.S_gen_Loop(ptr %a233, ptr %a232)
|
|
%t234 = load %S.gen.Loop, ptr %a233
|
|
store %S.gen.Loop %t234, ptr %a235
|
|
%t236 = load ptr, ptr %a1
|
|
%t237 = getelementptr inbounds %S.gen.Loop, ptr %a235, i32 0, i32 2
|
|
%t238 = load i64, ptr %t237
|
|
call void @finch.gen.unwind(ptr %t236, i64 %t238)
|
|
%t239 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t239, ptr %a240
|
|
store { ptr, i64, i64 } { ptr @.str.2801, i64 5, i64 0 }, ptr %a241
|
|
%t242 = call i32 @finch_str_eq(ptr %a240, ptr %a241)
|
|
%t243 = icmp ne i32 %t242, 0
|
|
br i1 %t243, label %then4409, label %else4410
|
|
then4409:
|
|
%t244 = load ptr, ptr %a1
|
|
%t245 = getelementptr inbounds %S.gen.Loop, ptr %a235, i32 0, i32 1
|
|
%t246 = load { ptr, i64, i64 }, ptr %t245
|
|
call void @finch.gen.br(ptr %t244, { ptr, i64, i64 } %t246)
|
|
br label %endif4411
|
|
else4410:
|
|
%t247 = load ptr, ptr %a1
|
|
%t248 = getelementptr inbounds %S.gen.Loop, ptr %a235, i32 0, i32 0
|
|
%t249 = load { ptr, i64, i64 }, ptr %t248
|
|
call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t249)
|
|
br label %endif4411
|
|
endif4411:
|
|
br label %endif4392
|
|
else4391:
|
|
%t250 = load ptr, ptr %a1
|
|
%t251 = load %S.ast.Node, ptr %a2
|
|
%t252 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.2802, i64 18, i64 0 }, ptr %a254
|
|
store { ptr, i64, i64 } %t252, ptr %a255
|
|
call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255)
|
|
%t256 = load { ptr, i64, i64 }, ptr %a253
|
|
call void @finch.gen.fail(ptr %t250, %S.ast.Node %t251, { ptr, i64, i64 } %t256)
|
|
br label %endif4392
|
|
endif4392:
|
|
br label %endif4366
|
|
endif4366:
|
|
br label %endif4363
|
|
endif4363:
|
|
br label %endif4360
|
|
endif4360:
|
|
br label %endif4357
|
|
endif4357:
|
|
br label %endif4354
|
|
endif4354:
|
|
br label %endif4351
|
|
endif4351:
|
|
br label %endif4348
|
|
endif4348:
|
|
br label %endif4336
|
|
endif4336:
|
|
br label %endif4333
|
|
endif4333:
|
|
br label %endif4330
|
|
endif4330:
|
|
br label %endif4327
|
|
endif4327:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.declStmt(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a15 = alloca %S.gen.Val, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca %S.ast.Type, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca %S.gen.Val, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6
|
|
%t4 = load i1, ptr %t3
|
|
%t5 = xor i1 %t4, true
|
|
br i1 %t5, label %then4412, label %endif4414
|
|
then4412:
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t8 = load { ptr, i64, i64 }, ptr %t7
|
|
%t9 = extractvalue { ptr, i64, i64 } %t8, 1
|
|
%t10 = icmp uge i64 0, %t9
|
|
br i1 %t10, label %range4415, label %inrange4416
|
|
range4415:
|
|
call void @finch_panic_index(ptr @.str.2803, i64 1961, i64 0, i64 %t9)
|
|
unreachable
|
|
inrange4416:
|
|
%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.2804, i64 4, i64 0 }, ptr %a20
|
|
%t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20)
|
|
%t22 = icmp ne i32 %t21, 0
|
|
br i1 %t22, label %then4417, label %endif4419
|
|
then4417:
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t25 = load { ptr, i64, i64 }, ptr %t24
|
|
%t26 = extractvalue { ptr, i64, i64 } %t25, 1
|
|
%t27 = icmp uge i64 0, %t26
|
|
br i1 %t27, label %range4420, label %inrange4421
|
|
range4420:
|
|
call void @finch_panic_index(ptr @.str.2805, i64 1963, i64 0, i64 %t26)
|
|
unreachable
|
|
inrange4421:
|
|
%t28 = extractvalue { ptr, i64, i64 } %t25, 0
|
|
%t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0
|
|
%t30 = load %S.ast.Node, ptr %t29
|
|
call void @finch.gen.fail(ptr %t23, %S.ast.Node %t30, { ptr, i64, i64 } { ptr @.str.2806, i64 46, i64 0 })
|
|
br label %endif4419
|
|
endif4419:
|
|
%t31 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1
|
|
%t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i32 0, i32 0
|
|
%t33 = load { ptr, i64, i64 }, ptr %t32
|
|
store { ptr, i64, i64 } %t33, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.2807, i64 4, i64 0 }, ptr %a35
|
|
%t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35)
|
|
%t37 = icmp ne i32 %t36, 0
|
|
br i1 %t37, label %then4422, label %endif4424
|
|
then4422:
|
|
%t38 = load ptr, ptr %a1
|
|
%t39 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t40 = load { ptr, i64, i64 }, ptr %t39
|
|
%t41 = extractvalue { ptr, i64, i64 } %t40, 1
|
|
%t42 = icmp uge i64 0, %t41
|
|
br i1 %t42, label %range4425, label %inrange4426
|
|
range4425:
|
|
call void @finch_panic_index(ptr @.str.2808, i64 1966, i64 0, i64 %t41)
|
|
unreachable
|
|
inrange4426:
|
|
%t43 = extractvalue { ptr, i64, i64 } %t40, 0
|
|
%t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 0
|
|
%t45 = load %S.ast.Node, ptr %t44
|
|
%t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t47 = load { ptr, i64, i64 }, ptr %t46
|
|
store { ptr, i64, i64 } { ptr @.str.2809, i64 34, i64 0 }, ptr %a49
|
|
store { ptr, i64, i64 } %t47, ptr %a50
|
|
call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a48
|
|
store { ptr, i64, i64 } %t51, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.2810, i64 7, i64 0 }, ptr %a54
|
|
call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a52
|
|
call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t55)
|
|
br label %endif4424
|
|
endif4424:
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = load %S.ast.Node, ptr %a2
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t59 = load { ptr, i64, i64 }, ptr %t58
|
|
%t60 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1
|
|
%t61 = load %S.ast.Type, ptr %t60
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = load %S.gen.Val, ptr %a15
|
|
%t64 = call { ptr, i64, i64 } @finch.gen.own(ptr %t62, %S.gen.Val %t63)
|
|
%t65 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t59, %S.ast.Type %t61, { ptr, i64, i64 } %t64, i1 false)
|
|
ret void
|
|
endif4414:
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5
|
|
%t68 = load %S.ast.Type, ptr %t67
|
|
%t69 = load %S.ast.Node, ptr %a2
|
|
%t70 = call %S.ast.Type @finch.gen.resolve(ptr %t66, %S.ast.Type %t68, %S.ast.Node %t69)
|
|
store %S.ast.Type %t70, ptr %a71
|
|
%t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1
|
|
%t74 = load i64, ptr %t73
|
|
%t75 = icmp eq i64 %t74, 0
|
|
br i1 %t75, label %then4427, label %endif4429
|
|
then4427:
|
|
%t76 = getelementptr inbounds %S.ast.Type, ptr %a71, i32 0, i32 0
|
|
%t77 = load { ptr, i64, i64 }, ptr %t76
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
store { ptr, i64, i64 } { ptr @.str.2811, i64 6, i64 0 }, ptr %a79
|
|
%t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79)
|
|
%t81 = icmp ne i32 %t80, 0
|
|
br label %logic.from4430
|
|
logic.from4430:
|
|
br i1 %t81, label %logic.rhs4431, label %logic.end4432
|
|
logic.rhs4431:
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = load %S.ast.Type, ptr %a71
|
|
%t84 = call i1 @finch.gen.hasDefaults(ptr %t82, %S.ast.Type %t83)
|
|
br label %logic.rend4433
|
|
logic.rend4433:
|
|
br label %logic.end4432
|
|
logic.end4432:
|
|
%t85 = phi i1 [ false, %logic.from4430 ], [ %t84, %logic.rend4433 ]
|
|
br i1 %t85, label %then4434, label %endif4436
|
|
then4434:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a86
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a87
|
|
%t88 = load ptr, ptr %a1
|
|
%t89 = load ptr, ptr %a1
|
|
%t90 = getelementptr inbounds %S.ast.Type, ptr %a71, i32 0, i32 3
|
|
%t91 = load { ptr, i64, i64 }, ptr %t90
|
|
%t92 = getelementptr inbounds %S.ast.Type, ptr %a71, i32 0, i32 2
|
|
%t93 = load { ptr, i64, i64 }, ptr %t92
|
|
%t94 = call i64 @finch.gen.findStruct(ptr %t89, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t93)
|
|
%t95 = load { ptr, i64, i64 }, ptr %a86
|
|
%t96 = load { ptr, i64, i64 }, ptr %a87
|
|
%t97 = load %S.ast.Node, ptr %a2
|
|
%t98 = call %S.gen.Val @finch.gen.construct(ptr %t88, i64 %t94, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t96, %S.ast.Node %t97)
|
|
store %S.gen.Val %t98, ptr %a99
|
|
%t100 = load ptr, ptr %a1
|
|
%t101 = load %S.ast.Node, ptr %a2
|
|
%t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t103 = load { ptr, i64, i64 }, ptr %t102
|
|
%t104 = load %S.ast.Type, ptr %a71
|
|
%t105 = getelementptr inbounds %S.gen.Val, ptr %a99, i32 0, i32 0
|
|
%t106 = load { ptr, i64, i64 }, ptr %t105
|
|
%t107 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t100, %S.ast.Node %t101, { ptr, i64, i64 } %t103, %S.ast.Type %t104, { ptr, i64, i64 } %t106, i1 false)
|
|
ret void
|
|
endif4436:
|
|
%t108 = load ptr, ptr %a1
|
|
%t109 = load %S.ast.Node, ptr %a2
|
|
%t110 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t111 = load { ptr, i64, i64 }, ptr %t110
|
|
%t112 = load %S.ast.Type, ptr %a71
|
|
%t113 = load %S.ast.Type, ptr %a71
|
|
%t114 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t113)
|
|
%t115 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t108, %S.ast.Node %t109, { ptr, i64, i64 } %t111, %S.ast.Type %t112, { ptr, i64, i64 } %t114, i1 false)
|
|
ret void
|
|
endif4429:
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = load ptr, ptr %a1
|
|
%t118 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t119 = load { ptr, i64, i64 }, ptr %t118
|
|
%t120 = extractvalue { ptr, i64, i64 } %t119, 1
|
|
%t121 = icmp uge i64 0, %t120
|
|
br i1 %t121, label %range4437, label %inrange4438
|
|
range4437:
|
|
call void @finch_panic_index(ptr @.str.2812, i64 1983, i64 0, i64 %t120)
|
|
unreachable
|
|
inrange4438:
|
|
%t122 = extractvalue { ptr, i64, i64 } %t119, 0
|
|
%t123 = getelementptr inbounds %S.ast.Node, ptr %t122, i64 0
|
|
%t124 = load %S.ast.Node, ptr %t123
|
|
%t125 = load %S.ast.Type, ptr %a71
|
|
%t126 = call %S.gen.Val @finch.gen.exprWant(ptr %t117, %S.ast.Node %t124, %S.ast.Type %t125)
|
|
%t127 = load %S.ast.Type, ptr %a71
|
|
%t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t129 = load { ptr, i64, i64 }, ptr %t128
|
|
%t130 = extractvalue { ptr, i64, i64 } %t129, 1
|
|
%t131 = icmp uge i64 0, %t130
|
|
br i1 %t131, label %range4439, label %inrange4440
|
|
range4439:
|
|
call void @finch_panic_index(ptr @.str.2813, i64 1983, i64 0, i64 %t130)
|
|
unreachable
|
|
inrange4440:
|
|
%t132 = extractvalue { ptr, i64, i64 } %t129, 0
|
|
%t133 = getelementptr inbounds %S.ast.Node, ptr %t132, i64 0
|
|
%t134 = load %S.ast.Node, ptr %t133
|
|
%t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t136 = load { ptr, i64, i64 }, ptr %t135
|
|
store { ptr, i64, i64 } { ptr @.str.2814, i64 1, i64 0 }, ptr %a138
|
|
store { ptr, i64, i64 } %t136, ptr %a139
|
|
call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139)
|
|
%t140 = load { ptr, i64, i64 }, ptr %a137
|
|
store { ptr, i64, i64 } %t140, ptr %a142
|
|
store { ptr, i64, i64 } { ptr @.str.2815, i64 1, i64 0 }, ptr %a143
|
|
call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143)
|
|
%t144 = load { ptr, i64, i64 }, ptr %a141
|
|
%t145 = call %S.gen.Val @finch.gen.coerce(ptr %t116, %S.gen.Val %t126, %S.ast.Type %t127, %S.ast.Node %t134, { ptr, i64, i64 } %t144)
|
|
store %S.gen.Val %t145, ptr %a146
|
|
%t147 = load ptr, ptr %a1
|
|
%t148 = load %S.ast.Node, ptr %a2
|
|
%t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t150 = load { ptr, i64, i64 }, ptr %t149
|
|
%t151 = load %S.ast.Type, ptr %a71
|
|
%t152 = load ptr, ptr %a1
|
|
%t153 = load %S.gen.Val, ptr %a146
|
|
%t154 = call { ptr, i64, i64 } @finch.gen.own(ptr %t152, %S.gen.Val %t153)
|
|
%t155 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t147, %S.ast.Node %t148, { ptr, i64, i64 } %t150, %S.ast.Type %t151, { ptr, i64, i64 } %t154, i1 false)
|
|
ret void
|
|
}
|
|
|
|
define internal i1 @finch.gen.hasDefaults(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a18 = alloca %S.gen.StructDef, align 16
|
|
%a19 = alloca %S.gen.StructDef, align 16
|
|
%a21 = alloca %S.gen.StructDef, align 16
|
|
%a43 = alloca i64, align 16
|
|
%a51 = alloca %S.ast.Node, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic4441, label %ok4442
|
|
panic4441:
|
|
call void @finch_panic(ptr @.str.2816, i64 1988, ptr @.str.2817)
|
|
unreachable
|
|
ok4442:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t8 = load { ptr, i64, i64 }, ptr %t7
|
|
%t9 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t10 = load { ptr, i64, i64 }, ptr %t9
|
|
%t11 = call i64 @finch.gen.findStruct(ptr %t6, { ptr, i64, i64 } %t8, { ptr, i64, i64 } %t10)
|
|
%t12 = load { ptr, i64, i64 }, ptr %t5
|
|
%t13 = extractvalue { ptr, i64, i64 } %t12, 1
|
|
%t14 = icmp uge i64 %t11, %t13
|
|
br i1 %t14, label %range4443, label %inrange4444
|
|
range4443:
|
|
call void @finch_panic_index(ptr @.str.2818, i64 1988, i64 %t11, i64 %t13)
|
|
unreachable
|
|
inrange4444:
|
|
%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 %then4445, label %endif4447
|
|
then4445:
|
|
ret i1 false
|
|
endif4447:
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = icmp eq ptr %t24, null
|
|
br i1 %t25, label %panic4448, label %ok4449
|
|
panic4448:
|
|
call void @finch_panic(ptr @.str.2819, i64 1992, ptr @.str.2820)
|
|
unreachable
|
|
ok4449:
|
|
%t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 0
|
|
%t27 = getelementptr inbounds %S.gen.StructDef, ptr %a21, i32 0, i32 13
|
|
%t28 = load i64, ptr %t27
|
|
%t29 = load { ptr, i64, i64 }, ptr %t26
|
|
%t30 = extractvalue { ptr, i64, i64 } %t29, 1
|
|
%t31 = icmp uge i64 %t28, %t30
|
|
br i1 %t31, label %range4450, label %inrange4451
|
|
range4450:
|
|
call void @finch_panic_index(ptr @.str.2821, i64 1992, i64 %t28, i64 %t30)
|
|
unreachable
|
|
inrange4451:
|
|
%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 %range4452, label %inrange4453
|
|
range4452:
|
|
call void @finch_panic_index(ptr @.str.2822, i64 1992, i64 %t36, i64 %t38)
|
|
unreachable
|
|
inrange4453:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36
|
|
%t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i32 0, i32 9
|
|
store i64 0, ptr %a43
|
|
br label %each.cond4454
|
|
each.cond4454:
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1
|
|
%t45 = load i64, ptr %t44
|
|
%t46 = load i64, ptr %a43
|
|
%t47 = icmp slt i64 %t46, %t45
|
|
br i1 %t47, label %each.body4455, label %each.end4457
|
|
each.body4455:
|
|
%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 %then4458, label %endif4460
|
|
then4458:
|
|
ret i1 true
|
|
endif4460:
|
|
br label %each.step4456
|
|
each.step4456:
|
|
%t56 = load i64, ptr %a43
|
|
%t57 = add i64 %t56, 1
|
|
store i64 %t57, ptr %a43
|
|
br label %each.cond4454
|
|
each.end4457:
|
|
ret i1 false
|
|
}
|
|
|
|
define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a10 = alloca %S.ast.Node, align 16
|
|
%a11 = alloca %S.ast.Node, align 16
|
|
%a13 = alloca %S.ast.Node, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca i64, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca %S.gen.Val, align 16
|
|
%a106 = alloca %S.gen.Place, align 16
|
|
%a139 = alloca %S.gen.Val, align 16
|
|
%a143 = alloca %S.gen.Place, align 16
|
|
%a155 = alloca %S.ast.Type, align 16
|
|
%a156 = alloca %S.ast.Type, align 16
|
|
%a159 = alloca %S.gen.Val, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
%t5 = extractvalue { ptr, i64, i64 } %t4, 1
|
|
%t6 = icmp uge i64 0, %t5
|
|
br i1 %t6, label %range4461, label %inrange4462
|
|
range4461:
|
|
call void @finch_panic_index(ptr @.str.2823, i64 2001, i64 0, i64 %t5)
|
|
unreachable
|
|
inrange4462:
|
|
%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 %then4463, label %endif4465
|
|
then4463:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = load { ptr, i64, i64 }, ptr %a16
|
|
%t22 = call i64 @finch.gen.lookup(ptr %t20, { ptr, i64, i64 } %t21)
|
|
store i64 %t22, ptr %a23
|
|
%t24 = load i64, ptr %a23
|
|
%t25 = icmp slt i64 %t24, 0
|
|
br label %logic.from4466
|
|
logic.from4466:
|
|
br i1 %t25, label %logic.rhs4467, label %logic.end4468
|
|
logic.rhs4467:
|
|
%t26 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
store { ptr, i64, i64 } { ptr @.str.2824, i64 3, i64 0 }, ptr %a29
|
|
%t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29)
|
|
%t31 = icmp ne i32 %t30, 0
|
|
br label %logic.rend4469
|
|
logic.rend4469:
|
|
br label %logic.end4468
|
|
logic.end4468:
|
|
%t32 = phi i1 [ false, %logic.from4466 ], [ %t31, %logic.rend4469 ]
|
|
br i1 %t32, label %then4470, label %endif4472
|
|
then4470:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = load %S.ast.Node, ptr %a2
|
|
%t35 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.2825, i64 28, i64 0 }, ptr %a37
|
|
store { ptr, i64, i64 } %t35, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
store { ptr, i64, i64 } %t39, ptr %a41
|
|
store { ptr, i64, i64 } { ptr @.str.2826, i64 18, i64 0 }, ptr %a42
|
|
call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a40
|
|
%t44 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t43, ptr %a46
|
|
store { ptr, i64, i64 } %t44, ptr %a47
|
|
call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a45
|
|
store { ptr, i64, i64 } %t48, ptr %a50
|
|
store { ptr, i64, i64 } { ptr @.str.2827, i64 8, i64 0 }, ptr %a51
|
|
call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51)
|
|
%t52 = load { ptr, i64, i64 }, ptr %a49
|
|
call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t52)
|
|
br label %endif4472
|
|
endif4472:
|
|
%t53 = load i64, ptr %a23
|
|
%t54 = icmp sge i64 %t53, 0
|
|
br label %logic.from4473
|
|
logic.from4473:
|
|
br i1 %t54, label %logic.rhs4474, label %logic.end4475
|
|
logic.rhs4474:
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = load i64, ptr %a23
|
|
%t57 = call %S.gen.Var @finch.gen.varAt(ptr %t55, i64 %t56)
|
|
%t58 = extractvalue %S.gen.Var %t57, 3
|
|
br label %logic.rend4476
|
|
logic.rend4476:
|
|
br label %logic.end4475
|
|
logic.end4475:
|
|
%t59 = phi i1 [ false, %logic.from4473 ], [ %t58, %logic.rend4476 ]
|
|
br i1 %t59, label %then4477, label %endif4479
|
|
then4477:
|
|
%t60 = load ptr, ptr %a1
|
|
%t61 = load %S.ast.Node, ptr %a2
|
|
%t62 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.2828, i64 19, i64 0 }, ptr %a64
|
|
store { ptr, i64, i64 } %t62, ptr %a65
|
|
call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65)
|
|
%t66 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t66, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.2829, i64 18, i64 0 }, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
call void @finch.gen.fail(ptr %t60, %S.ast.Node %t61, { ptr, i64, i64 } %t70)
|
|
br label %endif4479
|
|
endif4479:
|
|
br label %endif4465
|
|
endif4465:
|
|
store { ptr, i64, i64 } { ptr @.str.2830, i64 9, i64 0 }, ptr %a71
|
|
%t72 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0
|
|
%t73 = load { ptr, i64, i64 }, ptr %t72
|
|
store { ptr, i64, i64 } %t73, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.2831, i64 3, i64 0 }, ptr %a75
|
|
%t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75)
|
|
%t77 = icmp ne i32 %t76, 0
|
|
br i1 %t77, label %then4480, label %endif4482
|
|
then4480:
|
|
%t78 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.2832, i64 1, i64 0 }, ptr %a80
|
|
store { ptr, i64, i64 } %t78, ptr %a81
|
|
call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81)
|
|
%t82 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } %t82, ptr %a84
|
|
store { ptr, i64, i64 } { ptr @.str.2833, i64 1, i64 0 }, ptr %a85
|
|
call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85)
|
|
%t86 = load { ptr, i64, i64 }, ptr %a83
|
|
store { ptr, i64, i64 } %t86, ptr %a71
|
|
br label %endif4482
|
|
endif4482:
|
|
%t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t88 = load { ptr, i64, i64 }, ptr %t87
|
|
store { ptr, i64, i64 } %t88, ptr %a89
|
|
store { ptr, i64, i64 } { ptr @.str.2834, i64 1, i64 0 }, ptr %a90
|
|
%t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90)
|
|
%t92 = icmp ne i32 %t91, 0
|
|
br i1 %t92, label %then4483, label %endif4485
|
|
then4483:
|
|
%t93 = load ptr, ptr %a1
|
|
%t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t95 = load { ptr, i64, i64 }, ptr %t94
|
|
%t96 = extractvalue { ptr, i64, i64 } %t95, 1
|
|
%t97 = icmp uge i64 1, %t96
|
|
br i1 %t97, label %range4486, label %inrange4487
|
|
range4486:
|
|
call void @finch_panic_index(ptr @.str.2835, i64 2017, i64 1, i64 %t96)
|
|
unreachable
|
|
inrange4487:
|
|
%t98 = extractvalue { ptr, i64, i64 } %t95, 0
|
|
%t99 = getelementptr inbounds %S.ast.Node, ptr %t98, i64 1
|
|
%t100 = load %S.ast.Node, ptr %t99
|
|
%t101 = call %S.gen.Val @finch.gen.expr(ptr %t93, %S.ast.Node %t100)
|
|
store %S.gen.Val %t101, ptr %a102
|
|
%t103 = load ptr, ptr %a1
|
|
%t104 = load %S.ast.Node, ptr %a13
|
|
%t105 = call %S.gen.Place @finch.gen.place(ptr %t103, %S.ast.Node %t104, i1 true)
|
|
store %S.gen.Place %t105, ptr %a106
|
|
%t107 = load ptr, ptr %a1
|
|
%t108 = load %S.gen.Val, ptr %a102
|
|
%t109 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 1
|
|
%t110 = load %S.ast.Type, ptr %t109
|
|
%t111 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t112 = load { ptr, i64, i64 }, ptr %t111
|
|
%t113 = extractvalue { ptr, i64, i64 } %t112, 1
|
|
%t114 = icmp uge i64 1, %t113
|
|
br i1 %t114, label %range4488, label %inrange4489
|
|
range4488:
|
|
call void @finch_panic_index(ptr @.str.2836, i64 2019, i64 1, i64 %t113)
|
|
unreachable
|
|
inrange4489:
|
|
%t115 = extractvalue { ptr, i64, i64 } %t112, 0
|
|
%t116 = getelementptr inbounds %S.ast.Node, ptr %t115, i64 1
|
|
%t117 = load %S.ast.Node, ptr %t116
|
|
%t118 = load { ptr, i64, i64 }, ptr %a71
|
|
%t119 = call %S.gen.Val @finch.gen.coerce(ptr %t107, %S.gen.Val %t108, %S.ast.Type %t110, %S.ast.Node %t117, { ptr, i64, i64 } %t118)
|
|
store %S.gen.Val %t119, ptr %a102
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = load ptr, ptr %a1
|
|
%t122 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 1
|
|
%t123 = load %S.ast.Type, ptr %t122
|
|
%t124 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t121, %S.ast.Type %t123)
|
|
%t125 = load ptr, ptr %a1
|
|
%t126 = load %S.gen.Val, ptr %a102
|
|
%t127 = call { ptr, i64, i64 } @finch.gen.own(ptr %t125, %S.gen.Val %t126)
|
|
%t128 = getelementptr inbounds %S.gen.Place, ptr %a106, i32 0, i32 0
|
|
%t129 = load { ptr, i64, i64 }, ptr %t128
|
|
call void @finch.gen.store(ptr %t120, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t127, { ptr, i64, i64 } %t129)
|
|
ret void
|
|
endif4485:
|
|
%t130 = load ptr, ptr %a1
|
|
%t131 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t132 = load { ptr, i64, i64 }, ptr %t131
|
|
%t133 = extractvalue { ptr, i64, i64 } %t132, 1
|
|
%t134 = icmp uge i64 1, %t133
|
|
br i1 %t134, label %range4490, label %inrange4491
|
|
range4490:
|
|
call void @finch_panic_index(ptr @.str.2837, i64 2023, i64 1, i64 %t133)
|
|
unreachable
|
|
inrange4491:
|
|
%t135 = extractvalue { ptr, i64, i64 } %t132, 0
|
|
%t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1
|
|
%t137 = load %S.ast.Node, ptr %t136
|
|
%t138 = call %S.gen.Val @finch.gen.expr(ptr %t130, %S.ast.Node %t137)
|
|
store %S.gen.Val %t138, ptr %a139
|
|
%t140 = load ptr, ptr %a1
|
|
%t141 = load %S.ast.Node, ptr %a13
|
|
%t142 = call %S.gen.Place @finch.gen.place(ptr %t140, %S.ast.Node %t141, i1 true)
|
|
store %S.gen.Place %t142, ptr %a143
|
|
%t144 = load ptr, ptr %a1
|
|
%t145 = load ptr, ptr %a1
|
|
%t146 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1
|
|
%t147 = load %S.ast.Type, ptr %t146
|
|
%t148 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t145, %S.ast.Type %t147)
|
|
%t149 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 0
|
|
%t150 = load { ptr, i64, i64 }, ptr %t149
|
|
%t151 = call { ptr, i64, i64 } @finch.gen.load(ptr %t144, { ptr, i64, i64 } %t148, { ptr, i64, i64 } %t150)
|
|
%t152 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t151, 0
|
|
%t153 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1
|
|
%t154 = load %S.ast.Type, ptr %t153
|
|
store %S.ast.Type %t154, ptr %a155
|
|
call void @finch.copy.S_ast_Type(ptr %a156, ptr %a155)
|
|
%t157 = load %S.ast.Type, ptr %a156
|
|
%t158 = insertvalue %S.gen.Val %t152, %S.ast.Type %t157, 1
|
|
store %S.gen.Val %t158, ptr %a159
|
|
%t160 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t161 = load { ptr, i64, i64 }, ptr %t160
|
|
store { ptr, i64, i64 } %t161, ptr %a162
|
|
call void @finch_str_sub(ptr %a163, ptr %a162, i64 0, i64 1, ptr @.str.2838, i64 2026)
|
|
%t164 = load { ptr, i64, i64 }, ptr %a163
|
|
store { ptr, i64, i64 } %t164, ptr %a165
|
|
%t166 = load ptr, ptr %a1
|
|
%t167 = load ptr, ptr %a1
|
|
%t168 = load { ptr, i64, i64 }, ptr %a165
|
|
%t169 = load %S.gen.Val, ptr %a159
|
|
%t170 = load %S.gen.Val, ptr %a139
|
|
%t171 = load %S.ast.Node, ptr %a2
|
|
%t172 = call %S.gen.Val @finch.gen.arith(ptr %t167, { ptr, i64, i64 } %t168, %S.gen.Val %t169, %S.gen.Val %t170, %S.ast.Node %t171)
|
|
%t173 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1
|
|
%t174 = load %S.ast.Type, ptr %t173
|
|
%t175 = load %S.ast.Node, ptr %a2
|
|
%t176 = load { ptr, i64, i64 }, ptr %a71
|
|
%t177 = call %S.gen.Val @finch.gen.coerce(ptr %t166, %S.gen.Val %t172, %S.ast.Type %t174, %S.ast.Node %t175, { ptr, i64, i64 } %t176)
|
|
store %S.gen.Val %t177, ptr %a178
|
|
%t179 = load ptr, ptr %a1
|
|
%t180 = load ptr, ptr %a1
|
|
%t181 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 1
|
|
%t182 = load %S.ast.Type, ptr %t181
|
|
%t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182)
|
|
%t184 = load ptr, ptr %a1
|
|
%t185 = load %S.gen.Val, ptr %a178
|
|
%t186 = call { ptr, i64, i64 } @finch.gen.own(ptr %t184, %S.gen.Val %t185)
|
|
%t187 = getelementptr inbounds %S.gen.Place, ptr %a143, i32 0, i32 0
|
|
%t188 = load { ptr, i64, i64 }, ptr %t187
|
|
call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t183, { ptr, i64, i64 } %t186, { ptr, i64, i64 } %t188)
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.condition(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = load %S.ast.Node, ptr %a2
|
|
%t6 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t5)
|
|
%t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2839, i64 4, i64 0 })
|
|
%t8 = load %S.ast.Node, ptr %a2
|
|
%t9 = call %S.gen.Val @finch.gen.coerce(ptr %t3, %S.gen.Val %t6, %S.ast.Type %t7, %S.ast.Node %t8, { ptr, i64, i64 } { ptr @.str.2840, i64 11, i64 0 })
|
|
%t10 = extractvalue %S.gen.Val %t9, 0
|
|
store { ptr, i64, i64 } %t10, ptr %a11
|
|
call void @finch_str_copy(ptr %a12, ptr %a11)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a12
|
|
ret { ptr, i64, i64 } %t13
|
|
}
|
|
|
|
define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca i1, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
%t6 = extractvalue { ptr, i64, i64 } %t5, 1
|
|
%t7 = icmp uge i64 0, %t6
|
|
br i1 %t7, label %range4492, label %inrange4493
|
|
range4492:
|
|
call void @finch_panic_index(ptr @.str.2841, i64 2036, i64 0, i64 %t6)
|
|
unreachable
|
|
inrange4493:
|
|
%t8 = extractvalue { ptr, i64, i64 } %t5, 0
|
|
%t9 = getelementptr inbounds %S.ast.Node, ptr %t8, i64 0
|
|
%t10 = load %S.ast.Node, ptr %t9
|
|
%t11 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t3, %S.ast.Node %t10)
|
|
store { ptr, i64, i64 } %t11, ptr %a12
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t13, { ptr, i64, i64 } { ptr @.str.2842, i64 4, i64 0 })
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t16, { ptr, i64, i64 } { ptr @.str.2843, i64 4, i64 0 })
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t19, { ptr, i64, i64 } { ptr @.str.2844, i64 5, i64 0 })
|
|
store { ptr, i64, i64 } %t20, ptr %a21
|
|
%t22 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1
|
|
%t24 = load i64, ptr %t23
|
|
%t25 = icmp sgt i64 %t24, 2
|
|
br i1 %t25, label %then4494, label %else4495
|
|
then4494:
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = load { ptr, i64, i64 }, ptr %a12
|
|
%t28 = load { ptr, i64, i64 }, ptr %a15
|
|
%t29 = load { ptr, i64, i64 }, ptr %a18
|
|
call void @finch.gen.condBr(ptr %t26, { ptr, i64, i64 } %t27, { ptr, i64, i64 } %t28, { ptr, i64, i64 } %t29)
|
|
br label %endif4496
|
|
else4495:
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = load { ptr, i64, i64 }, ptr %a12
|
|
%t32 = load { ptr, i64, i64 }, ptr %a15
|
|
%t33 = load { ptr, i64, i64 }, ptr %a21
|
|
call void @finch.gen.condBr(ptr %t30, { ptr, i64, i64 } %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33)
|
|
br label %endif4496
|
|
endif4496:
|
|
%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 %range4497, label %inrange4498
|
|
range4497:
|
|
call void @finch_panic_index(ptr @.str.2845, i64 2046, i64 1, i64 %t39)
|
|
unreachable
|
|
inrange4498:
|
|
%t41 = extractvalue { ptr, i64, i64 } %t38, 0
|
|
%t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 1
|
|
%t43 = load %S.ast.Node, ptr %t42
|
|
call void @finch.gen.block(ptr %t36, %S.ast.Node %t43, i1 true)
|
|
%t44 = load ptr, ptr %a1
|
|
%t45 = icmp eq ptr %t44, null
|
|
br i1 %t45, label %panic4499, label %ok4500
|
|
panic4499:
|
|
call void @finch_panic(ptr @.str.2846, i64 2047, ptr @.str.2847)
|
|
unreachable
|
|
ok4500:
|
|
%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 %then4501, label %else4502
|
|
then4501:
|
|
%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 %range4504, label %inrange4505
|
|
range4504:
|
|
call void @finch_panic_index(ptr @.str.2848, i64 2051, i64 2, i64 %t61)
|
|
unreachable
|
|
inrange4505:
|
|
%t63 = extractvalue { ptr, i64, i64 } %t60, 0
|
|
%t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 2
|
|
%t65 = load %S.ast.Node, ptr %t64
|
|
call void @finch.gen.stmt(ptr %t58, %S.ast.Node %t65)
|
|
%t66 = load i1, ptr %a49
|
|
br label %logic.from4506
|
|
logic.from4506:
|
|
br i1 %t66, label %logic.end4508, label %logic.rhs4507
|
|
logic.rhs4507:
|
|
%t67 = load ptr, ptr %a1
|
|
%t68 = icmp eq ptr %t67, null
|
|
br i1 %t68, label %panic4509, label %ok4510
|
|
panic4509:
|
|
call void @finch_panic(ptr @.str.2849, i64 2052, ptr @.str.2850)
|
|
unreachable
|
|
ok4510:
|
|
%t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 9
|
|
%t70 = load i1, ptr %t69
|
|
%t71 = xor i1 %t70, true
|
|
br label %logic.rend4511
|
|
logic.rend4511:
|
|
br label %logic.end4508
|
|
logic.end4508:
|
|
%t72 = phi i1 [ true, %logic.from4506 ], [ %t71, %logic.rend4511 ]
|
|
store i1 %t72, ptr %a49
|
|
%t73 = load ptr, ptr %a1
|
|
%t74 = load { ptr, i64, i64 }, ptr %a21
|
|
call void @finch.gen.br(ptr %t73, { ptr, i64, i64 } %t74)
|
|
br label %endif4503
|
|
else4502:
|
|
store i1 true, ptr %a49
|
|
br label %endif4503
|
|
endif4503:
|
|
%t75 = load i1, ptr %a49
|
|
br i1 %t75, label %then4512, label %endif4514
|
|
then4512:
|
|
%t76 = load ptr, ptr %a1
|
|
%t77 = load { ptr, i64, i64 }, ptr %a21
|
|
call void @finch.gen.label(ptr %t76, { ptr, i64, i64 } %t77)
|
|
br label %endif4514
|
|
endif4514:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.whileStmt(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca i1, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca i1, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.2851, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t6, { ptr, i64, i64 } { ptr @.str.2852, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t9, { ptr, i64, i64 } { ptr @.str.2853, i64 9, i64 0 })
|
|
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 %range4515, label %inrange4516
|
|
range4515:
|
|
call void @finch_panic_index(ptr @.str.2854, i64 2068, i64 0, i64 %t18)
|
|
unreachable
|
|
inrange4516:
|
|
%t20 = extractvalue { ptr, i64, i64 } %t17, 0
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %t20, i64 0
|
|
%t22 = getelementptr inbounds %S.ast.Node, ptr %t21, i32 0, i32 0
|
|
%t23 = load { ptr, i64, i64 }, ptr %t22
|
|
store { ptr, i64, i64 } %t23, ptr %a24
|
|
store { ptr, i64, i64 } { ptr @.str.2855, i64 4, i64 0 }, ptr %a25
|
|
%t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25)
|
|
%t27 = icmp ne i32 %t26, 0
|
|
br label %logic.from4517
|
|
logic.from4517:
|
|
br i1 %t27, label %logic.rhs4518, label %logic.end4519
|
|
logic.rhs4518:
|
|
%t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t29 = load { ptr, i64, i64 }, ptr %t28
|
|
%t30 = extractvalue { ptr, i64, i64 } %t29, 1
|
|
%t31 = icmp uge i64 0, %t30
|
|
br i1 %t31, label %range4520, label %inrange4521
|
|
range4520:
|
|
call void @finch_panic_index(ptr @.str.2856, i64 2068, i64 0, i64 %t30)
|
|
unreachable
|
|
inrange4521:
|
|
%t32 = extractvalue { ptr, i64, i64 } %t29, 0
|
|
%t33 = getelementptr inbounds %S.ast.Node, ptr %t32, i64 0
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i32 0, i32 4
|
|
%t35 = load { ptr, i64, i64 }, ptr %t34
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.2857, i64 4, i64 0 }, ptr %a37
|
|
%t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37)
|
|
%t39 = icmp ne i32 %t38, 0
|
|
br label %logic.rend4522
|
|
logic.rend4522:
|
|
br label %logic.end4519
|
|
logic.end4519:
|
|
%t40 = phi i1 [ false, %logic.from4517 ], [ %t39, %logic.rend4522 ]
|
|
store i1 %t40, ptr %a41
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t44 = load { ptr, i64, i64 }, ptr %t43
|
|
%t45 = extractvalue { ptr, i64, i64 } %t44, 1
|
|
%t46 = icmp uge i64 0, %t45
|
|
br i1 %t46, label %range4523, label %inrange4524
|
|
range4523:
|
|
call void @finch_panic_index(ptr @.str.2858, i64 2069, i64 0, i64 %t45)
|
|
unreachable
|
|
inrange4524:
|
|
%t47 = extractvalue { ptr, i64, i64 } %t44, 0
|
|
%t48 = getelementptr inbounds %S.ast.Node, ptr %t47, i64 0
|
|
%t49 = load %S.ast.Node, ptr %t48
|
|
%t50 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t42, %S.ast.Node %t49)
|
|
store { ptr, i64, i64 } %t50, ptr %a51
|
|
%t52 = load i1, ptr %a41
|
|
br i1 %t52, label %then4525, label %else4526
|
|
then4525:
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.br(ptr %t53, { ptr, i64, i64 } %t54)
|
|
br label %endif4527
|
|
else4526:
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = load { ptr, i64, i64 }, ptr %a51
|
|
%t57 = load { ptr, i64, i64 }, ptr %a8
|
|
%t58 = load { ptr, i64, i64 }, ptr %a11
|
|
call void @finch.gen.condBr(ptr %t55, { ptr, i64, i64 } %t56, { ptr, i64, i64 } %t57, { ptr, i64, i64 } %t58)
|
|
br label %endif4527
|
|
endif4527:
|
|
%t59 = load ptr, ptr %a1
|
|
%t60 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.label(ptr %t59, { ptr, i64, i64 } %t60)
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = icmp eq ptr %t61, null
|
|
br i1 %t62, label %panic4528, label %ok4529
|
|
panic4528:
|
|
call void @finch_panic(ptr @.str.2859, i64 2076, ptr @.str.2860)
|
|
unreachable
|
|
ok4529:
|
|
%t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11
|
|
%t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1
|
|
%t65 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t65, ptr %a66
|
|
call void @finch_str_copy(ptr %a67, ptr %a66)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a67
|
|
%t69 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t68, 0
|
|
%t70 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t70, ptr %a71
|
|
call void @finch_str_copy(ptr %a72, ptr %a71)
|
|
%t73 = load { ptr, i64, i64 }, ptr %a72
|
|
%t74 = insertvalue %S.gen.Loop %t69, { ptr, i64, i64 } %t73, 1
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = icmp eq ptr %t75, null
|
|
br i1 %t76, label %panic4530, label %ok4531
|
|
panic4530:
|
|
call void @finch_panic(ptr @.str.2861, i64 2076, ptr @.str.2862)
|
|
unreachable
|
|
ok4531:
|
|
%t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 10
|
|
%t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1
|
|
%t79 = load i64, ptr %t78
|
|
%t80 = insertvalue %S.gen.Loop %t74, i64 %t79, 2
|
|
%t81 = load i64, ptr %t64
|
|
%t82 = add i64 %t81, 1
|
|
call void @finch_arr_reserve(ptr %t63, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64))
|
|
%t83 = load ptr, ptr %t63
|
|
%t84 = getelementptr inbounds %S.gen.Loop, ptr %t83, i64 %t81
|
|
store %S.gen.Loop %t80, ptr %t84
|
|
store i64 %t82, ptr %t64
|
|
%t85 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t86 = load { ptr, i64, i64 }, ptr %t85
|
|
%t87 = extractvalue { ptr, i64, i64 } %t86, 1
|
|
%t88 = icmp uge i64 1, %t87
|
|
br i1 %t88, label %range4532, label %inrange4533
|
|
range4532:
|
|
call void @finch_panic_index(ptr @.str.2863, i64 2077, i64 1, i64 %t87)
|
|
unreachable
|
|
inrange4533:
|
|
%t89 = extractvalue { ptr, i64, i64 } %t86, 0
|
|
%t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 1
|
|
%t91 = load %S.ast.Node, ptr %t90
|
|
%t92 = call i1 @finch.gen.countBreaks(%S.ast.Node %t91)
|
|
store i1 %t92, ptr %a93
|
|
%t94 = load ptr, ptr %a1
|
|
%t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t96 = load { ptr, i64, i64 }, ptr %t95
|
|
%t97 = extractvalue { ptr, i64, i64 } %t96, 1
|
|
%t98 = icmp uge i64 1, %t97
|
|
br i1 %t98, label %range4534, label %inrange4535
|
|
range4534:
|
|
call void @finch_panic_index(ptr @.str.2864, i64 2078, i64 1, i64 %t97)
|
|
unreachable
|
|
inrange4535:
|
|
%t99 = extractvalue { ptr, i64, i64 } %t96, 0
|
|
%t100 = getelementptr inbounds %S.ast.Node, ptr %t99, i64 1
|
|
%t101 = load %S.ast.Node, ptr %t100
|
|
call void @finch.gen.block(ptr %t94, %S.ast.Node %t101, i1 true)
|
|
%t102 = load ptr, ptr %a1
|
|
%t103 = icmp eq ptr %t102, null
|
|
br i1 %t103, label %panic4536, label %ok4537
|
|
panic4536:
|
|
call void @finch_panic(ptr @.str.2865, i64 2079, ptr @.str.2866)
|
|
unreachable
|
|
ok4537:
|
|
%t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 11
|
|
%t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1
|
|
%t106 = load i64, ptr %t105
|
|
%t107 = icmp eq i64 %t106, 0
|
|
br i1 %t107, label %panic4538, label %ok4539
|
|
panic4538:
|
|
call void @finch_panic(ptr @.str.2867, i64 2079, ptr @.str.2868)
|
|
unreachable
|
|
ok4539:
|
|
%t108 = sub i64 %t106, 1
|
|
%t109 = load ptr, ptr %t104
|
|
%t110 = getelementptr inbounds %S.gen.Loop, ptr %t109, i64 %t108
|
|
%t111 = load %S.gen.Loop, ptr %t110
|
|
store i64 %t108, ptr %t105
|
|
%t112 = load ptr, ptr %a1
|
|
%t113 = load { ptr, i64, i64 }, ptr %a5
|
|
call void @finch.gen.br(ptr %t112, { ptr, i64, i64 } %t113)
|
|
%t114 = load i1, ptr %a41
|
|
%t115 = xor i1 %t114, true
|
|
br label %logic.from4540
|
|
logic.from4540:
|
|
br i1 %t115, label %logic.end4542, label %logic.rhs4541
|
|
logic.rhs4541:
|
|
%t116 = load i1, ptr %a93
|
|
br label %logic.rend4543
|
|
logic.rend4543:
|
|
br label %logic.end4542
|
|
logic.end4542:
|
|
%t117 = phi i1 [ true, %logic.from4540 ], [ %t116, %logic.rend4543 ]
|
|
br i1 %t117, label %then4544, label %endif4546
|
|
then4544:
|
|
%t118 = load ptr, ptr %a1
|
|
%t119 = load { ptr, i64, i64 }, ptr %a11
|
|
call void @finch.gen.label(ptr %t118, { ptr, i64, i64 } %t119)
|
|
br label %endif4546
|
|
endif4546:
|
|
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.2869, i64 5, i64 0 }, ptr %a5
|
|
%t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5)
|
|
%t7 = icmp ne i32 %t6, 0
|
|
br i1 %t7, label %then4547, label %endif4549
|
|
then4547:
|
|
ret i1 true
|
|
endif4549:
|
|
%t8 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0
|
|
%t9 = load { ptr, i64, i64 }, ptr %t8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.2870, i64 5, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br label %logic.from4550
|
|
logic.from4550:
|
|
br i1 %t13, label %logic.end4552, label %logic.rhs4551
|
|
logic.rhs4551:
|
|
%t14 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0
|
|
%t15 = load { ptr, i64, i64 }, ptr %t14
|
|
store { ptr, i64, i64 } %t15, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.2871, i64 3, i64 0 }, ptr %a17
|
|
%t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17)
|
|
%t19 = icmp ne i32 %t18, 0
|
|
br label %logic.rend4553
|
|
logic.rend4553:
|
|
br label %logic.end4552
|
|
logic.end4552:
|
|
%t20 = phi i1 [ true, %logic.from4550 ], [ %t19, %logic.rend4553 ]
|
|
br label %logic.from4554
|
|
logic.from4554:
|
|
br i1 %t20, label %logic.end4556, label %logic.rhs4555
|
|
logic.rhs4555:
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.2872, i64 4, i64 0 }, ptr %a24
|
|
%t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24)
|
|
%t26 = icmp ne i32 %t25, 0
|
|
br label %logic.rend4557
|
|
logic.rend4557:
|
|
br label %logic.end4556
|
|
logic.end4556:
|
|
%t27 = phi i1 [ true, %logic.from4554 ], [ %t26, %logic.rend4557 ]
|
|
br i1 %t27, label %then4558, label %endif4560
|
|
then4558:
|
|
ret i1 false
|
|
endif4560:
|
|
%t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9
|
|
store i64 0, ptr %a29
|
|
br label %each.cond4561
|
|
each.cond4561:
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1
|
|
%t31 = load i64, ptr %t30
|
|
%t32 = load i64, ptr %a29
|
|
%t33 = icmp slt i64 %t32, %t31
|
|
br i1 %t33, label %each.body4562, label %each.end4564
|
|
each.body4562:
|
|
%t34 = load ptr, ptr %t28
|
|
%t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32
|
|
%t36 = load %S.ast.Node, ptr %t35
|
|
store %S.ast.Node %t36, ptr %a37
|
|
%t38 = load %S.ast.Node, ptr %a37
|
|
%t39 = call i1 @finch.gen.countBreaks(%S.ast.Node %t38)
|
|
br i1 %t39, label %then4565, label %endif4567
|
|
then4565:
|
|
ret i1 true
|
|
endif4567:
|
|
br label %each.step4563
|
|
each.step4563:
|
|
%t40 = load i64, ptr %a29
|
|
%t41 = add i64 %t40, 1
|
|
store i64 %t41, ptr %a29
|
|
br label %each.cond4561
|
|
each.end4564:
|
|
ret i1 false
|
|
}
|
|
|
|
define internal void @finch.gen.forStmt(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
%t7 = extractvalue { ptr, i64, i64 } %t6, 1
|
|
%t8 = icmp uge i64 0, %t7
|
|
br i1 %t8, label %range4568, label %inrange4569
|
|
range4568:
|
|
call void @finch_panic_index(ptr @.str.2873, i64 2103, i64 0, i64 %t7)
|
|
unreachable
|
|
inrange4569:
|
|
%t9 = extractvalue { ptr, i64, i64 } %t6, 0
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0
|
|
%t11 = load %S.ast.Node, ptr %t10
|
|
%t12 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t11)
|
|
%t13 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2874, i64 3, i64 0 })
|
|
%t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t15 = load { ptr, i64, i64 }, ptr %t14
|
|
%t16 = extractvalue { ptr, i64, i64 } %t15, 1
|
|
%t17 = icmp uge i64 0, %t16
|
|
br i1 %t17, label %range4570, label %inrange4571
|
|
range4570:
|
|
call void @finch_panic_index(ptr @.str.2875, i64 2103, i64 0, i64 %t16)
|
|
unreachable
|
|
inrange4571:
|
|
%t18 = extractvalue { ptr, i64, i64 } %t15, 0
|
|
%t19 = getelementptr inbounds %S.ast.Node, ptr %t18, i64 0
|
|
%t20 = load %S.ast.Node, ptr %t19
|
|
%t21 = call %S.gen.Val @finch.gen.coerce(ptr %t3, %S.gen.Val %t12, %S.ast.Type %t13, %S.ast.Node %t20, { ptr, i64, i64 } { ptr @.str.2876, i64 20, i64 0 })
|
|
%t22 = extractvalue %S.gen.Val %t21, 0
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
call void @finch_str_copy(ptr %a24, ptr %a23)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t30 = load { ptr, i64, i64 }, ptr %t29
|
|
%t31 = extractvalue { ptr, i64, i64 } %t30, 1
|
|
%t32 = icmp uge i64 1, %t31
|
|
br i1 %t32, label %range4572, label %inrange4573
|
|
range4572:
|
|
call void @finch_panic_index(ptr @.str.2877, i64 2104, i64 1, i64 %t31)
|
|
unreachable
|
|
inrange4573:
|
|
%t33 = extractvalue { ptr, i64, i64 } %t30, 0
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 1
|
|
%t35 = load %S.ast.Node, ptr %t34
|
|
%t36 = call %S.gen.Val @finch.gen.expr(ptr %t28, %S.ast.Node %t35)
|
|
%t37 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2878, i64 3, i64 0 })
|
|
%t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t39 = load { ptr, i64, i64 }, ptr %t38
|
|
%t40 = extractvalue { ptr, i64, i64 } %t39, 1
|
|
%t41 = icmp uge i64 1, %t40
|
|
br i1 %t41, label %range4574, label %inrange4575
|
|
range4574:
|
|
call void @finch_panic_index(ptr @.str.2879, i64 2104, i64 1, i64 %t40)
|
|
unreachable
|
|
inrange4575:
|
|
%t42 = extractvalue { ptr, i64, i64 } %t39, 0
|
|
%t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 1
|
|
%t44 = load %S.ast.Node, ptr %t43
|
|
%t45 = call %S.gen.Val @finch.gen.coerce(ptr %t27, %S.gen.Val %t36, %S.ast.Type %t37, %S.ast.Node %t44, { ptr, i64, i64 } { ptr @.str.2880, i64 18, i64 0 })
|
|
%t46 = extractvalue %S.gen.Val %t45, 0
|
|
store { ptr, i64, i64 } %t46, ptr %a47
|
|
call void @finch_str_copy(ptr %a48, ptr %a47)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a48
|
|
store { ptr, i64, i64 } %t49, ptr %a50
|
|
%t51 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t51)
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = load %S.ast.Node, ptr %a2
|
|
%t54 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t55 = load { ptr, i64, i64 }, ptr %t54
|
|
%t56 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2881, i64 3, i64 0 })
|
|
%t57 = load { ptr, i64, i64 }, ptr %a26
|
|
%t58 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t52, %S.ast.Node %t53, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t57, i1 true)
|
|
store { ptr, i64, i64 } %t58, ptr %a59
|
|
%t60 = load ptr, ptr %a1
|
|
%t61 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t60, { ptr, i64, i64 } { ptr @.str.2882, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t61, ptr %a62
|
|
%t63 = load ptr, ptr %a1
|
|
%t64 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t63, { ptr, i64, i64 } { ptr @.str.2883, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t64, ptr %a65
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t66, { ptr, i64, i64 } { ptr @.str.2884, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
%t69 = load ptr, ptr %a1
|
|
%t70 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t69, { ptr, i64, i64 } { ptr @.str.2885, i64 7, i64 0 })
|
|
store { ptr, i64, i64 } %t70, ptr %a71
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = load { ptr, i64, i64 }, ptr %a62
|
|
call void @finch.gen.br(ptr %t72, { ptr, i64, i64 } %t73)
|
|
%t74 = load ptr, ptr %a1
|
|
%t75 = load { ptr, i64, i64 }, ptr %a62
|
|
call void @finch.gen.label(ptr %t74, { ptr, i64, i64 } %t75)
|
|
%t76 = load ptr, ptr %a1
|
|
%t77 = load { ptr, i64, i64 }, ptr %a59
|
|
%t78 = call { ptr, i64, i64 } @finch.gen.load(ptr %t76, { ptr, i64, i64 } { ptr @.str.2886, i64 3, i64 0 }, { ptr, i64, i64 } %t77)
|
|
store { ptr, i64, i64 } %t78, ptr %a79
|
|
%t80 = load ptr, ptr %a1
|
|
%t81 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.2887, i64 13, i64 0 }, ptr %a83
|
|
store { ptr, i64, i64 } %t81, ptr %a84
|
|
call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } %t85, ptr %a87
|
|
store { ptr, i64, i64 } { ptr @.str.2888, i64 2, i64 0 }, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
%t90 = load { ptr, i64, i64 }, ptr %a50
|
|
store { ptr, i64, i64 } %t89, ptr %a92
|
|
store { ptr, i64, i64 } %t90, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
%t95 = call { ptr, i64, i64 } @finch.gen.op(ptr %t80, { ptr, i64, i64 } %t94)
|
|
store { ptr, i64, i64 } %t95, ptr %a96
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = load { ptr, i64, i64 }, ptr %a96
|
|
%t99 = load { ptr, i64, i64 }, ptr %a65
|
|
%t100 = load { ptr, i64, i64 }, ptr %a71
|
|
call void @finch.gen.condBr(ptr %t97, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100)
|
|
%t101 = load ptr, ptr %a1
|
|
%t102 = load { ptr, i64, i64 }, ptr %a65
|
|
call void @finch.gen.label(ptr %t101, { ptr, i64, i64 } %t102)
|
|
%t103 = load ptr, ptr %a1
|
|
%t104 = icmp eq ptr %t103, null
|
|
br i1 %t104, label %panic4576, label %ok4577
|
|
panic4576:
|
|
call void @finch_panic(ptr @.str.2889, i64 2117, ptr @.str.2890)
|
|
unreachable
|
|
ok4577:
|
|
%t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 11
|
|
%t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1
|
|
%t107 = load { ptr, i64, i64 }, ptr %a68
|
|
store { ptr, i64, i64 } %t107, ptr %a108
|
|
call void @finch_str_copy(ptr %a109, ptr %a108)
|
|
%t110 = load { ptr, i64, i64 }, ptr %a109
|
|
%t111 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t110, 0
|
|
%t112 = load { ptr, i64, i64 }, ptr %a71
|
|
store { ptr, i64, i64 } %t112, ptr %a113
|
|
call void @finch_str_copy(ptr %a114, ptr %a113)
|
|
%t115 = load { ptr, i64, i64 }, ptr %a114
|
|
%t116 = insertvalue %S.gen.Loop %t111, { ptr, i64, i64 } %t115, 1
|
|
%t117 = load ptr, ptr %a1
|
|
%t118 = icmp eq ptr %t117, null
|
|
br i1 %t118, label %panic4578, label %ok4579
|
|
panic4578:
|
|
call void @finch_panic(ptr @.str.2891, i64 2117, ptr @.str.2892)
|
|
unreachable
|
|
ok4579:
|
|
%t119 = getelementptr inbounds %S.gen.Gen, ptr %t117, i32 0, i32 10
|
|
%t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1
|
|
%t121 = load i64, ptr %t120
|
|
%t122 = insertvalue %S.gen.Loop %t116, i64 %t121, 2
|
|
%t123 = load i64, ptr %t106
|
|
%t124 = add i64 %t123, 1
|
|
call void @finch_arr_reserve(ptr %t105, i64 %t124, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64))
|
|
%t125 = load ptr, ptr %t105
|
|
%t126 = getelementptr inbounds %S.gen.Loop, ptr %t125, i64 %t123
|
|
store %S.gen.Loop %t122, ptr %t126
|
|
store i64 %t124, ptr %t106
|
|
%t127 = load ptr, ptr %a1
|
|
%t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t129 = load { ptr, i64, i64 }, ptr %t128
|
|
%t130 = extractvalue { ptr, i64, i64 } %t129, 1
|
|
%t131 = icmp uge i64 2, %t130
|
|
br i1 %t131, label %range4580, label %inrange4581
|
|
range4580:
|
|
call void @finch_panic_index(ptr @.str.2893, i64 2118, i64 2, i64 %t130)
|
|
unreachable
|
|
inrange4581:
|
|
%t132 = extractvalue { ptr, i64, i64 } %t129, 0
|
|
%t133 = getelementptr inbounds %S.ast.Node, ptr %t132, i64 2
|
|
%t134 = load %S.ast.Node, ptr %t133
|
|
call void @finch.gen.block(ptr %t127, %S.ast.Node %t134, i1 true)
|
|
%t135 = load ptr, ptr %a1
|
|
%t136 = icmp eq ptr %t135, null
|
|
br i1 %t136, label %panic4582, label %ok4583
|
|
panic4582:
|
|
call void @finch_panic(ptr @.str.2894, i64 2119, ptr @.str.2895)
|
|
unreachable
|
|
ok4583:
|
|
%t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 11
|
|
%t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1
|
|
%t139 = load i64, ptr %t138
|
|
%t140 = icmp eq i64 %t139, 0
|
|
br i1 %t140, label %panic4584, label %ok4585
|
|
panic4584:
|
|
call void @finch_panic(ptr @.str.2896, i64 2119, ptr @.str.2897)
|
|
unreachable
|
|
ok4585:
|
|
%t141 = sub i64 %t139, 1
|
|
%t142 = load ptr, ptr %t137
|
|
%t143 = getelementptr inbounds %S.gen.Loop, ptr %t142, i64 %t141
|
|
%t144 = load %S.gen.Loop, ptr %t143
|
|
store i64 %t141, ptr %t138
|
|
%t145 = load ptr, ptr %a1
|
|
%t146 = load { ptr, i64, i64 }, ptr %a68
|
|
call void @finch.gen.br(ptr %t145, { ptr, i64, i64 } %t146)
|
|
%t147 = load ptr, ptr %a1
|
|
%t148 = load { ptr, i64, i64 }, ptr %a68
|
|
call void @finch.gen.label(ptr %t147, { ptr, i64, i64 } %t148)
|
|
%t149 = load ptr, ptr %a1
|
|
%t150 = load { ptr, i64, i64 }, ptr %a59
|
|
%t151 = call { ptr, i64, i64 } @finch.gen.load(ptr %t149, { ptr, i64, i64 } { ptr @.str.2898, i64 3, i64 0 }, { ptr, i64, i64 } %t150)
|
|
store { ptr, i64, i64 } %t151, ptr %a152
|
|
%t153 = load ptr, ptr %a1
|
|
%t154 = load ptr, ptr %a1
|
|
%t155 = load { ptr, i64, i64 }, ptr %a152
|
|
store { ptr, i64, i64 } { ptr @.str.2900, i64 8, i64 0 }, ptr %a157
|
|
store { ptr, i64, i64 } %t155, ptr %a158
|
|
call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158)
|
|
%t159 = load { ptr, i64, i64 }, ptr %a156
|
|
store { ptr, i64, i64 } %t159, ptr %a161
|
|
store { ptr, i64, i64 } { ptr @.str.2901, i64 3, i64 0 }, ptr %a162
|
|
call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162)
|
|
%t163 = load { ptr, i64, i64 }, ptr %a160
|
|
%t164 = call { ptr, i64, i64 } @finch.gen.op(ptr %t154, { ptr, i64, i64 } %t163)
|
|
%t165 = load { ptr, i64, i64 }, ptr %a59
|
|
call void @finch.gen.store(ptr %t153, { ptr, i64, i64 } { ptr @.str.2899, i64 3, i64 0 }, { ptr, i64, i64 } %t164, { ptr, i64, i64 } %t165)
|
|
%t166 = load ptr, ptr %a1
|
|
%t167 = load { ptr, i64, i64 }, ptr %a62
|
|
call void @finch.gen.br(ptr %t166, { ptr, i64, i64 } %t167)
|
|
%t168 = load ptr, ptr %a1
|
|
%t169 = load { ptr, i64, i64 }, ptr %a71
|
|
call void @finch.gen.label(ptr %t168, { ptr, i64, i64 } %t169)
|
|
%t170 = load ptr, ptr %a1
|
|
call void @finch.gen.popScope(ptr %t170)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.eachMap(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, i1 %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca i1, align 16
|
|
%a13 = alloca %S.ast.Type, align 16
|
|
%a14 = alloca %S.ast.Type, align 16
|
|
%a16 = alloca %S.ast.Type, align 16
|
|
%a24 = alloca %S.ast.Type, align 16
|
|
%a25 = alloca %S.ast.Type, align 16
|
|
%a27 = alloca %S.ast.Type, align 16
|
|
%a47 = alloca i1, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a231 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a377 = alloca { ptr, i64, i64 }, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a381 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
store i1 %p4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
%t8 = extractvalue { ptr, i64, i64 } %t7, 1
|
|
%t9 = icmp uge i64 0, %t8
|
|
br i1 %t9, label %range4586, label %inrange4587
|
|
range4586:
|
|
call void @finch_panic_index(ptr @.str.2902, i64 2131, i64 0, i64 %t8)
|
|
unreachable
|
|
inrange4587:
|
|
%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 %range4588, label %inrange4589
|
|
range4588:
|
|
call void @finch_panic_index(ptr @.str.2903, i64 2132, i64 1, i64 %t19)
|
|
unreachable
|
|
inrange4589:
|
|
%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.from4590
|
|
logic.from4590:
|
|
br i1 %t28, label %logic.rhs4591, label %logic.end4592
|
|
logic.rhs4591:
|
|
%t29 = load ptr, ptr %a1
|
|
%t30 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t31 = load { ptr, i64, i64 }, ptr %t30
|
|
%t32 = extractvalue { ptr, i64, i64 } %t31, 1
|
|
%t33 = icmp uge i64 0, %t32
|
|
br i1 %t33, label %range4593, label %inrange4594
|
|
range4593:
|
|
call void @finch_panic_index(ptr @.str.2904, i64 2133, i64 0, i64 %t32)
|
|
unreachable
|
|
inrange4594:
|
|
%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 %range4595, label %inrange4596
|
|
range4595:
|
|
call void @finch_panic_index(ptr @.str.2905, i64 2133, i64 1, i64 %t40)
|
|
unreachable
|
|
inrange4596:
|
|
%t42 = extractvalue { ptr, i64, i64 } %t39, 0
|
|
%t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 1
|
|
%t44 = load %S.ast.Node, ptr %t43
|
|
%t45 = call i1 @finch.gen.mutates(ptr %t29, { ptr, i64, i64 } %t37, %S.ast.Node %t44)
|
|
br label %logic.rend4597
|
|
logic.rend4597:
|
|
br label %logic.end4592
|
|
logic.end4592:
|
|
%t46 = phi i1 [ false, %logic.from4590 ], [ %t45, %logic.rend4597 ]
|
|
store i1 %t46, ptr %a47
|
|
%t48 = load ptr, ptr %a1
|
|
%t49 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t48, { ptr, i64, i64 } { ptr @.str.2906, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t49, ptr %a50
|
|
%t51 = load ptr, ptr %a1
|
|
%t52 = load { ptr, i64, i64 }, ptr %a50
|
|
call void @finch.gen.store(ptr %t51, { ptr, i64, i64 } { ptr @.str.2907, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.2908, i64 1, i64 0 }, { ptr, i64, i64 } %t52)
|
|
store { ptr, i64, i64 } { ptr @.str.2909, i64 0, i64 0 }, ptr %a53
|
|
%t54 = load i1, ptr %a5
|
|
br i1 %t54, label %then4598, label %endif4600
|
|
then4598:
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = load ptr, ptr %a1
|
|
%t58 = load %S.ast.Type, ptr %a4
|
|
%t59 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t57, %S.ast.Type %t58)
|
|
store { ptr, i64, i64 } { ptr @.str.2911, i64 23, i64 0 }, ptr %a61
|
|
store { ptr, i64, i64 } %t59, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
store { ptr, i64, i64 } %t63, ptr %a65
|
|
store { ptr, i64, i64 } { ptr @.str.2912, i64 6, i64 0 }, ptr %a66
|
|
call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a64
|
|
%t68 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t67, ptr %a70
|
|
store { ptr, i64, i64 } %t68, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
store { ptr, i64, i64 } %t72, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.2913, i64 14, i64 0 }, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
%t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t56, { ptr, i64, i64 } %t76)
|
|
%t78 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.2910, i64 3, i64 0 }, { ptr, i64, i64 } %t77)
|
|
store { ptr, i64, i64 } %t78, ptr %a53
|
|
br label %endif4600
|
|
endif4600:
|
|
%t79 = load ptr, ptr %a1
|
|
%t80 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t79, { ptr, i64, i64 } { ptr @.str.2914, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t82, { ptr, i64, i64 } { ptr @.str.2915, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t83, ptr %a84
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t85, { ptr, i64, i64 } { ptr @.str.2916, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t86, ptr %a87
|
|
%t88 = load ptr, ptr %a1
|
|
%t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.2917, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t89, ptr %a90
|
|
%t91 = load ptr, ptr %a1
|
|
%t92 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t91, { ptr, i64, i64 } { ptr @.str.2918, i64 7, i64 0 })
|
|
store { ptr, i64, i64 } %t92, ptr %a93
|
|
%t94 = load ptr, ptr %a1
|
|
%t95 = load { ptr, i64, i64 }, ptr %a81
|
|
call void @finch.gen.br(ptr %t94, { ptr, i64, i64 } %t95)
|
|
%t96 = load ptr, ptr %a1
|
|
%t97 = load { ptr, i64, i64 }, ptr %a81
|
|
call void @finch.gen.label(ptr %t96, { ptr, i64, i64 } %t97)
|
|
%t98 = load i1, ptr %a5
|
|
br label %logic.from4601
|
|
logic.from4601:
|
|
br i1 %t98, label %logic.rhs4602, label %logic.end4603
|
|
logic.rhs4602:
|
|
%t99 = load i1, ptr %a47
|
|
br label %logic.rend4604
|
|
logic.rend4604:
|
|
br label %logic.end4603
|
|
logic.end4603:
|
|
%t100 = phi i1 [ false, %logic.from4601 ], [ %t99, %logic.rend4604 ]
|
|
br i1 %t100, label %then4605, label %endif4607
|
|
then4605:
|
|
%t101 = load ptr, ptr %a1
|
|
%t102 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t101, { ptr, i64, i64 } { ptr @.str.2919, i64 11, i64 0 })
|
|
store { ptr, i64, i64 } %t102, ptr %a103
|
|
%t104 = load ptr, ptr %a1
|
|
%t105 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t104, { ptr, i64, i64 } { ptr @.str.2920, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t105, ptr %a106
|
|
%t107 = load ptr, ptr %a1
|
|
%t108 = load ptr, ptr %a1
|
|
%t109 = load ptr, ptr %a1
|
|
%t110 = load %S.ast.Type, ptr %a4
|
|
%t111 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t109, %S.ast.Type %t110)
|
|
store { ptr, i64, i64 } { ptr @.str.2922, i64 23, i64 0 }, ptr %a113
|
|
store { ptr, i64, i64 } %t111, ptr %a114
|
|
call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114)
|
|
%t115 = load { ptr, i64, i64 }, ptr %a112
|
|
store { ptr, i64, i64 } %t115, ptr %a117
|
|
store { ptr, i64, i64 } { ptr @.str.2923, i64 6, i64 0 }, ptr %a118
|
|
call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a116
|
|
%t120 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t119, ptr %a122
|
|
store { ptr, i64, i64 } %t120, ptr %a123
|
|
call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123)
|
|
%t124 = load { ptr, i64, i64 }, ptr %a121
|
|
store { ptr, i64, i64 } %t124, ptr %a126
|
|
store { ptr, i64, i64 } { ptr @.str.2924, i64 14, i64 0 }, ptr %a127
|
|
call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127)
|
|
%t128 = load { ptr, i64, i64 }, ptr %a125
|
|
%t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t108, { ptr, i64, i64 } %t128)
|
|
%t130 = call { ptr, i64, i64 } @finch.gen.load(ptr %t107, { ptr, i64, i64 } { ptr @.str.2921, i64 3, i64 0 }, { ptr, i64, i64 } %t129)
|
|
store { ptr, i64, i64 } %t130, ptr %a131
|
|
%t132 = load ptr, ptr %a1
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = load { ptr, i64, i64 }, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.2925, i64 12, i64 0 }, ptr %a136
|
|
store { ptr, i64, i64 } %t134, ptr %a137
|
|
call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137)
|
|
%t138 = load { ptr, i64, i64 }, ptr %a135
|
|
store { ptr, i64, i64 } %t138, ptr %a140
|
|
store { ptr, i64, i64 } { ptr @.str.2926, i64 2, i64 0 }, ptr %a141
|
|
call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141)
|
|
%t142 = load { ptr, i64, i64 }, ptr %a139
|
|
%t143 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t142, ptr %a145
|
|
store { ptr, i64, i64 } %t143, ptr %a146
|
|
call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a144
|
|
%t148 = call { ptr, i64, i64 } @finch.gen.op(ptr %t133, { ptr, i64, i64 } %t147)
|
|
%t149 = load { ptr, i64, i64 }, ptr %a103
|
|
%t150 = load { ptr, i64, i64 }, ptr %a106
|
|
call void @finch.gen.condBr(ptr %t132, { ptr, i64, i64 } %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t150)
|
|
%t151 = load ptr, ptr %a1
|
|
%t152 = load { ptr, i64, i64 }, ptr %a103
|
|
call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152)
|
|
%t153 = load ptr, ptr %a1
|
|
%t154 = load ptr, ptr %a1
|
|
%t155 = load ptr, ptr %a1
|
|
%t156 = icmp eq ptr %t155, null
|
|
br i1 %t156, label %panic4608, label %ok4609
|
|
panic4608:
|
|
call void @finch_panic(ptr @.str.2928, i64 2154, ptr @.str.2929)
|
|
unreachable
|
|
ok4609:
|
|
%t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 1
|
|
%t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t159 = load i64, ptr %t158
|
|
%t160 = load { ptr, i64, i64 }, ptr %t157
|
|
%t161 = extractvalue { ptr, i64, i64 } %t160, 1
|
|
%t162 = icmp uge i64 %t159, %t161
|
|
br i1 %t162, label %range4610, label %inrange4611
|
|
range4610:
|
|
call void @finch_panic_index(ptr @.str.2930, i64 2154, i64 %t159, i64 %t161)
|
|
unreachable
|
|
inrange4611:
|
|
%t163 = extractvalue { ptr, i64, i64 } %t160, 0
|
|
%t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t159
|
|
%t165 = load { ptr, i64, i64 }, ptr %t164
|
|
%t166 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t154, { ptr, i64, i64 } %t165)
|
|
store { ptr, i64, i64 } { ptr @.str.2927, i64 33, i64 0 }, ptr %a168
|
|
store { ptr, i64, i64 } %t166, ptr %a169
|
|
call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169)
|
|
%t170 = load { ptr, i64, i64 }, ptr %a167
|
|
store { ptr, i64, i64 } %t170, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.2931, i64 6, i64 0 }, ptr %a173
|
|
call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173)
|
|
%t174 = load { ptr, i64, i64 }, ptr %a171
|
|
%t175 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t176 = load i64, ptr %t175
|
|
call void @finch_str_from_int(ptr %a177, i64 %t176)
|
|
%t178 = load { ptr, i64, i64 }, ptr %a177
|
|
store { ptr, i64, i64 } %t174, ptr %a180
|
|
store { ptr, i64, i64 } %t178, ptr %a181
|
|
call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181)
|
|
%t182 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t182, ptr %a184
|
|
store { ptr, i64, i64 } { ptr @.str.2932, i64 1, i64 0 }, ptr %a185
|
|
call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185)
|
|
%t186 = load { ptr, i64, i64 }, ptr %a183
|
|
call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t186)
|
|
%t187 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t187, { ptr, i64, i64 } { ptr @.str.2933, i64 11, i64 0 })
|
|
%t188 = load ptr, ptr %a1
|
|
%t189 = icmp eq ptr %t188, null
|
|
br i1 %t189, label %panic4612, label %ok4613
|
|
panic4612:
|
|
call void @finch_panic(ptr @.str.2934, i64 2156, ptr @.str.2935)
|
|
unreachable
|
|
ok4613:
|
|
%t190 = getelementptr inbounds %S.gen.Gen, ptr %t188, i32 0, i32 9
|
|
store i1 true, ptr %t190
|
|
%t191 = load ptr, ptr %a1
|
|
%t192 = load { ptr, i64, i64 }, ptr %a106
|
|
call void @finch.gen.label(ptr %t191, { ptr, i64, i64 } %t192)
|
|
br label %endif4607
|
|
endif4607:
|
|
%t193 = load ptr, ptr %a1
|
|
%t194 = load { ptr, i64, i64 }, ptr %a50
|
|
%t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t193, { ptr, i64, i64 } { ptr @.str.2936, i64 3, i64 0 }, { ptr, i64, i64 } %t194)
|
|
store { ptr, i64, i64 } %t195, ptr %a196
|
|
%t197 = load ptr, ptr %a1
|
|
%t198 = load ptr, ptr %a1
|
|
%t199 = load ptr, ptr %a1
|
|
%t200 = load %S.ast.Type, ptr %a4
|
|
%t201 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t200)
|
|
store { ptr, i64, i64 } { ptr @.str.2938, i64 23, i64 0 }, ptr %a203
|
|
store { ptr, i64, i64 } %t201, ptr %a204
|
|
call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204)
|
|
%t205 = load { ptr, i64, i64 }, ptr %a202
|
|
store { ptr, i64, i64 } %t205, ptr %a207
|
|
store { ptr, i64, i64 } { ptr @.str.2939, i64 6, i64 0 }, ptr %a208
|
|
call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208)
|
|
%t209 = load { ptr, i64, i64 }, ptr %a206
|
|
%t210 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t209, ptr %a212
|
|
store { ptr, i64, i64 } %t210, ptr %a213
|
|
call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213)
|
|
%t214 = load { ptr, i64, i64 }, ptr %a211
|
|
store { ptr, i64, i64 } %t214, ptr %a216
|
|
store { ptr, i64, i64 } { ptr @.str.2940, i64 14, i64 0 }, ptr %a217
|
|
call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217)
|
|
%t218 = load { ptr, i64, i64 }, ptr %a215
|
|
%t219 = call { ptr, i64, i64 } @finch.gen.op(ptr %t198, { ptr, i64, i64 } %t218)
|
|
%t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.2937, i64 3, i64 0 }, { ptr, i64, i64 } %t219)
|
|
store { ptr, i64, i64 } %t220, ptr %a221
|
|
%t222 = load ptr, ptr %a1
|
|
%t223 = load ptr, ptr %a1
|
|
%t224 = load { ptr, i64, i64 }, ptr %a196
|
|
store { ptr, i64, i64 } { ptr @.str.2941, i64 13, i64 0 }, ptr %a226
|
|
store { ptr, i64, i64 } %t224, ptr %a227
|
|
call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227)
|
|
%t228 = load { ptr, i64, i64 }, ptr %a225
|
|
store { ptr, i64, i64 } %t228, ptr %a230
|
|
store { ptr, i64, i64 } { ptr @.str.2942, i64 2, i64 0 }, ptr %a231
|
|
call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231)
|
|
%t232 = load { ptr, i64, i64 }, ptr %a229
|
|
%t233 = load { ptr, i64, i64 }, ptr %a221
|
|
store { ptr, i64, i64 } %t232, ptr %a235
|
|
store { ptr, i64, i64 } %t233, ptr %a236
|
|
call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236)
|
|
%t237 = load { ptr, i64, i64 }, ptr %a234
|
|
%t238 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t237)
|
|
%t239 = load { ptr, i64, i64 }, ptr %a84
|
|
%t240 = load { ptr, i64, i64 }, ptr %a93
|
|
call void @finch.gen.condBr(ptr %t222, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t239, { ptr, i64, i64 } %t240)
|
|
%t241 = load ptr, ptr %a1
|
|
%t242 = load { ptr, i64, i64 }, ptr %a84
|
|
call void @finch.gen.label(ptr %t241, { ptr, i64, i64 } %t242)
|
|
%t243 = load ptr, ptr %a1
|
|
%t244 = load { ptr, i64, i64 }, ptr %a3
|
|
%t245 = load %S.ast.Type, ptr %a4
|
|
%t246 = load { ptr, i64, i64 }, ptr %a196
|
|
%t247 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t243, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } %t246)
|
|
store { ptr, i64, i64 } %t247, ptr %a248
|
|
%t249 = load ptr, ptr %a1
|
|
%t250 = load ptr, ptr %a1
|
|
%t251 = load { ptr, i64, i64 }, ptr %a248
|
|
%t252 = load %S.ast.Type, ptr %a4
|
|
%t253 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252, i64 0)
|
|
%t254 = call { ptr, i64, i64 } @finch.gen.load(ptr %t249, { ptr, i64, i64 } { ptr @.str.2943, i64 3, i64 0 }, { ptr, i64, i64 } %t253)
|
|
store { ptr, i64, i64 } %t254, ptr %a255
|
|
%t256 = load ptr, ptr %a1
|
|
%t257 = load ptr, ptr %a1
|
|
%t258 = load { ptr, i64, i64 }, ptr %a255
|
|
store { ptr, i64, i64 } { ptr @.str.2944, i64 12, i64 0 }, ptr %a260
|
|
store { ptr, i64, i64 } %t258, ptr %a261
|
|
call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261)
|
|
%t262 = load { ptr, i64, i64 }, ptr %a259
|
|
store { ptr, i64, i64 } %t262, ptr %a264
|
|
store { ptr, i64, i64 } { ptr @.str.2945, i64 3, i64 0 }, ptr %a265
|
|
call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265)
|
|
%t266 = load { ptr, i64, i64 }, ptr %a263
|
|
%t267 = call { ptr, i64, i64 } @finch.gen.op(ptr %t257, { ptr, i64, i64 } %t266)
|
|
%t268 = load { ptr, i64, i64 }, ptr %a90
|
|
%t269 = load { ptr, i64, i64 }, ptr %a87
|
|
call void @finch.gen.condBr(ptr %t256, { ptr, i64, i64 } %t267, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269)
|
|
%t270 = load ptr, ptr %a1
|
|
%t271 = load { ptr, i64, i64 }, ptr %a87
|
|
call void @finch.gen.label(ptr %t270, { ptr, i64, i64 } %t271)
|
|
%t272 = load ptr, ptr %a1
|
|
%t273 = icmp eq ptr %t272, null
|
|
br i1 %t273, label %panic4614, label %ok4615
|
|
panic4614:
|
|
call void @finch_panic(ptr @.str.2946, i64 2167, ptr @.str.2947)
|
|
unreachable
|
|
ok4615:
|
|
%t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 11
|
|
%t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i32 0, i32 1
|
|
%t276 = load { ptr, i64, i64 }, ptr %a90
|
|
store { ptr, i64, i64 } %t276, ptr %a277
|
|
call void @finch_str_copy(ptr %a278, ptr %a277)
|
|
%t279 = load { ptr, i64, i64 }, ptr %a278
|
|
%t280 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t279, 0
|
|
%t281 = load { ptr, i64, i64 }, ptr %a93
|
|
store { ptr, i64, i64 } %t281, ptr %a282
|
|
call void @finch_str_copy(ptr %a283, ptr %a282)
|
|
%t284 = load { ptr, i64, i64 }, ptr %a283
|
|
%t285 = insertvalue %S.gen.Loop %t280, { ptr, i64, i64 } %t284, 1
|
|
%t286 = load ptr, ptr %a1
|
|
%t287 = icmp eq ptr %t286, null
|
|
br i1 %t287, label %panic4616, label %ok4617
|
|
panic4616:
|
|
call void @finch_panic(ptr @.str.2948, i64 2167, ptr @.str.2949)
|
|
unreachable
|
|
ok4617:
|
|
%t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 10
|
|
%t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1
|
|
%t290 = load i64, ptr %t289
|
|
%t291 = insertvalue %S.gen.Loop %t285, i64 %t290, 2
|
|
%t292 = load i64, ptr %t275
|
|
%t293 = add i64 %t292, 1
|
|
call void @finch_arr_reserve(ptr %t274, i64 %t293, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64))
|
|
%t294 = load ptr, ptr %t274
|
|
%t295 = getelementptr inbounds %S.gen.Loop, ptr %t294, i64 %t292
|
|
store %S.gen.Loop %t291, ptr %t295
|
|
store i64 %t293, ptr %t275
|
|
%t296 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t296)
|
|
%t297 = load ptr, ptr %a1
|
|
%t298 = load ptr, ptr %a1
|
|
%t299 = load %S.ast.Type, ptr %a16
|
|
%t300 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t298, %S.ast.Type %t299)
|
|
%t301 = load ptr, ptr %a1
|
|
%t302 = load { ptr, i64, i64 }, ptr %a248
|
|
%t303 = load %S.ast.Type, ptr %a4
|
|
%t304 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t301, { ptr, i64, i64 } %t302, %S.ast.Type %t303, i64 1)
|
|
%t305 = call { ptr, i64, i64 } @finch.gen.load(ptr %t297, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t304)
|
|
store { ptr, i64, i64 } %t305, ptr %a306
|
|
%t307 = load i1, ptr %a47
|
|
br i1 %t307, label %then4618, label %endif4620
|
|
then4618:
|
|
%t308 = load ptr, ptr %a1
|
|
%t309 = load { ptr, i64, i64 }, ptr %a306
|
|
%t310 = load %S.ast.Type, ptr %a16
|
|
%t311 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310)
|
|
store { ptr, i64, i64 } %t311, ptr %a306
|
|
br label %endif4620
|
|
endif4620:
|
|
%t312 = load ptr, ptr %a1
|
|
%t313 = load %S.ast.Node, ptr %a2
|
|
%t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t315 = load { ptr, i64, i64 }, ptr %t314
|
|
%t316 = load %S.ast.Type, ptr %a16
|
|
%t317 = load { ptr, i64, i64 }, ptr %a306
|
|
%t318 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t312, %S.ast.Node %t313, { ptr, i64, i64 } %t315, %S.ast.Type %t316, { ptr, i64, i64 } %t317, i1 true)
|
|
%t319 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t319, i32 0, i32 1
|
|
%t321 = load i64, ptr %t320
|
|
%t322 = icmp sgt i64 %t321, 0
|
|
br i1 %t322, label %then4621, label %endif4623
|
|
then4621:
|
|
%t323 = load ptr, ptr %a1
|
|
%t324 = load ptr, ptr %a1
|
|
%t325 = load %S.ast.Type, ptr %a27
|
|
%t326 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t324, %S.ast.Type %t325)
|
|
%t327 = load ptr, ptr %a1
|
|
%t328 = load { ptr, i64, i64 }, ptr %a248
|
|
%t329 = load %S.ast.Type, ptr %a4
|
|
%t330 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t327, { ptr, i64, i64 } %t328, %S.ast.Type %t329, i64 2)
|
|
%t331 = call { ptr, i64, i64 } @finch.gen.load(ptr %t323, { ptr, i64, i64 } %t326, { ptr, i64, i64 } %t330)
|
|
store { ptr, i64, i64 } %t331, ptr %a332
|
|
%t333 = load i1, ptr %a47
|
|
br i1 %t333, label %then4624, label %endif4626
|
|
then4624:
|
|
%t334 = load ptr, ptr %a1
|
|
%t335 = load { ptr, i64, i64 }, ptr %a332
|
|
%t336 = load %S.ast.Type, ptr %a27
|
|
%t337 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t334, { ptr, i64, i64 } %t335, %S.ast.Type %t336)
|
|
store { ptr, i64, i64 } %t337, ptr %a332
|
|
br label %endif4626
|
|
endif4626:
|
|
%t338 = load ptr, ptr %a1
|
|
%t339 = load %S.ast.Node, ptr %a2
|
|
%t340 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t341 = load { ptr, i64, i64 }, ptr %t340
|
|
%t342 = load %S.ast.Type, ptr %a27
|
|
%t343 = load { ptr, i64, i64 }, ptr %a332
|
|
%t344 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t338, %S.ast.Node %t339, { ptr, i64, i64 } %t341, %S.ast.Type %t342, { ptr, i64, i64 } %t343, i1 true)
|
|
br label %endif4623
|
|
endif4623:
|
|
%t345 = load ptr, ptr %a1
|
|
%t346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t347 = load { ptr, i64, i64 }, ptr %t346
|
|
%t348 = extractvalue { ptr, i64, i64 } %t347, 1
|
|
%t349 = icmp uge i64 1, %t348
|
|
br i1 %t349, label %range4627, label %inrange4628
|
|
range4627:
|
|
call void @finch_panic_index(ptr @.str.2950, i64 2181, i64 1, i64 %t348)
|
|
unreachable
|
|
inrange4628:
|
|
%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 %panic4629, label %ok4630
|
|
panic4629:
|
|
call void @finch_panic(ptr @.str.2951, i64 2183, ptr @.str.2952)
|
|
unreachable
|
|
ok4630:
|
|
%t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 11
|
|
%t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1
|
|
%t358 = load i64, ptr %t357
|
|
%t359 = icmp eq i64 %t358, 0
|
|
br i1 %t359, label %panic4631, label %ok4632
|
|
panic4631:
|
|
call void @finch_panic(ptr @.str.2953, i64 2183, ptr @.str.2954)
|
|
unreachable
|
|
ok4632:
|
|
%t360 = sub i64 %t358, 1
|
|
%t361 = load ptr, ptr %t356
|
|
%t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360
|
|
%t363 = load %S.gen.Loop, ptr %t362
|
|
store i64 %t360, ptr %t357
|
|
%t364 = load ptr, ptr %a1
|
|
%t365 = load { ptr, i64, i64 }, ptr %a90
|
|
call void @finch.gen.br(ptr %t364, { ptr, i64, i64 } %t365)
|
|
%t366 = load ptr, ptr %a1
|
|
%t367 = load { ptr, i64, i64 }, ptr %a90
|
|
call void @finch.gen.label(ptr %t366, { ptr, i64, i64 } %t367)
|
|
%t368 = load ptr, ptr %a1
|
|
%t369 = load { ptr, i64, i64 }, ptr %a50
|
|
%t370 = call { ptr, i64, i64 } @finch.gen.load(ptr %t368, { ptr, i64, i64 } { ptr @.str.2955, i64 3, i64 0 }, { ptr, i64, i64 } %t369)
|
|
store { ptr, i64, i64 } %t370, ptr %a371
|
|
%t372 = load ptr, ptr %a1
|
|
%t373 = load ptr, ptr %a1
|
|
%t374 = load { ptr, i64, i64 }, ptr %a371
|
|
store { ptr, i64, i64 } { ptr @.str.2957, i64 8, i64 0 }, ptr %a376
|
|
store { ptr, i64, i64 } %t374, ptr %a377
|
|
call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377)
|
|
%t378 = load { ptr, i64, i64 }, ptr %a375
|
|
store { ptr, i64, i64 } %t378, ptr %a380
|
|
store { ptr, i64, i64 } { ptr @.str.2958, i64 3, i64 0 }, ptr %a381
|
|
call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381)
|
|
%t382 = load { ptr, i64, i64 }, ptr %a379
|
|
%t383 = call { ptr, i64, i64 } @finch.gen.op(ptr %t373, { ptr, i64, i64 } %t382)
|
|
%t384 = load { ptr, i64, i64 }, ptr %a50
|
|
call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } { ptr @.str.2956, i64 3, i64 0 }, { ptr, i64, i64 } %t383, { ptr, i64, i64 } %t384)
|
|
%t385 = load ptr, ptr %a1
|
|
%t386 = load { ptr, i64, i64 }, ptr %a81
|
|
call void @finch.gen.br(ptr %t385, { ptr, i64, i64 } %t386)
|
|
%t387 = load ptr, ptr %a1
|
|
%t388 = load { ptr, i64, i64 }, ptr %a93
|
|
call void @finch.gen.label(ptr %t387, { ptr, i64, i64 } %t388)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.eachStmt(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a13 = alloca %S.gen.Ref, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca %S.ast.Type, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca %S.ast.Type, align 16
|
|
%a29 = alloca %S.ast.Type, align 16
|
|
%a34 = alloca %S.ast.Type, align 16
|
|
%a35 = alloca %S.ast.Type, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca %S.ast.Type, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca %S.ast.Type, align 16
|
|
%a101 = alloca %S.ast.Type, align 16
|
|
%a127 = alloca i1, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a317 = alloca { ptr, i64, i64 }, align 16
|
|
%a318 = alloca { ptr, i64, i64 }, align 16
|
|
%a319 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t3)
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
%t7 = extractvalue { ptr, i64, i64 } %t6, 1
|
|
%t8 = icmp uge i64 0, %t7
|
|
br i1 %t8, label %range4633, label %inrange4634
|
|
range4633:
|
|
call void @finch_panic_index(ptr @.str.2959, i64 2194, i64 0, i64 %t7)
|
|
unreachable
|
|
inrange4634:
|
|
%t9 = extractvalue { ptr, i64, i64 } %t6, 0
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0
|
|
%t11 = load %S.ast.Node, ptr %t10
|
|
%t12 = call %S.gen.Ref @finch.gen.ref(ptr %t4, %S.ast.Node %t11, i1 false)
|
|
store %S.gen.Ref %t12, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.2960, i64 0, i64 0 }, ptr %a14
|
|
%t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2961, i64 4, i64 0 })
|
|
store %S.ast.Type %t15, ptr %a16
|
|
%t17 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0
|
|
%t18 = load i1, ptr %t17
|
|
br i1 %t18, label %then4635, label %else4636
|
|
then4635:
|
|
%t19 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1
|
|
%t20 = getelementptr inbounds %S.gen.Place, ptr %t19, i32 0, i32 0
|
|
%t21 = load { ptr, i64, i64 }, ptr %t20
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
call void @finch_str_copy(ptr %a23, ptr %a22)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t24, ptr %a14
|
|
%t25 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1
|
|
%t26 = getelementptr inbounds %S.gen.Place, ptr %t25, i32 0, i32 1
|
|
%t27 = load %S.ast.Type, ptr %t26
|
|
store %S.ast.Type %t27, ptr %a28
|
|
call void @finch.copy.S_ast_Type(ptr %a29, ptr %a28)
|
|
%t30 = load %S.ast.Type, ptr %a29
|
|
store %S.ast.Type %t30, ptr %a16
|
|
br label %endif4637
|
|
else4636:
|
|
%t31 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2
|
|
%t32 = getelementptr inbounds %S.gen.Val, ptr %t31, i32 0, i32 1
|
|
%t33 = load %S.ast.Type, ptr %t32
|
|
store %S.ast.Type %t33, ptr %a34
|
|
call void @finch.copy.S_ast_Type(ptr %a35, ptr %a34)
|
|
%t36 = load %S.ast.Type, ptr %a35
|
|
store %S.ast.Type %t36, ptr %a16
|
|
%t37 = load ptr, ptr %a1
|
|
%t38 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2
|
|
%t39 = load %S.gen.Val, ptr %t38
|
|
%t40 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t37, %S.gen.Val %t39)
|
|
store { ptr, i64, i64 } %t40, ptr %a14
|
|
br label %endif4637
|
|
endif4637:
|
|
%t41 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0
|
|
%t42 = load { ptr, i64, i64 }, ptr %t41
|
|
store { ptr, i64, i64 } %t42, ptr %a43
|
|
store { ptr, i64, i64 } { ptr @.str.2962, i64 3, i64 0 }, ptr %a44
|
|
%t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44)
|
|
%t46 = icmp ne i32 %t45, 0
|
|
br i1 %t46, label %then4638, label %endif4640
|
|
then4638:
|
|
%t47 = load ptr, ptr %a1
|
|
%t48 = load %S.ast.Node, ptr %a2
|
|
%t49 = load { ptr, i64, i64 }, ptr %a14
|
|
%t50 = load %S.ast.Type, ptr %a16
|
|
%t51 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0
|
|
%t52 = load i1, ptr %t51
|
|
call void @finch.gen.eachMap(ptr %t47, %S.ast.Node %t48, { ptr, i64, i64 } %t49, %S.ast.Type %t50, i1 %t52)
|
|
%t53 = load ptr, ptr %a1
|
|
call void @finch.gen.popScope(ptr %t53)
|
|
ret void
|
|
endif4640:
|
|
%t54 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0
|
|
%t55 = load { ptr, i64, i64 }, ptr %t54
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
store { ptr, i64, i64 } { ptr @.str.2963, i64 5, i64 0 }, ptr %a57
|
|
%t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57)
|
|
%t59 = icmp eq i32 %t58, 0
|
|
br label %logic.from4641
|
|
logic.from4641:
|
|
br i1 %t59, label %logic.rhs4642, label %logic.end4643
|
|
logic.rhs4642:
|
|
%t60 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0
|
|
%t61 = load { ptr, i64, i64 }, ptr %t60
|
|
store { ptr, i64, i64 } %t61, ptr %a62
|
|
store { ptr, i64, i64 } { ptr @.str.2964, i64 3, i64 0 }, ptr %a63
|
|
%t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63)
|
|
%t65 = icmp eq i32 %t64, 0
|
|
br label %logic.rend4644
|
|
logic.rend4644:
|
|
br label %logic.end4643
|
|
logic.end4643:
|
|
%t66 = phi i1 [ false, %logic.from4641 ], [ %t65, %logic.rend4644 ]
|
|
br i1 %t66, label %then4645, label %endif4647
|
|
then4645:
|
|
%t67 = load ptr, ptr %a1
|
|
%t68 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t69 = load { ptr, i64, i64 }, ptr %t68
|
|
%t70 = extractvalue { ptr, i64, i64 } %t69, 1
|
|
%t71 = icmp uge i64 0, %t70
|
|
br i1 %t71, label %range4648, label %inrange4649
|
|
range4648:
|
|
call void @finch_panic_index(ptr @.str.2965, i64 2210, i64 0, i64 %t70)
|
|
unreachable
|
|
inrange4649:
|
|
%t72 = extractvalue { ptr, i64, i64 } %t69, 0
|
|
%t73 = getelementptr inbounds %S.ast.Node, ptr %t72, i64 0
|
|
%t74 = load %S.ast.Node, ptr %t73
|
|
%t75 = load %S.ast.Type, ptr %a16
|
|
%t76 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t75)
|
|
store { ptr, i64, i64 } { ptr @.str.2966, i64 55, i64 0 }, ptr %a78
|
|
store { ptr, i64, i64 } %t76, ptr %a79
|
|
call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79)
|
|
%t80 = load { ptr, i64, i64 }, ptr %a77
|
|
store { ptr, i64, i64 } %t80, ptr %a82
|
|
store { ptr, i64, i64 } { ptr @.str.2967, i64 36, i64 0 }, ptr %a83
|
|
call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83)
|
|
%t84 = load { ptr, i64, i64 }, ptr %a81
|
|
call void @finch.gen.fail(ptr %t67, %S.ast.Node %t74, { ptr, i64, i64 } %t84)
|
|
br label %endif4647
|
|
endif4647:
|
|
%t85 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2968, i64 4, i64 0 })
|
|
store %S.ast.Type %t85, ptr %a86
|
|
%t87 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0
|
|
%t88 = load { ptr, i64, i64 }, ptr %t87
|
|
store { ptr, i64, i64 } %t88, ptr %a89
|
|
store { ptr, i64, i64 } { ptr @.str.2969, i64 5, i64 0 }, ptr %a90
|
|
%t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90)
|
|
%t92 = icmp ne i32 %t91, 0
|
|
br i1 %t92, label %then4650, label %endif4652
|
|
then4650:
|
|
%t93 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1
|
|
%t94 = load { ptr, i64, i64 }, ptr %t93
|
|
%t95 = extractvalue { ptr, i64, i64 } %t94, 1
|
|
%t96 = icmp uge i64 0, %t95
|
|
br i1 %t96, label %range4653, label %inrange4654
|
|
range4653:
|
|
call void @finch_panic_index(ptr @.str.2970, i64 2214, i64 0, i64 %t95)
|
|
unreachable
|
|
inrange4654:
|
|
%t97 = extractvalue { ptr, i64, i64 } %t94, 0
|
|
%t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i64 0
|
|
%t99 = load %S.ast.Type, ptr %t98
|
|
store %S.ast.Type %t99, ptr %a100
|
|
call void @finch.copy.S_ast_Type(ptr %a101, ptr %a100)
|
|
%t102 = load %S.ast.Type, ptr %a101
|
|
store %S.ast.Type %t102, ptr %a86
|
|
br label %endif4652
|
|
endif4652:
|
|
%t103 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0
|
|
%t104 = load i1, ptr %t103
|
|
br label %logic.from4655
|
|
logic.from4655:
|
|
br i1 %t104, label %logic.rhs4656, label %logic.end4657
|
|
logic.rhs4656:
|
|
%t105 = load ptr, ptr %a1
|
|
%t106 = load %S.ast.Type, ptr %a86
|
|
%t107 = call i1 @finch.gen.owning(ptr %t105, %S.ast.Type %t106)
|
|
br label %logic.rend4658
|
|
logic.rend4658:
|
|
br label %logic.end4657
|
|
logic.end4657:
|
|
%t108 = phi i1 [ false, %logic.from4655 ], [ %t107, %logic.rend4658 ]
|
|
br label %logic.from4659
|
|
logic.from4659:
|
|
br i1 %t108, label %logic.rhs4660, label %logic.end4661
|
|
logic.rhs4660:
|
|
%t109 = load ptr, ptr %a1
|
|
%t110 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t111 = load { ptr, i64, i64 }, ptr %t110
|
|
%t112 = extractvalue { ptr, i64, i64 } %t111, 1
|
|
%t113 = icmp uge i64 0, %t112
|
|
br i1 %t113, label %range4662, label %inrange4663
|
|
range4662:
|
|
call void @finch_panic_index(ptr @.str.2971, i64 2216, i64 0, i64 %t112)
|
|
unreachable
|
|
inrange4663:
|
|
%t114 = extractvalue { ptr, i64, i64 } %t111, 0
|
|
%t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 0
|
|
%t116 = load %S.ast.Node, ptr %t115
|
|
%t117 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t116)
|
|
%t118 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t119 = load { ptr, i64, i64 }, ptr %t118
|
|
%t120 = extractvalue { ptr, i64, i64 } %t119, 1
|
|
%t121 = icmp uge i64 1, %t120
|
|
br i1 %t121, label %range4664, label %inrange4665
|
|
range4664:
|
|
call void @finch_panic_index(ptr @.str.2972, i64 2216, i64 1, i64 %t120)
|
|
unreachable
|
|
inrange4665:
|
|
%t122 = extractvalue { ptr, i64, i64 } %t119, 0
|
|
%t123 = getelementptr inbounds %S.ast.Node, ptr %t122, i64 1
|
|
%t124 = load %S.ast.Node, ptr %t123
|
|
%t125 = call i1 @finch.gen.mutates(ptr %t109, { ptr, i64, i64 } %t117, %S.ast.Node %t124)
|
|
br label %logic.rend4666
|
|
logic.rend4666:
|
|
br label %logic.end4661
|
|
logic.end4661:
|
|
%t126 = phi i1 [ false, %logic.from4659 ], [ %t125, %logic.rend4666 ]
|
|
store i1 %t126, ptr %a127
|
|
%t128 = load ptr, ptr %a1
|
|
%t129 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t128, { ptr, i64, i64 } { ptr @.str.2973, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t129, ptr %a130
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = load { ptr, i64, i64 }, ptr %a130
|
|
call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } { ptr @.str.2974, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.2975, i64 1, i64 0 }, { ptr, i64, i64 } %t132)
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t133, { ptr, i64, i64 } { ptr @.str.2976, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t134, ptr %a135
|
|
%t136 = load ptr, ptr %a1
|
|
%t137 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t136, { ptr, i64, i64 } { ptr @.str.2977, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t137, ptr %a138
|
|
%t139 = load ptr, ptr %a1
|
|
%t140 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t139, { ptr, i64, i64 } { ptr @.str.2978, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t140, ptr %a141
|
|
%t142 = load ptr, ptr %a1
|
|
%t143 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t142, { ptr, i64, i64 } { ptr @.str.2979, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t143, ptr %a144
|
|
%t145 = load ptr, ptr %a1
|
|
%t146 = load { ptr, i64, i64 }, ptr %a135
|
|
call void @finch.gen.br(ptr %t145, { ptr, i64, i64 } %t146)
|
|
%t147 = load ptr, ptr %a1
|
|
%t148 = load { ptr, i64, i64 }, ptr %a135
|
|
call void @finch.gen.label(ptr %t147, { ptr, i64, i64 } %t148)
|
|
%t149 = load ptr, ptr %a1
|
|
%t150 = load ptr, ptr %a1
|
|
%t151 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.2981, i64 46, i64 0 }, ptr %a153
|
|
store { ptr, i64, i64 } %t151, ptr %a154
|
|
call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154)
|
|
%t155 = load { ptr, i64, i64 }, ptr %a152
|
|
store { ptr, i64, i64 } %t155, ptr %a157
|
|
store { ptr, i64, i64 } { ptr @.str.2982, i64 14, i64 0 }, ptr %a158
|
|
call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158)
|
|
%t159 = load { ptr, i64, i64 }, ptr %a156
|
|
%t160 = call { ptr, i64, i64 } @finch.gen.op(ptr %t150, { ptr, i64, i64 } %t159)
|
|
%t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t149, { ptr, i64, i64 } { ptr @.str.2980, i64 3, i64 0 }, { ptr, i64, i64 } %t160)
|
|
store { ptr, i64, i64 } %t161, ptr %a162
|
|
%t163 = load ptr, ptr %a1
|
|
%t164 = load { ptr, i64, i64 }, ptr %a130
|
|
%t165 = call { ptr, i64, i64 } @finch.gen.load(ptr %t163, { ptr, i64, i64 } { ptr @.str.2983, i64 3, i64 0 }, { ptr, i64, i64 } %t164)
|
|
store { ptr, i64, i64 } %t165, ptr %a166
|
|
%t167 = load ptr, ptr %a1
|
|
%t168 = load { ptr, i64, i64 }, ptr %a166
|
|
store { ptr, i64, i64 } { ptr @.str.2984, i64 13, i64 0 }, ptr %a170
|
|
store { ptr, i64, i64 } %t168, ptr %a171
|
|
call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171)
|
|
%t172 = load { ptr, i64, i64 }, ptr %a169
|
|
store { ptr, i64, i64 } %t172, ptr %a174
|
|
store { ptr, i64, i64 } { ptr @.str.2985, i64 2, i64 0 }, ptr %a175
|
|
call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175)
|
|
%t176 = load { ptr, i64, i64 }, ptr %a173
|
|
%t177 = load { ptr, i64, i64 }, ptr %a162
|
|
store { ptr, i64, i64 } %t176, ptr %a179
|
|
store { ptr, i64, i64 } %t177, ptr %a180
|
|
call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180)
|
|
%t181 = load { ptr, i64, i64 }, ptr %a178
|
|
%t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t181)
|
|
store { ptr, i64, i64 } %t182, ptr %a183
|
|
%t184 = load ptr, ptr %a1
|
|
%t185 = load { ptr, i64, i64 }, ptr %a183
|
|
%t186 = load { ptr, i64, i64 }, ptr %a138
|
|
%t187 = load { ptr, i64, i64 }, ptr %a144
|
|
call void @finch.gen.condBr(ptr %t184, { ptr, i64, i64 } %t185, { ptr, i64, i64 } %t186, { ptr, i64, i64 } %t187)
|
|
%t188 = load ptr, ptr %a1
|
|
%t189 = load { ptr, i64, i64 }, ptr %a138
|
|
call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189)
|
|
%t190 = load ptr, ptr %a1
|
|
%t191 = load { ptr, i64, i64 }, ptr %a14
|
|
%t192 = call { ptr, i64, i64 } @finch.gen.load(ptr %t190, { ptr, i64, i64 } { ptr @.str.2986, i64 3, i64 0 }, { ptr, i64, i64 } %t191)
|
|
store { ptr, i64, i64 } %t192, ptr %a193
|
|
%t194 = load ptr, ptr %a1
|
|
%t195 = load ptr, ptr %a1
|
|
%t196 = load %S.ast.Type, ptr %a86
|
|
%t197 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t195, %S.ast.Type %t196)
|
|
store { ptr, i64, i64 } { ptr @.str.2987, i64 23, i64 0 }, ptr %a199
|
|
store { ptr, i64, i64 } %t197, ptr %a200
|
|
call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200)
|
|
%t201 = load { ptr, i64, i64 }, ptr %a198
|
|
store { ptr, i64, i64 } %t201, ptr %a203
|
|
store { ptr, i64, i64 } { ptr @.str.2988, i64 6, i64 0 }, ptr %a204
|
|
call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204)
|
|
%t205 = load { ptr, i64, i64 }, ptr %a202
|
|
%t206 = load { ptr, i64, i64 }, ptr %a193
|
|
store { ptr, i64, i64 } %t205, ptr %a208
|
|
store { ptr, i64, i64 } %t206, ptr %a209
|
|
call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209)
|
|
%t210 = load { ptr, i64, i64 }, ptr %a207
|
|
store { ptr, i64, i64 } %t210, ptr %a212
|
|
store { ptr, i64, i64 } { ptr @.str.2989, i64 6, i64 0 }, ptr %a213
|
|
call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213)
|
|
%t214 = load { ptr, i64, i64 }, ptr %a211
|
|
%t215 = load { ptr, i64, i64 }, ptr %a166
|
|
store { ptr, i64, i64 } %t214, ptr %a217
|
|
store { ptr, i64, i64 } %t215, ptr %a218
|
|
call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218)
|
|
%t219 = load { ptr, i64, i64 }, ptr %a216
|
|
%t220 = call { ptr, i64, i64 } @finch.gen.op(ptr %t194, { ptr, i64, i64 } %t219)
|
|
store { ptr, i64, i64 } %t220, ptr %a221
|
|
%t222 = load ptr, ptr %a1
|
|
%t223 = load ptr, ptr %a1
|
|
%t224 = load %S.ast.Type, ptr %a86
|
|
%t225 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t223, %S.ast.Type %t224)
|
|
%t226 = load { ptr, i64, i64 }, ptr %a221
|
|
%t227 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } %t225, { ptr, i64, i64 } %t226)
|
|
store { ptr, i64, i64 } %t227, ptr %a228
|
|
%t229 = load i1, ptr %a127
|
|
br i1 %t229, label %then4667, label %endif4669
|
|
then4667:
|
|
%t230 = load ptr, ptr %a1
|
|
%t231 = load { ptr, i64, i64 }, ptr %a228
|
|
%t232 = load %S.ast.Type, ptr %a86
|
|
%t233 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t230, { ptr, i64, i64 } %t231, %S.ast.Type %t232)
|
|
store { ptr, i64, i64 } %t233, ptr %a228
|
|
br label %endif4669
|
|
endif4669:
|
|
%t234 = load ptr, ptr %a1
|
|
%t235 = icmp eq ptr %t234, null
|
|
br i1 %t235, label %panic4670, label %ok4671
|
|
panic4670:
|
|
call void @finch_panic(ptr @.str.2990, i64 2236, ptr @.str.2991)
|
|
unreachable
|
|
ok4671:
|
|
%t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 11
|
|
%t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1
|
|
%t238 = load { ptr, i64, i64 }, ptr %a141
|
|
store { ptr, i64, i64 } %t238, ptr %a239
|
|
call void @finch_str_copy(ptr %a240, ptr %a239)
|
|
%t241 = load { ptr, i64, i64 }, ptr %a240
|
|
%t242 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t241, 0
|
|
%t243 = load { ptr, i64, i64 }, ptr %a144
|
|
store { ptr, i64, i64 } %t243, ptr %a244
|
|
call void @finch_str_copy(ptr %a245, ptr %a244)
|
|
%t246 = load { ptr, i64, i64 }, ptr %a245
|
|
%t247 = insertvalue %S.gen.Loop %t242, { ptr, i64, i64 } %t246, 1
|
|
%t248 = load ptr, ptr %a1
|
|
%t249 = icmp eq ptr %t248, null
|
|
br i1 %t249, label %panic4672, label %ok4673
|
|
panic4672:
|
|
call void @finch_panic(ptr @.str.2992, i64 2236, ptr @.str.2993)
|
|
unreachable
|
|
ok4673:
|
|
%t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 10
|
|
%t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1
|
|
%t252 = load i64, ptr %t251
|
|
%t253 = insertvalue %S.gen.Loop %t247, i64 %t252, 2
|
|
%t254 = load i64, ptr %t237
|
|
%t255 = add i64 %t254, 1
|
|
call void @finch_arr_reserve(ptr %t236, i64 %t255, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64))
|
|
%t256 = load ptr, ptr %t236
|
|
%t257 = getelementptr inbounds %S.gen.Loop, ptr %t256, i64 %t254
|
|
store %S.gen.Loop %t253, ptr %t257
|
|
store i64 %t255, ptr %t237
|
|
%t258 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t258)
|
|
%t259 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t260 = load { ptr, i64, i64 }, ptr %t259
|
|
store { ptr, i64, i64 } %t260, ptr %a261
|
|
call void @finch_str_copy(ptr %a262, ptr %a261)
|
|
%t263 = load { ptr, i64, i64 }, ptr %a262
|
|
store { ptr, i64, i64 } %t263, ptr %a264
|
|
%t265 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1
|
|
%t267 = load i64, ptr %t266
|
|
%t268 = icmp sgt i64 %t267, 0
|
|
br i1 %t268, label %then4674, label %endif4676
|
|
then4674:
|
|
%t269 = load ptr, ptr %a1
|
|
%t270 = load %S.ast.Node, ptr %a2
|
|
%t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t272 = load { ptr, i64, i64 }, ptr %t271
|
|
%t273 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2994, i64 3, i64 0 })
|
|
%t274 = load { ptr, i64, i64 }, ptr %a166
|
|
%t275 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t269, %S.ast.Node %t270, { ptr, i64, i64 } %t272, %S.ast.Type %t273, { ptr, i64, i64 } %t274, i1 true)
|
|
%t276 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t277 = load { ptr, i64, i64 }, ptr %t276
|
|
store { ptr, i64, i64 } %t277, ptr %a278
|
|
call void @finch_str_copy(ptr %a279, ptr %a278)
|
|
%t280 = load { ptr, i64, i64 }, ptr %a279
|
|
store { ptr, i64, i64 } %t280, ptr %a264
|
|
br label %endif4676
|
|
endif4676:
|
|
%t281 = load ptr, ptr %a1
|
|
%t282 = load %S.ast.Node, ptr %a2
|
|
%t283 = load { ptr, i64, i64 }, ptr %a264
|
|
%t284 = load %S.ast.Type, ptr %a86
|
|
%t285 = load { ptr, i64, i64 }, ptr %a228
|
|
%t286 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t281, %S.ast.Node %t282, { ptr, i64, i64 } %t283, %S.ast.Type %t284, { ptr, i64, i64 } %t285, i1 true)
|
|
%t287 = load ptr, ptr %a1
|
|
%t288 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t289 = load { ptr, i64, i64 }, ptr %t288
|
|
%t290 = extractvalue { ptr, i64, i64 } %t289, 1
|
|
%t291 = icmp uge i64 1, %t290
|
|
br i1 %t291, label %range4677, label %inrange4678
|
|
range4677:
|
|
call void @finch_panic_index(ptr @.str.2995, i64 2244, i64 1, i64 %t290)
|
|
unreachable
|
|
inrange4678:
|
|
%t292 = extractvalue { ptr, i64, i64 } %t289, 0
|
|
%t293 = getelementptr inbounds %S.ast.Node, ptr %t292, i64 1
|
|
%t294 = load %S.ast.Node, ptr %t293
|
|
call void @finch.gen.block(ptr %t287, %S.ast.Node %t294, i1 true)
|
|
%t295 = load ptr, ptr %a1
|
|
call void @finch.gen.popScope(ptr %t295)
|
|
%t296 = load ptr, ptr %a1
|
|
%t297 = icmp eq ptr %t296, null
|
|
br i1 %t297, label %panic4679, label %ok4680
|
|
panic4679:
|
|
call void @finch_panic(ptr @.str.2996, i64 2246, ptr @.str.2997)
|
|
unreachable
|
|
ok4680:
|
|
%t298 = getelementptr inbounds %S.gen.Gen, ptr %t296, i32 0, i32 11
|
|
%t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1
|
|
%t300 = load i64, ptr %t299
|
|
%t301 = icmp eq i64 %t300, 0
|
|
br i1 %t301, label %panic4681, label %ok4682
|
|
panic4681:
|
|
call void @finch_panic(ptr @.str.2998, i64 2246, ptr @.str.2999)
|
|
unreachable
|
|
ok4682:
|
|
%t302 = sub i64 %t300, 1
|
|
%t303 = load ptr, ptr %t298
|
|
%t304 = getelementptr inbounds %S.gen.Loop, ptr %t303, i64 %t302
|
|
%t305 = load %S.gen.Loop, ptr %t304
|
|
store i64 %t302, ptr %t299
|
|
%t306 = load ptr, ptr %a1
|
|
%t307 = load { ptr, i64, i64 }, ptr %a141
|
|
call void @finch.gen.br(ptr %t306, { ptr, i64, i64 } %t307)
|
|
%t308 = load ptr, ptr %a1
|
|
%t309 = load { ptr, i64, i64 }, ptr %a141
|
|
call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309)
|
|
%t310 = load ptr, ptr %a1
|
|
%t311 = load { ptr, i64, i64 }, ptr %a130
|
|
%t312 = call { ptr, i64, i64 } @finch.gen.load(ptr %t310, { ptr, i64, i64 } { ptr @.str.3000, i64 3, i64 0 }, { ptr, i64, i64 } %t311)
|
|
store { ptr, i64, i64 } %t312, ptr %a313
|
|
%t314 = load ptr, ptr %a1
|
|
%t315 = load ptr, ptr %a1
|
|
%t316 = load { ptr, i64, i64 }, ptr %a313
|
|
store { ptr, i64, i64 } { ptr @.str.3002, i64 8, i64 0 }, ptr %a318
|
|
store { ptr, i64, i64 } %t316, ptr %a319
|
|
call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319)
|
|
%t320 = load { ptr, i64, i64 }, ptr %a317
|
|
store { ptr, i64, i64 } %t320, ptr %a322
|
|
store { ptr, i64, i64 } { ptr @.str.3003, i64 3, i64 0 }, ptr %a323
|
|
call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323)
|
|
%t324 = load { ptr, i64, i64 }, ptr %a321
|
|
%t325 = call { ptr, i64, i64 } @finch.gen.op(ptr %t315, { ptr, i64, i64 } %t324)
|
|
%t326 = load { ptr, i64, i64 }, ptr %a130
|
|
call void @finch.gen.store(ptr %t314, { ptr, i64, i64 } { ptr @.str.3001, i64 3, i64 0 }, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326)
|
|
%t327 = load ptr, ptr %a1
|
|
%t328 = load { ptr, i64, i64 }, ptr %a135
|
|
call void @finch.gen.br(ptr %t327, { ptr, i64, i64 } %t328)
|
|
%t329 = load ptr, ptr %a1
|
|
%t330 = load { ptr, i64, i64 }, ptr %a144
|
|
call void @finch.gen.label(ptr %t329, { ptr, i64, i64 } %t330)
|
|
%t331 = load ptr, ptr %a1
|
|
call void @finch.gen.popScope(ptr %t331)
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.gen.returnStmt(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca %S.ast.Node, align 16
|
|
%a48 = alloca %S.ast.Node, align 16
|
|
%a50 = alloca %S.ast.Node, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca %S.gen.Val, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a247 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca %S.gen.Val, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca i1, align 16
|
|
%a309 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca i64, align 16
|
|
%a348 = alloca { ptr, i64, i64 }, align 16
|
|
%a349 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a352 = alloca { ptr, i64, i64 }, align 16
|
|
%a353 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a357 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a367 = alloca { ptr, i64, i64 }, align 16
|
|
%a369 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a374 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a378 = alloca { ptr, i64, i64 }, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a389 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a391 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a395 = alloca { ptr, i64, i64 }, align 16
|
|
%a398 = alloca { ptr, i64, i64 }, align 16
|
|
%a399 = alloca { ptr, i64, i64 }, align 16
|
|
%a400 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a403 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a415 = alloca { ptr, i64, i64 }, align 16
|
|
%a416 = alloca { ptr, i64, i64 }, align 16
|
|
%a417 = alloca { ptr, i64, i64 }, align 16
|
|
%a419 = alloca { ptr, i64, i64 }, align 16
|
|
%a420 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a437 = alloca { ptr, i64, i64 }, align 16
|
|
%a438 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a441 = alloca { ptr, i64, i64 }, align 16
|
|
%a442 = alloca { ptr, i64, i64 }, align 16
|
|
%a445 = alloca { ptr, i64, i64 }, align 16
|
|
%a446 = alloca { ptr, i64, i64 }, align 16
|
|
%a447 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic4683, label %ok4684
|
|
panic4683:
|
|
call void @finch_panic(ptr @.str.3004, i64 2257, ptr @.str.3005)
|
|
unreachable
|
|
ok4684:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 42
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = icmp sgt i64 %t6, 0
|
|
br i1 %t7, label %then4685, label %endif4687
|
|
then4685:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3006, i64 33, i64 0 })
|
|
br label %endif4687
|
|
endif4687:
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1
|
|
%t12 = load i64, ptr %t11
|
|
%t13 = icmp sgt i64 %t12, 0
|
|
br label %logic.from4688
|
|
logic.from4688:
|
|
br i1 %t13, label %logic.rhs4689, label %logic.end4690
|
|
logic.rhs4689:
|
|
%t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t15 = load { ptr, i64, i64 }, ptr %t14
|
|
%t16 = extractvalue { ptr, i64, i64 } %t15, 1
|
|
%t17 = icmp uge i64 0, %t16
|
|
br i1 %t17, label %range4691, label %inrange4692
|
|
range4691:
|
|
call void @finch_panic_index(ptr @.str.3007, i64 2261, i64 0, i64 %t16)
|
|
unreachable
|
|
inrange4692:
|
|
%t18 = extractvalue { ptr, i64, i64 } %t15, 0
|
|
%t19 = getelementptr inbounds %S.ast.Node, ptr %t18, i64 0
|
|
%t20 = getelementptr inbounds %S.ast.Node, ptr %t19, i32 0, i32 0
|
|
%t21 = load { ptr, i64, i64 }, ptr %t20
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
store { ptr, i64, i64 } { ptr @.str.3008, i64 4, i64 0 }, ptr %a23
|
|
%t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23)
|
|
%t25 = icmp ne i32 %t24, 0
|
|
br label %logic.rend4693
|
|
logic.rend4693:
|
|
br label %logic.end4690
|
|
logic.end4690:
|
|
%t26 = phi i1 [ false, %logic.from4688 ], [ %t25, %logic.rend4693 ]
|
|
br label %logic.from4694
|
|
logic.from4694:
|
|
br i1 %t26, label %logic.rhs4695, label %logic.end4696
|
|
logic.rhs4695:
|
|
%t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t28 = load { ptr, i64, i64 }, ptr %t27
|
|
%t29 = extractvalue { ptr, i64, i64 } %t28, 1
|
|
%t30 = icmp uge i64 0, %t29
|
|
br i1 %t30, label %range4697, label %inrange4698
|
|
range4697:
|
|
call void @finch_panic_index(ptr @.str.3009, i64 2261, i64 0, i64 %t29)
|
|
unreachable
|
|
inrange4698:
|
|
%t31 = extractvalue { ptr, i64, i64 } %t28, 0
|
|
%t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 0
|
|
%t33 = getelementptr inbounds %S.ast.Node, ptr %t32, i32 0, i32 1
|
|
%t34 = load { ptr, i64, i64 }, ptr %t33
|
|
store { ptr, i64, i64 } %t34, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.3010, i64 5, i64 0 }, ptr %a36
|
|
%t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36)
|
|
%t38 = icmp ne i32 %t37, 0
|
|
br label %logic.rend4699
|
|
logic.rend4699:
|
|
br label %logic.end4696
|
|
logic.end4696:
|
|
%t39 = phi i1 [ false, %logic.from4694 ], [ %t38, %logic.rend4699 ]
|
|
br i1 %t39, label %then4700, label %endif4702
|
|
then4700:
|
|
%t40 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t41 = load { ptr, i64, i64 }, ptr %t40
|
|
%t42 = extractvalue { ptr, i64, i64 } %t41, 1
|
|
%t43 = icmp uge i64 0, %t42
|
|
br i1 %t43, label %range4703, label %inrange4704
|
|
range4703:
|
|
call void @finch_panic_index(ptr @.str.3011, i64 2262, i64 0, i64 %t42)
|
|
unreachable
|
|
inrange4704:
|
|
%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 %panic4705, label %ok4706
|
|
panic4705:
|
|
call void @finch_panic(ptr @.str.3012, i64 2263, ptr @.str.3013)
|
|
unreachable
|
|
ok4706:
|
|
%t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 12
|
|
%t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9
|
|
%t55 = load i1, ptr %t54
|
|
%t56 = xor i1 %t55, true
|
|
br i1 %t56, label %then4707, label %endif4709
|
|
then4707:
|
|
store { ptr, i64, i64 } { ptr @.str.3014, i64 1, i64 0 }, ptr %a57
|
|
%t58 = load ptr, ptr %a1
|
|
%t59 = icmp eq ptr %t58, null
|
|
br i1 %t59, label %panic4710, label %ok4711
|
|
panic4710:
|
|
call void @finch_panic(ptr @.str.3015, i64 2265, ptr @.str.3016)
|
|
unreachable
|
|
ok4711:
|
|
%t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 12
|
|
%t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12
|
|
%t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0
|
|
%t63 = load { ptr, i64, i64 }, ptr %t62
|
|
store { ptr, i64, i64 } %t63, ptr %a64
|
|
store { ptr, i64, i64 } { ptr @.str.3017, i64 4, i64 0 }, ptr %a65
|
|
%t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65)
|
|
%t67 = icmp eq i32 %t66, 0
|
|
br i1 %t67, label %then4712, label %endif4714
|
|
then4712:
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = icmp eq ptr %t68, null
|
|
br i1 %t69, label %panic4715, label %ok4716
|
|
panic4715:
|
|
call void @finch_panic(ptr @.str.3018, i64 2266, ptr @.str.3019)
|
|
unreachable
|
|
ok4716:
|
|
%t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 12
|
|
%t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12
|
|
%t72 = load %S.ast.Type, ptr %t71
|
|
%t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72)
|
|
store { ptr, i64, i64 } %t73, ptr %a75
|
|
store { ptr, i64, i64 } { ptr @.str.3020, i64 1, i64 0 }, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
store { ptr, i64, i64 } %t77, ptr %a57
|
|
br label %endif4714
|
|
endif4714:
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = load %S.ast.Node, ptr %a50
|
|
%t80 = load ptr, ptr %a1
|
|
%t81 = icmp eq ptr %t80, null
|
|
br i1 %t81, label %panic4717, label %ok4718
|
|
panic4717:
|
|
call void @finch_panic(ptr @.str.3022, i64 2268, ptr @.str.3023)
|
|
unreachable
|
|
ok4718:
|
|
%t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 12
|
|
%t83 = getelementptr inbounds %S.gen.FnSig, ptr %t82, i32 0, i32 1
|
|
%t84 = load { ptr, i64, i64 }, ptr %t83
|
|
store { ptr, i64, i64 } { ptr @.str.3021, i64 1, i64 0 }, ptr %a86
|
|
store { ptr, i64, i64 } %t84, ptr %a87
|
|
call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87)
|
|
%t88 = load { ptr, i64, i64 }, ptr %a85
|
|
store { ptr, i64, i64 } %t88, ptr %a90
|
|
store { ptr, i64, i64 } { ptr @.str.3024, i64 64, i64 0 }, ptr %a91
|
|
call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91)
|
|
%t92 = load { ptr, i64, i64 }, ptr %a89
|
|
%t93 = load { ptr, i64, i64 }, ptr %a57
|
|
store { ptr, i64, i64 } %t92, ptr %a95
|
|
store { ptr, i64, i64 } %t93, ptr %a96
|
|
call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a94
|
|
store { ptr, i64, i64 } %t97, ptr %a99
|
|
store { ptr, i64, i64 } { ptr @.str.3025, i64 1, i64 0 }, ptr %a100
|
|
call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a98
|
|
call void @finch.gen.fail(ptr %t78, %S.ast.Node %t79, { ptr, i64, i64 } %t101)
|
|
br label %endif4709
|
|
endif4709:
|
|
%t102 = load ptr, ptr %a1
|
|
%t103 = load %S.ast.Node, ptr %a50
|
|
call void @finch.gen.checkArgs(ptr %t102, %S.ast.Node %t103, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3026, i64 5, i64 0 })
|
|
%t104 = load ptr, ptr %a1
|
|
%t105 = load ptr, ptr %a1
|
|
%t106 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9
|
|
%t107 = load { ptr, i64, i64 }, ptr %t106
|
|
%t108 = extractvalue { ptr, i64, i64 } %t107, 1
|
|
%t109 = icmp uge i64 0, %t108
|
|
br i1 %t109, label %range4719, label %inrange4720
|
|
range4719:
|
|
call void @finch_panic_index(ptr @.str.3027, i64 2271, i64 0, i64 %t108)
|
|
unreachable
|
|
inrange4720:
|
|
%t110 = extractvalue { ptr, i64, i64 } %t107, 0
|
|
%t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 0
|
|
%t112 = load %S.ast.Node, ptr %t111
|
|
%t113 = call %S.gen.Val @finch.gen.expr(ptr %t105, %S.ast.Node %t112)
|
|
%t114 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3028, i64 3, i64 0 })
|
|
%t115 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9
|
|
%t116 = load { ptr, i64, i64 }, ptr %t115
|
|
%t117 = extractvalue { ptr, i64, i64 } %t116, 1
|
|
%t118 = icmp uge i64 0, %t117
|
|
br i1 %t118, label %range4721, label %inrange4722
|
|
range4721:
|
|
call void @finch_panic_index(ptr @.str.3029, i64 2271, i64 0, i64 %t117)
|
|
unreachable
|
|
inrange4722:
|
|
%t119 = extractvalue { ptr, i64, i64 } %t116, 0
|
|
%t120 = getelementptr inbounds %S.ast.Node, ptr %t119, i64 0
|
|
%t121 = load %S.ast.Node, ptr %t120
|
|
%t122 = call %S.gen.Val @finch.gen.coerce(ptr %t104, %S.gen.Val %t113, %S.ast.Type %t114, %S.ast.Node %t121, { ptr, i64, i64 } { ptr @.str.3030, i64 17, i64 0 })
|
|
store %S.gen.Val %t122, ptr %a123
|
|
%t124 = load ptr, ptr %a1
|
|
%t125 = load %S.gen.Val, ptr %a123
|
|
%t126 = call { ptr, i64, i64 } @finch.gen.own(ptr %t124, %S.gen.Val %t125)
|
|
store { ptr, i64, i64 } %t126, ptr %a127
|
|
%t128 = load ptr, ptr %a1
|
|
call void @finch.gen.unwind(ptr %t128, i64 0)
|
|
%t129 = load ptr, ptr %a1
|
|
%t130 = load ptr, ptr %a1
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = icmp eq ptr %t131, null
|
|
br i1 %t132, label %panic4723, label %ok4724
|
|
panic4723:
|
|
call void @finch_panic(ptr @.str.3032, i64 2274, ptr @.str.3033)
|
|
unreachable
|
|
ok4724:
|
|
%t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 12
|
|
%t134 = load %S.gen.FnSig, ptr %t133
|
|
%t135 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t130, %S.gen.FnSig %t134)
|
|
store { ptr, i64, i64 } { ptr @.str.3031, i64 4, i64 0 }, ptr %a137
|
|
store { ptr, i64, i64 } %t135, ptr %a138
|
|
call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138)
|
|
%t139 = load { ptr, i64, i64 }, ptr %a136
|
|
store { ptr, i64, i64 } %t139, ptr %a141
|
|
store { ptr, i64, i64 } { ptr @.str.3034, i64 1, i64 0 }, ptr %a142
|
|
call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142)
|
|
%t143 = load { ptr, i64, i64 }, ptr %a140
|
|
%t144 = load ptr, ptr %a1
|
|
%t145 = load ptr, ptr %a1
|
|
%t146 = load ptr, ptr %a1
|
|
%t147 = icmp eq ptr %t146, null
|
|
br i1 %t147, label %panic4725, label %ok4726
|
|
panic4725:
|
|
call void @finch_panic(ptr @.str.3036, i64 2274, ptr @.str.3037)
|
|
unreachable
|
|
ok4726:
|
|
%t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 12
|
|
%t149 = load %S.gen.FnSig, ptr %t148
|
|
%t150 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t145, %S.gen.FnSig %t149)
|
|
store { ptr, i64, i64 } { ptr @.str.3035, i64 12, i64 0 }, ptr %a152
|
|
store { ptr, i64, i64 } %t150, ptr %a153
|
|
call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153)
|
|
%t154 = load { ptr, i64, i64 }, ptr %a151
|
|
store { ptr, i64, i64 } %t154, ptr %a156
|
|
store { ptr, i64, i64 } { ptr @.str.3038, i64 36, i64 0 }, ptr %a157
|
|
call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157)
|
|
%t158 = load { ptr, i64, i64 }, ptr %a155
|
|
%t159 = load { ptr, i64, i64 }, ptr %a127
|
|
store { ptr, i64, i64 } %t158, ptr %a161
|
|
store { ptr, i64, i64 } %t159, ptr %a162
|
|
call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162)
|
|
%t163 = load { ptr, i64, i64 }, ptr %a160
|
|
store { ptr, i64, i64 } %t163, ptr %a165
|
|
store { ptr, i64, i64 } { ptr @.str.3039, i64 3, i64 0 }, ptr %a166
|
|
call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166)
|
|
%t167 = load { ptr, i64, i64 }, ptr %a164
|
|
%t168 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t167)
|
|
store { ptr, i64, i64 } %t143, ptr %a170
|
|
store { ptr, i64, i64 } %t168, ptr %a171
|
|
call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171)
|
|
%t172 = load { ptr, i64, i64 }, ptr %a169
|
|
call void @finch.gen.emit(ptr %t129, { ptr, i64, i64 } %t172)
|
|
%t173 = load ptr, ptr %a1
|
|
%t174 = icmp eq ptr %t173, null
|
|
br i1 %t174, label %panic4727, label %ok4728
|
|
panic4727:
|
|
call void @finch_panic(ptr @.str.3040, i64 2275, ptr @.str.3041)
|
|
unreachable
|
|
ok4728:
|
|
%t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 9
|
|
store i1 true, ptr %t175
|
|
ret void
|
|
endif4702:
|
|
%t176 = load ptr, ptr %a1
|
|
%t177 = icmp eq ptr %t176, null
|
|
br i1 %t177, label %panic4729, label %ok4730
|
|
panic4729:
|
|
call void @finch_panic(ptr @.str.3042, i64 2278, ptr @.str.3043)
|
|
unreachable
|
|
ok4730:
|
|
%t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 12
|
|
%t179 = getelementptr inbounds %S.gen.FnSig, ptr %t178, i32 0, i32 12
|
|
%t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i32 0, i32 0
|
|
%t181 = load { ptr, i64, i64 }, ptr %t180
|
|
store { ptr, i64, i64 } %t181, ptr %a182
|
|
store { ptr, i64, i64 } { ptr @.str.3044, i64 4, i64 0 }, ptr %a183
|
|
%t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183)
|
|
%t185 = icmp ne i32 %t184, 0
|
|
br i1 %t185, label %then4731, label %endif4733
|
|
then4731:
|
|
%t186 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t187 = getelementptr inbounds { ptr, i64, i64 }, ptr %t186, i32 0, i32 1
|
|
%t188 = load i64, ptr %t187
|
|
%t189 = icmp sgt i64 %t188, 0
|
|
br i1 %t189, label %then4734, label %endif4736
|
|
then4734:
|
|
%t190 = load ptr, ptr %a1
|
|
%t191 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t192 = load { ptr, i64, i64 }, ptr %t191
|
|
%t193 = extractvalue { ptr, i64, i64 } %t192, 1
|
|
%t194 = icmp uge i64 0, %t193
|
|
br i1 %t194, label %range4737, label %inrange4738
|
|
range4737:
|
|
call void @finch_panic_index(ptr @.str.3045, i64 2280, i64 0, i64 %t193)
|
|
unreachable
|
|
inrange4738:
|
|
%t195 = extractvalue { ptr, i64, i64 } %t192, 0
|
|
%t196 = getelementptr inbounds %S.ast.Node, ptr %t195, i64 0
|
|
%t197 = load %S.ast.Node, ptr %t196
|
|
%t198 = load ptr, ptr %a1
|
|
%t199 = icmp eq ptr %t198, null
|
|
br i1 %t199, label %panic4739, label %ok4740
|
|
panic4739:
|
|
call void @finch_panic(ptr @.str.3047, i64 2280, ptr @.str.3048)
|
|
unreachable
|
|
ok4740:
|
|
%t200 = getelementptr inbounds %S.gen.Gen, ptr %t198, i32 0, i32 12
|
|
%t201 = getelementptr inbounds %S.gen.FnSig, ptr %t200, i32 0, i32 1
|
|
%t202 = load { ptr, i64, i64 }, ptr %t201
|
|
store { ptr, i64, i64 } { ptr @.str.3046, i64 1, i64 0 }, ptr %a204
|
|
store { ptr, i64, i64 } %t202, ptr %a205
|
|
call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205)
|
|
%t206 = load { ptr, i64, i64 }, ptr %a203
|
|
store { ptr, i64, i64 } %t206, ptr %a208
|
|
store { ptr, i64, i64 } { ptr @.str.3049, i64 46, i64 0 }, ptr %a209
|
|
call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209)
|
|
%t210 = load { ptr, i64, i64 }, ptr %a207
|
|
call void @finch.gen.fail(ptr %t190, %S.ast.Node %t197, { ptr, i64, i64 } %t210)
|
|
br label %endif4736
|
|
endif4736:
|
|
%t211 = load ptr, ptr %a1
|
|
call void @finch.gen.unwind(ptr %t211, i64 0)
|
|
%t212 = load ptr, ptr %a1
|
|
%t213 = icmp eq ptr %t212, null
|
|
br i1 %t213, label %panic4741, label %ok4742
|
|
panic4741:
|
|
call void @finch_panic(ptr @.str.3050, i64 2283, ptr @.str.3051)
|
|
unreachable
|
|
ok4742:
|
|
%t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 12
|
|
%t215 = getelementptr inbounds %S.gen.FnSig, ptr %t214, i32 0, i32 9
|
|
%t216 = load i1, ptr %t215
|
|
br i1 %t216, label %then4743, label %else4744
|
|
then4743:
|
|
%t217 = load ptr, ptr %a1
|
|
%t218 = load ptr, ptr %a1
|
|
%t219 = load ptr, ptr %a1
|
|
%t220 = icmp eq ptr %t219, null
|
|
br i1 %t220, label %panic4746, label %ok4747
|
|
panic4746:
|
|
call void @finch_panic(ptr @.str.3053, i64 2284, ptr @.str.3054)
|
|
unreachable
|
|
ok4747:
|
|
%t221 = getelementptr inbounds %S.gen.Gen, ptr %t219, i32 0, i32 12
|
|
%t222 = load %S.gen.FnSig, ptr %t221
|
|
%t223 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t218, %S.gen.FnSig %t222)
|
|
store { ptr, i64, i64 } { ptr @.str.3052, i64 4, i64 0 }, ptr %a225
|
|
store { ptr, i64, i64 } %t223, ptr %a226
|
|
call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226)
|
|
%t227 = load { ptr, i64, i64 }, ptr %a224
|
|
store { ptr, i64, i64 } %t227, ptr %a229
|
|
store { ptr, i64, i64 } { ptr @.str.3055, i64 53, i64 0 }, ptr %a230
|
|
call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230)
|
|
%t231 = load { ptr, i64, i64 }, ptr %a228
|
|
call void @finch.gen.emit(ptr %t217, { ptr, i64, i64 } %t231)
|
|
br label %endif4745
|
|
else4744:
|
|
%t232 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.3056, i64 8, i64 0 })
|
|
br label %endif4745
|
|
endif4745:
|
|
%t233 = load ptr, ptr %a1
|
|
%t234 = icmp eq ptr %t233, null
|
|
br i1 %t234, label %panic4748, label %ok4749
|
|
panic4748:
|
|
call void @finch_panic(ptr @.str.3057, i64 2288, ptr @.str.3058)
|
|
unreachable
|
|
ok4749:
|
|
%t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 9
|
|
store i1 true, ptr %t235
|
|
ret void
|
|
endif4733:
|
|
%t236 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1
|
|
%t238 = load i64, ptr %t237
|
|
%t239 = icmp eq i64 %t238, 0
|
|
br i1 %t239, label %then4750, label %endif4752
|
|
then4750:
|
|
%t240 = load ptr, ptr %a1
|
|
%t241 = load %S.ast.Node, ptr %a2
|
|
%t242 = load ptr, ptr %a1
|
|
%t243 = icmp eq ptr %t242, null
|
|
br i1 %t243, label %panic4753, label %ok4754
|
|
panic4753:
|
|
call void @finch_panic(ptr @.str.3060, i64 2292, ptr @.str.3061)
|
|
unreachable
|
|
ok4754:
|
|
%t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 12
|
|
%t245 = getelementptr inbounds %S.gen.FnSig, ptr %t244, i32 0, i32 1
|
|
%t246 = load { ptr, i64, i64 }, ptr %t245
|
|
store { ptr, i64, i64 } { ptr @.str.3059, i64 1, i64 0 }, ptr %a248
|
|
store { ptr, i64, i64 } %t246, ptr %a249
|
|
call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249)
|
|
%t250 = load { ptr, i64, i64 }, ptr %a247
|
|
store { ptr, i64, i64 } %t250, ptr %a252
|
|
store { ptr, i64, i64 } { ptr @.str.3062, i64 14, i64 0 }, ptr %a253
|
|
call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253)
|
|
%t254 = load { ptr, i64, i64 }, ptr %a251
|
|
%t255 = load ptr, ptr %a1
|
|
%t256 = icmp eq ptr %t255, null
|
|
br i1 %t256, label %panic4755, label %ok4756
|
|
panic4755:
|
|
call void @finch_panic(ptr @.str.3063, i64 2292, ptr @.str.3064)
|
|
unreachable
|
|
ok4756:
|
|
%t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 12
|
|
%t258 = getelementptr inbounds %S.gen.FnSig, ptr %t257, i32 0, i32 12
|
|
%t259 = load %S.ast.Type, ptr %t258
|
|
%t260 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t259)
|
|
store { ptr, i64, i64 } %t254, ptr %a262
|
|
store { ptr, i64, i64 } %t260, ptr %a263
|
|
call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263)
|
|
%t264 = load { ptr, i64, i64 }, ptr %a261
|
|
call void @finch.gen.fail(ptr %t240, %S.ast.Node %t241, { ptr, i64, i64 } %t264)
|
|
br label %endif4752
|
|
endif4752:
|
|
%t265 = load ptr, ptr %a1
|
|
%t266 = load ptr, ptr %a1
|
|
%t267 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t268 = load { ptr, i64, i64 }, ptr %t267
|
|
%t269 = extractvalue { ptr, i64, i64 } %t268, 1
|
|
%t270 = icmp uge i64 0, %t269
|
|
br i1 %t270, label %range4757, label %inrange4758
|
|
range4757:
|
|
call void @finch_panic_index(ptr @.str.3065, i64 2294, i64 0, i64 %t269)
|
|
unreachable
|
|
inrange4758:
|
|
%t271 = extractvalue { ptr, i64, i64 } %t268, 0
|
|
%t272 = getelementptr inbounds %S.ast.Node, ptr %t271, i64 0
|
|
%t273 = load %S.ast.Node, ptr %t272
|
|
%t274 = load ptr, ptr %a1
|
|
%t275 = icmp eq ptr %t274, null
|
|
br i1 %t275, label %panic4759, label %ok4760
|
|
panic4759:
|
|
call void @finch_panic(ptr @.str.3066, i64 2294, ptr @.str.3067)
|
|
unreachable
|
|
ok4760:
|
|
%t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 12
|
|
%t277 = getelementptr inbounds %S.gen.FnSig, ptr %t276, i32 0, i32 12
|
|
%t278 = load %S.ast.Type, ptr %t277
|
|
%t279 = call %S.gen.Val @finch.gen.exprWant(ptr %t266, %S.ast.Node %t273, %S.ast.Type %t278)
|
|
%t280 = load ptr, ptr %a1
|
|
%t281 = icmp eq ptr %t280, null
|
|
br i1 %t281, label %panic4761, label %ok4762
|
|
panic4761:
|
|
call void @finch_panic(ptr @.str.3068, i64 2294, ptr @.str.3069)
|
|
unreachable
|
|
ok4762:
|
|
%t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12
|
|
%t283 = getelementptr inbounds %S.gen.FnSig, ptr %t282, i32 0, i32 12
|
|
%t284 = load %S.ast.Type, ptr %t283
|
|
%t285 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t286 = load { ptr, i64, i64 }, ptr %t285
|
|
%t287 = extractvalue { ptr, i64, i64 } %t286, 1
|
|
%t288 = icmp uge i64 0, %t287
|
|
br i1 %t288, label %range4763, label %inrange4764
|
|
range4763:
|
|
call void @finch_panic_index(ptr @.str.3070, i64 2294, i64 0, i64 %t287)
|
|
unreachable
|
|
inrange4764:
|
|
%t289 = extractvalue { ptr, i64, i64 } %t286, 0
|
|
%t290 = getelementptr inbounds %S.ast.Node, ptr %t289, i64 0
|
|
%t291 = load %S.ast.Node, ptr %t290
|
|
%t292 = call %S.gen.Val @finch.gen.coerce(ptr %t265, %S.gen.Val %t279, %S.ast.Type %t284, %S.ast.Node %t291, { ptr, i64, i64 } { ptr @.str.3071, i64 18, i64 0 })
|
|
store %S.gen.Val %t292, ptr %a293
|
|
%t294 = getelementptr inbounds %S.gen.Val, ptr %a293, i32 0, i32 0
|
|
%t295 = load { ptr, i64, i64 }, ptr %t294
|
|
store { ptr, i64, i64 } %t295, ptr %a296
|
|
call void @finch_str_copy(ptr %a297, ptr %a296)
|
|
%t298 = load { ptr, i64, i64 }, ptr %a297
|
|
store { ptr, i64, i64 } %t298, ptr %a299
|
|
store i1 false, ptr %a300
|
|
%t301 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t302 = load { ptr, i64, i64 }, ptr %t301
|
|
%t303 = extractvalue { ptr, i64, i64 } %t302, 1
|
|
%t304 = icmp uge i64 0, %t303
|
|
br i1 %t304, label %range4765, label %inrange4766
|
|
range4765:
|
|
call void @finch_panic_index(ptr @.str.3072, i64 2298, i64 0, i64 %t303)
|
|
unreachable
|
|
inrange4766:
|
|
%t305 = extractvalue { ptr, i64, i64 } %t302, 0
|
|
%t306 = getelementptr inbounds %S.ast.Node, ptr %t305, i64 0
|
|
%t307 = getelementptr inbounds %S.ast.Node, ptr %t306, i32 0, i32 0
|
|
%t308 = load { ptr, i64, i64 }, ptr %t307
|
|
store { ptr, i64, i64 } %t308, ptr %a309
|
|
store { ptr, i64, i64 } { ptr @.str.3073, i64 3, i64 0 }, ptr %a310
|
|
%t311 = call i32 @finch_str_eq(ptr %a309, ptr %a310)
|
|
%t312 = icmp ne i32 %t311, 0
|
|
br i1 %t312, label %then4767, label %endif4769
|
|
then4767:
|
|
%t313 = load ptr, ptr %a1
|
|
%t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t315 = load { ptr, i64, i64 }, ptr %t314
|
|
%t316 = extractvalue { ptr, i64, i64 } %t315, 1
|
|
%t317 = icmp uge i64 0, %t316
|
|
br i1 %t317, label %range4770, label %inrange4771
|
|
range4770:
|
|
call void @finch_panic_index(ptr @.str.3074, i64 2299, i64 0, i64 %t316)
|
|
unreachable
|
|
inrange4771:
|
|
%t318 = extractvalue { ptr, i64, i64 } %t315, 0
|
|
%t319 = getelementptr inbounds %S.ast.Node, ptr %t318, i64 0
|
|
%t320 = getelementptr inbounds %S.ast.Node, ptr %t319, i32 0, i32 1
|
|
%t321 = load { ptr, i64, i64 }, ptr %t320
|
|
%t322 = call i64 @finch.gen.lookup(ptr %t313, { ptr, i64, i64 } %t321)
|
|
store i64 %t322, ptr %a323
|
|
%t324 = load i64, ptr %a323
|
|
%t325 = icmp sge i64 %t324, 0
|
|
br label %logic.from4772
|
|
logic.from4772:
|
|
br i1 %t325, label %logic.rhs4773, label %logic.end4774
|
|
logic.rhs4773:
|
|
%t326 = load i64, ptr %a323
|
|
%t327 = sdiv i64 %t326, 100000
|
|
%t328 = icmp sgt i64 %t327, 0
|
|
br label %logic.rend4775
|
|
logic.rend4775:
|
|
br label %logic.end4774
|
|
logic.end4774:
|
|
%t329 = phi i1 [ false, %logic.from4772 ], [ %t328, %logic.rend4775 ]
|
|
store i1 %t329, ptr %a300
|
|
br label %endif4769
|
|
endif4769:
|
|
%t330 = load i1, ptr %a300
|
|
%t331 = xor i1 %t330, true
|
|
br i1 %t331, label %then4776, label %endif4778
|
|
then4776:
|
|
%t332 = load ptr, ptr %a1
|
|
%t333 = load %S.gen.Val, ptr %a293
|
|
%t334 = call { ptr, i64, i64 } @finch.gen.own(ptr %t332, %S.gen.Val %t333)
|
|
store { ptr, i64, i64 } %t334, ptr %a299
|
|
br label %endif4778
|
|
endif4778:
|
|
%t335 = load ptr, ptr %a1
|
|
call void @finch.gen.unwind(ptr %t335, i64 0)
|
|
%t336 = load ptr, ptr %a1
|
|
%t337 = icmp eq ptr %t336, null
|
|
br i1 %t337, label %panic4779, label %ok4780
|
|
panic4779:
|
|
call void @finch_panic(ptr @.str.3075, i64 2306, ptr @.str.3076)
|
|
unreachable
|
|
ok4780:
|
|
%t338 = getelementptr inbounds %S.gen.Gen, ptr %t336, i32 0, i32 12
|
|
%t339 = getelementptr inbounds %S.gen.FnSig, ptr %t338, i32 0, i32 9
|
|
%t340 = load i1, ptr %t339
|
|
br i1 %t340, label %then4781, label %else4782
|
|
then4781:
|
|
%t341 = load ptr, ptr %a1
|
|
%t342 = load ptr, ptr %a1
|
|
%t343 = load ptr, ptr %a1
|
|
%t344 = icmp eq ptr %t343, null
|
|
br i1 %t344, label %panic4784, label %ok4785
|
|
panic4784:
|
|
call void @finch_panic(ptr @.str.3078, i64 2307, ptr @.str.3079)
|
|
unreachable
|
|
ok4785:
|
|
%t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 12
|
|
%t346 = load %S.gen.FnSig, ptr %t345
|
|
%t347 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t342, %S.gen.FnSig %t346)
|
|
store { ptr, i64, i64 } { ptr @.str.3077, i64 12, i64 0 }, ptr %a349
|
|
store { ptr, i64, i64 } %t347, ptr %a350
|
|
call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350)
|
|
%t351 = load { ptr, i64, i64 }, ptr %a348
|
|
store { ptr, i64, i64 } %t351, ptr %a353
|
|
store { ptr, i64, i64 } { ptr @.str.3080, i64 28, i64 0 }, ptr %a354
|
|
call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354)
|
|
%t355 = load { ptr, i64, i64 }, ptr %a352
|
|
%t356 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t355)
|
|
store { ptr, i64, i64 } %t356, ptr %a357
|
|
%t358 = load ptr, ptr %a1
|
|
%t359 = load ptr, ptr %a1
|
|
%t360 = load ptr, ptr %a1
|
|
%t361 = icmp eq ptr %t360, null
|
|
br i1 %t361, label %panic4786, label %ok4787
|
|
panic4786:
|
|
call void @finch_panic(ptr @.str.3082, i64 2308, ptr @.str.3083)
|
|
unreachable
|
|
ok4787:
|
|
%t362 = getelementptr inbounds %S.gen.Gen, ptr %t360, i32 0, i32 12
|
|
%t363 = load %S.gen.FnSig, ptr %t362
|
|
%t364 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t359, %S.gen.FnSig %t363)
|
|
store { ptr, i64, i64 } { ptr @.str.3081, i64 12, i64 0 }, ptr %a366
|
|
store { ptr, i64, i64 } %t364, ptr %a367
|
|
call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367)
|
|
%t368 = load { ptr, i64, i64 }, ptr %a365
|
|
store { ptr, i64, i64 } %t368, ptr %a370
|
|
store { ptr, i64, i64 } { ptr @.str.3084, i64 1, i64 0 }, ptr %a371
|
|
call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371)
|
|
%t372 = load { ptr, i64, i64 }, ptr %a369
|
|
%t373 = load { ptr, i64, i64 }, ptr %a357
|
|
store { ptr, i64, i64 } %t372, ptr %a375
|
|
store { ptr, i64, i64 } %t373, ptr %a376
|
|
call void @finch_str_concat(ptr %a374, ptr %a375, ptr %a376)
|
|
%t377 = load { ptr, i64, i64 }, ptr %a374
|
|
store { ptr, i64, i64 } %t377, ptr %a379
|
|
store { ptr, i64, i64 } { ptr @.str.3085, i64 2, i64 0 }, ptr %a380
|
|
call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380)
|
|
%t381 = load { ptr, i64, i64 }, ptr %a378
|
|
%t382 = load ptr, ptr %a1
|
|
%t383 = load ptr, ptr %a1
|
|
%t384 = icmp eq ptr %t383, null
|
|
br i1 %t384, label %panic4788, label %ok4789
|
|
panic4788:
|
|
call void @finch_panic(ptr @.str.3086, i64 2308, ptr @.str.3087)
|
|
unreachable
|
|
ok4789:
|
|
%t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 12
|
|
%t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 12
|
|
%t387 = load %S.ast.Type, ptr %t386
|
|
%t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t382, %S.ast.Type %t387)
|
|
store { ptr, i64, i64 } %t381, ptr %a390
|
|
store { ptr, i64, i64 } %t388, ptr %a391
|
|
call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391)
|
|
%t392 = load { ptr, i64, i64 }, ptr %a389
|
|
store { ptr, i64, i64 } %t392, ptr %a394
|
|
store { ptr, i64, i64 } { ptr @.str.3088, i64 1, i64 0 }, ptr %a395
|
|
call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395)
|
|
%t396 = load { ptr, i64, i64 }, ptr %a393
|
|
%t397 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } %t396, ptr %a399
|
|
store { ptr, i64, i64 } %t397, ptr %a400
|
|
call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400)
|
|
%t401 = load { ptr, i64, i64 }, ptr %a398
|
|
store { ptr, i64, i64 } %t401, ptr %a403
|
|
store { ptr, i64, i64 } { ptr @.str.3089, i64 3, i64 0 }, ptr %a404
|
|
call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404)
|
|
%t405 = load { ptr, i64, i64 }, ptr %a402
|
|
%t406 = call { ptr, i64, i64 } @finch.gen.op(ptr %t358, { ptr, i64, i64 } %t405)
|
|
store { ptr, i64, i64 } %t406, ptr %a407
|
|
%t408 = load ptr, ptr %a1
|
|
%t409 = load ptr, ptr %a1
|
|
%t410 = load ptr, ptr %a1
|
|
%t411 = icmp eq ptr %t410, null
|
|
br i1 %t411, label %panic4790, label %ok4791
|
|
panic4790:
|
|
call void @finch_panic(ptr @.str.3091, i64 2309, ptr @.str.3092)
|
|
unreachable
|
|
ok4791:
|
|
%t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 12
|
|
%t413 = load %S.gen.FnSig, ptr %t412
|
|
%t414 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t409, %S.gen.FnSig %t413)
|
|
store { ptr, i64, i64 } { ptr @.str.3090, i64 4, i64 0 }, ptr %a416
|
|
store { ptr, i64, i64 } %t414, ptr %a417
|
|
call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417)
|
|
%t418 = load { ptr, i64, i64 }, ptr %a415
|
|
store { ptr, i64, i64 } %t418, ptr %a420
|
|
store { ptr, i64, i64 } { ptr @.str.3093, i64 1, i64 0 }, ptr %a421
|
|
call void @finch_str_concat(ptr %a419, ptr %a420, ptr %a421)
|
|
%t422 = load { ptr, i64, i64 }, ptr %a419
|
|
%t423 = load { ptr, i64, i64 }, ptr %a407
|
|
store { ptr, i64, i64 } %t422, ptr %a425
|
|
store { ptr, i64, i64 } %t423, ptr %a426
|
|
call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426)
|
|
%t427 = load { ptr, i64, i64 }, ptr %a424
|
|
call void @finch.gen.emit(ptr %t408, { ptr, i64, i64 } %t427)
|
|
br label %endif4783
|
|
else4782:
|
|
%t428 = load ptr, ptr %a1
|
|
%t429 = load ptr, ptr %a1
|
|
%t430 = load ptr, ptr %a1
|
|
%t431 = icmp eq ptr %t430, null
|
|
br i1 %t431, label %panic4792, label %ok4793
|
|
panic4792:
|
|
call void @finch_panic(ptr @.str.3095, i64 2311, ptr @.str.3096)
|
|
unreachable
|
|
ok4793:
|
|
%t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 12
|
|
%t433 = getelementptr inbounds %S.gen.FnSig, ptr %t432, i32 0, i32 12
|
|
%t434 = load %S.ast.Type, ptr %t433
|
|
%t435 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t434)
|
|
store { ptr, i64, i64 } { ptr @.str.3094, i64 4, i64 0 }, ptr %a437
|
|
store { ptr, i64, i64 } %t435, ptr %a438
|
|
call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438)
|
|
%t439 = load { ptr, i64, i64 }, ptr %a436
|
|
store { ptr, i64, i64 } %t439, ptr %a441
|
|
store { ptr, i64, i64 } { ptr @.str.3097, i64 1, i64 0 }, ptr %a442
|
|
call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442)
|
|
%t443 = load { ptr, i64, i64 }, ptr %a440
|
|
%t444 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } %t443, ptr %a446
|
|
store { ptr, i64, i64 } %t444, ptr %a447
|
|
call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447)
|
|
%t448 = load { ptr, i64, i64 }, ptr %a445
|
|
call void @finch.gen.emit(ptr %t428, { ptr, i64, i64 } %t448)
|
|
br label %endif4783
|
|
endif4783:
|
|
%t449 = load ptr, ptr %a1
|
|
%t450 = icmp eq ptr %t449, null
|
|
br i1 %t450, label %panic4794, label %ok4795
|
|
panic4794:
|
|
call void @finch_panic(ptr @.str.3098, i64 2313, ptr @.str.3099)
|
|
unreachable
|
|
ok4795:
|
|
%t451 = getelementptr inbounds %S.gen.Gen, ptr %t449, i32 0, i32 9
|
|
store i1 true, ptr %t451
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.entryTy(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
%t6 = extractvalue { ptr, i64, i64 } %t5, 1
|
|
%t7 = icmp uge i64 0, %t6
|
|
br i1 %t7, label %range4796, label %inrange4797
|
|
range4796:
|
|
call void @finch_panic_index(ptr @.str.3101, i64 2325, i64 0, i64 %t6)
|
|
unreachable
|
|
inrange4797:
|
|
%t8 = extractvalue { ptr, i64, i64 } %t5, 0
|
|
%t9 = getelementptr inbounds %S.ast.Type, ptr %t8, i64 0
|
|
%t10 = load %S.ast.Type, ptr %t9
|
|
%t11 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t10)
|
|
store { ptr, i64, i64 } { ptr @.str.3100, i64 7, i64 0 }, ptr %a13
|
|
store { ptr, i64, i64 } %t11, ptr %a14
|
|
call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t15, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.3102, i64 2, i64 0 }, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
%t23 = extractvalue { ptr, i64, i64 } %t22, 1
|
|
%t24 = icmp uge i64 1, %t23
|
|
br i1 %t24, label %range4798, label %inrange4799
|
|
range4798:
|
|
call void @finch_panic_index(ptr @.str.3103, i64 2325, i64 1, i64 %t23)
|
|
unreachable
|
|
inrange4799:
|
|
%t25 = extractvalue { ptr, i64, i64 } %t22, 0
|
|
%t26 = getelementptr inbounds %S.ast.Type, ptr %t25, i64 1
|
|
%t27 = load %S.ast.Type, ptr %t26
|
|
%t28 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t27)
|
|
store { ptr, i64, i64 } %t19, ptr %a30
|
|
store { ptr, i64, i64 } %t28, ptr %a31
|
|
call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a29
|
|
store { ptr, i64, i64 } %t32, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.3104, i64 2, i64 0 }, ptr %a35
|
|
call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35)
|
|
%t36 = load { ptr, i64, i64 }, ptr %a33
|
|
ret { ptr, i64, i64 } %t36
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = load %S.ast.Type, ptr %a2
|
|
%t5 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t3, %S.ast.Type %t4)
|
|
store { ptr, i64, i64 } { ptr @.str.3105, i64 29, i64 0 }, ptr %a7
|
|
store { ptr, i64, i64 } %t5, ptr %a8
|
|
call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8)
|
|
%t9 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t9, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.3106, i64 26, i64 0 }, ptr %a12
|
|
call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a10
|
|
ret { ptr, i64, i64 } %t13
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.entryAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = load %S.ast.Type, ptr %a3
|
|
%t9 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t7, %S.ast.Type %t8)
|
|
store { ptr, i64, i64 } { ptr @.str.3108, i64 23, i64 0 }, ptr %a11
|
|
store { ptr, i64, i64 } %t9, ptr %a12
|
|
call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t13, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.3109, i64 6, i64 0 }, ptr %a16
|
|
call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a14
|
|
%t18 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t17, ptr %a20
|
|
store { ptr, i64, i64 } %t18, ptr %a21
|
|
call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t22, ptr %a24
|
|
store { ptr, i64, i64 } { ptr @.str.3110, i64 14, i64 0 }, ptr %a25
|
|
call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
%t27 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t26)
|
|
%t28 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3107, i64 3, i64 0 }, { ptr, i64, i64 } %t27)
|
|
store { ptr, i64, i64 } %t28, ptr %a29
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = load ptr, ptr %a1
|
|
%t32 = load %S.ast.Type, ptr %a3
|
|
%t33 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t31, %S.ast.Type %t32)
|
|
store { ptr, i64, i64 } { ptr @.str.3111, i64 23, i64 0 }, ptr %a35
|
|
store { ptr, i64, i64 } %t33, ptr %a36
|
|
call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } %t37, ptr %a39
|
|
store { ptr, i64, i64 } { ptr @.str.3112, i64 6, i64 0 }, ptr %a40
|
|
call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a38
|
|
%t42 = load { ptr, i64, i64 }, ptr %a29
|
|
store { ptr, i64, i64 } %t41, ptr %a44
|
|
store { ptr, i64, i64 } %t42, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
store { ptr, i64, i64 } %t46, ptr %a48
|
|
store { ptr, i64, i64 } { ptr @.str.3113, i64 6, i64 0 }, ptr %a49
|
|
call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49)
|
|
%t50 = load { ptr, i64, i64 }, ptr %a47
|
|
%t51 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t50, ptr %a53
|
|
store { ptr, i64, i64 } %t51, ptr %a54
|
|
call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a52
|
|
%t56 = call { ptr, i64, i64 } @finch.gen.op(ptr %t30, { ptr, i64, i64 } %t55)
|
|
ret { ptr, i64, i64 } %t56
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca i64, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store i64 %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = load %S.ast.Type, ptr %a3
|
|
%t8 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t6, %S.ast.Type %t7)
|
|
store { ptr, i64, i64 } { ptr @.str.3114, i64 23, i64 0 }, ptr %a10
|
|
store { ptr, i64, i64 } %t8, ptr %a11
|
|
call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t12, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.3115, i64 6, i64 0 }, ptr %a15
|
|
call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a13
|
|
%t17 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t16, ptr %a19
|
|
store { ptr, i64, i64 } %t17, ptr %a20
|
|
call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t21, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.3116, i64 13, i64 0 }, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
%t26 = load i64, ptr %a4
|
|
call void @finch_str_from_int(ptr %a27, i64 %t26)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t25, ptr %a30
|
|
store { ptr, i64, i64 } %t28, ptr %a31
|
|
call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a29
|
|
%t33 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t32)
|
|
ret { ptr, i64, i64 } %t33
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.3117, i64 1, i64 0 }, ptr %a5
|
|
%t6 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
%t8 = extractvalue { ptr, i64, i64 } %t7, 1
|
|
%t9 = icmp uge i64 0, %t8
|
|
br i1 %t9, label %range4800, label %inrange4801
|
|
range4800:
|
|
call void @finch_panic_index(ptr @.str.3118, i64 2345, i64 0, i64 %t8)
|
|
unreachable
|
|
inrange4801:
|
|
%t10 = extractvalue { ptr, i64, i64 } %t7, 0
|
|
%t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0
|
|
%t12 = getelementptr inbounds %S.ast.Type, ptr %t11, i32 0, i32 0
|
|
%t13 = load { ptr, i64, i64 }, ptr %t12
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.3119, i64 3, i64 0 }, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp ne i32 %t16, 0
|
|
br i1 %t17, label %then4802, label %endif4804
|
|
then4802:
|
|
store { ptr, i64, i64 } { ptr @.str.3120, i64 1, i64 0 }, ptr %a5
|
|
br label %endif4804
|
|
endif4804:
|
|
%t18 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.3121, i64 4, i64 0 }, ptr %a20
|
|
store { ptr, i64, i64 } %t18, ptr %a21
|
|
call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t22, ptr %a24
|
|
store { ptr, i64, i64 } { ptr @.str.3122, i64 6, i64 0 }, ptr %a25
|
|
call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
%t27 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t26, ptr %a29
|
|
store { ptr, i64, i64 } %t27, ptr %a30
|
|
call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a28
|
|
store { ptr, i64, i64 } %t31, ptr %a33
|
|
store { ptr, i64, i64 } { ptr @.str.3123, i64 6, i64 0 }, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load %S.ast.Type, ptr %a4
|
|
%t38 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t36, %S.ast.Type %t37)
|
|
store { ptr, i64, i64 } %t35, ptr %a40
|
|
store { ptr, i64, i64 } %t38, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
store { ptr, i64, i64 } %t42, ptr %a44
|
|
store { ptr, i64, i64 } { ptr @.str.3124, i64 6, i64 0 }, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
%t47 = load ptr, ptr %a1
|
|
%t48 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1
|
|
%t49 = load { ptr, i64, i64 }, ptr %t48
|
|
%t50 = extractvalue { ptr, i64, i64 } %t49, 1
|
|
%t51 = icmp uge i64 0, %t50
|
|
br i1 %t51, label %range4805, label %inrange4806
|
|
range4805:
|
|
call void @finch_panic_index(ptr @.str.3125, i64 2348, i64 0, i64 %t50)
|
|
unreachable
|
|
inrange4806:
|
|
%t52 = extractvalue { ptr, i64, i64 } %t49, 0
|
|
%t53 = getelementptr inbounds %S.ast.Type, ptr %t52, i64 0
|
|
%t54 = load %S.ast.Type, ptr %t53
|
|
%t55 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t47, %S.ast.Type %t54)
|
|
store { ptr, i64, i64 } %t46, ptr %a57
|
|
store { ptr, i64, i64 } %t55, ptr %a58
|
|
call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a56
|
|
store { ptr, i64, i64 } %t59, ptr %a61
|
|
store { ptr, i64, i64 } { ptr @.str.3126, i64 6, i64 0 }, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
%t64 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t63, ptr %a66
|
|
store { ptr, i64, i64 } %t64, ptr %a67
|
|
call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a65
|
|
ret { ptr, i64, i64 } %t68
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = load { ptr, i64, i64 }, ptr %a2
|
|
%t8 = load { ptr, i64, i64 }, ptr %a3
|
|
%t9 = load %S.ast.Type, ptr %a4
|
|
%t10 = call { ptr, i64, i64 } @finch.gen.mapArgs(ptr %t6, { ptr, i64, i64 } %t7, { ptr, i64, i64 } %t8, %S.ast.Type %t9)
|
|
store { ptr, i64, i64 } { ptr @.str.3127, i64 25, i64 0 }, ptr %a12
|
|
store { ptr, i64, i64 } %t10, ptr %a13
|
|
call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
store { ptr, i64, i64 } %t14, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.3128, i64 1, i64 0 }, ptr %a17
|
|
call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a15
|
|
%t19 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t18)
|
|
ret { ptr, i64, i64 } %t19
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca %S.ast.Node, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
store %S.ast.Node %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.3129, i64 6, i64 0 }, ptr %a7
|
|
%t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7)
|
|
%t9 = icmp ne i32 %t8, 0
|
|
br label %logic.from4807
|
|
logic.from4807:
|
|
br i1 %t9, label %logic.rhs4808, label %logic.end4809
|
|
logic.rhs4808:
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = load %S.ast.Type, ptr %a2
|
|
%t12 = call i1 @finch.gen.hasDefaults(ptr %t10, %S.ast.Type %t11)
|
|
br label %logic.rend4810
|
|
logic.rend4810:
|
|
br label %logic.end4809
|
|
logic.end4809:
|
|
%t13 = phi i1 [ false, %logic.from4807 ], [ %t12, %logic.rend4810 ]
|
|
br i1 %t13, label %then4811, label %endif4813
|
|
then4811:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a14
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a15
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t19 = load { ptr, i64, i64 }, ptr %t18
|
|
%t20 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t21 = load { ptr, i64, i64 }, ptr %t20
|
|
%t22 = call i64 @finch.gen.findStruct(ptr %t17, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a14
|
|
%t24 = load { ptr, i64, i64 }, ptr %a15
|
|
%t25 = load %S.ast.Node, ptr %a3
|
|
%t26 = call %S.gen.Val @finch.gen.construct(ptr %t16, i64 %t22, { ptr, i64, i64 } %t23, { ptr, i64, i64 } %t24, %S.ast.Node %t25)
|
|
%t27 = extractvalue %S.gen.Val %t26, 0
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
call void @finch_str_copy(ptr %a29, ptr %a28)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a29
|
|
ret { ptr, i64, i64 } %t30
|
|
endif4813:
|
|
%t31 = load %S.ast.Type, ptr %a2
|
|
%t32 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t31)
|
|
ret { ptr, i64, i64 } %t32
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.mapSlot(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.gen.Val %p3, i1 %p4, %S.ast.Node %p5) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca %S.gen.Val, align 16
|
|
%a5 = alloca i1, align 16
|
|
%a6 = alloca %S.ast.Node, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca %S.ast.Type, align 16
|
|
%a115 = alloca %S.ast.Type, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
store %S.gen.Val %p3, ptr %a4
|
|
store i1 %p4, ptr %a5
|
|
store %S.ast.Node %p5, ptr %a6
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = load %S.gen.Val, ptr %a4
|
|
%t9 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t7, %S.gen.Val %t8)
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t11, { ptr, i64, i64 } { ptr @.str.3130, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = load { ptr, i64, i64 }, ptr %a13
|
|
call void @finch.gen.store(ptr %t14, { ptr, i64, i64 } { ptr @.str.3131, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3132, i64 1, i64 0 }, { ptr, i64, i64 } %t15)
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = load { ptr, i64, i64 }, ptr %a2
|
|
%t19 = load { ptr, i64, i64 }, ptr %a10
|
|
%t20 = load %S.ast.Type, ptr %a3
|
|
%t21 = call { ptr, i64, i64 } @finch.gen.mapArgs(ptr %t17, { ptr, i64, i64 } %t18, { ptr, i64, i64 } %t19, %S.ast.Type %t20)
|
|
store { ptr, i64, i64 } { ptr @.str.3133, i64 25, i64 0 }, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.3134, i64 6, i64 0 }, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
%t30 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t29, ptr %a32
|
|
store { ptr, i64, i64 } %t30, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } %t34, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.3135, i64 1, i64 0 }, ptr %a37
|
|
call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a35
|
|
%t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t38)
|
|
store { ptr, i64, i64 } %t39, ptr %a40
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = load { ptr, i64, i64 }, ptr %a2
|
|
%t43 = load %S.ast.Type, ptr %a3
|
|
%t44 = load { ptr, i64, i64 }, ptr %a40
|
|
%t45 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t41, { ptr, i64, i64 } %t42, %S.ast.Type %t43, { ptr, i64, i64 } %t44)
|
|
store { ptr, i64, i64 } %t45, ptr %a46
|
|
%t47 = load ptr, ptr %a1
|
|
%t48 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t47, { ptr, i64, i64 } { ptr @.str.3136, i64 7, i64 0 })
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
%t50 = load ptr, ptr %a1
|
|
%t51 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t50, { ptr, i64, i64 } { ptr @.str.3137, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = load ptr, ptr %a1
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = load { ptr, i64, i64 }, ptr %a13
|
|
%t57 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.3139, i64 3, i64 0 }, { ptr, i64, i64 } %t56)
|
|
store { ptr, i64, i64 } { ptr @.str.3138, i64 12, i64 0 }, ptr %a59
|
|
store { ptr, i64, i64 } %t57, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
store { ptr, i64, i64 } %t61, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.3140, i64 3, i64 0 }, ptr %a64
|
|
call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64)
|
|
%t65 = load { ptr, i64, i64 }, ptr %a62
|
|
%t66 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } %t65)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a49
|
|
%t68 = load { ptr, i64, i64 }, ptr %a52
|
|
call void @finch.gen.condBr(ptr %t53, { ptr, i64, i64 } %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } %t68)
|
|
%t69 = load ptr, ptr %a1
|
|
%t70 = load { ptr, i64, i64 }, ptr %a49
|
|
call void @finch.gen.label(ptr %t69, { ptr, i64, i64 } %t70)
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = load { ptr, i64, i64 }, ptr %a46
|
|
%t74 = load %S.ast.Type, ptr %a3
|
|
%t75 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t72, { ptr, i64, i64 } %t73, %S.ast.Type %t74, i64 1)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a10
|
|
%t77 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t78 = load { ptr, i64, i64 }, ptr %t77
|
|
%t79 = extractvalue { ptr, i64, i64 } %t78, 1
|
|
%t80 = icmp uge i64 0, %t79
|
|
br i1 %t80, label %range4814, label %inrange4815
|
|
range4814:
|
|
call void @finch_panic_index(ptr @.str.3141, i64 2376, i64 0, i64 %t79)
|
|
unreachable
|
|
inrange4815:
|
|
%t81 = extractvalue { ptr, i64, i64 } %t78, 0
|
|
%t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0
|
|
%t83 = load %S.ast.Type, ptr %t82
|
|
call void @finch.gen.copyAt(ptr %t71, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76, %S.ast.Type %t83)
|
|
%t84 = load i1, ptr %a5
|
|
br i1 %t84, label %then4816, label %endif4818
|
|
then4816:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = load ptr, ptr %a1
|
|
%t87 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t88 = load { ptr, i64, i64 }, ptr %t87
|
|
%t89 = extractvalue { ptr, i64, i64 } %t88, 1
|
|
%t90 = icmp uge i64 1, %t89
|
|
br i1 %t90, label %range4819, label %inrange4820
|
|
range4819:
|
|
call void @finch_panic_index(ptr @.str.3142, i64 2378, i64 1, i64 %t89)
|
|
unreachable
|
|
inrange4820:
|
|
%t91 = extractvalue { ptr, i64, i64 } %t88, 0
|
|
%t92 = getelementptr inbounds %S.ast.Type, ptr %t91, i64 1
|
|
%t93 = load %S.ast.Type, ptr %t92
|
|
%t94 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t86, %S.ast.Type %t93)
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = load ptr, ptr %a1
|
|
%t97 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t98 = load { ptr, i64, i64 }, ptr %t97
|
|
%t99 = extractvalue { ptr, i64, i64 } %t98, 1
|
|
%t100 = icmp uge i64 1, %t99
|
|
br i1 %t100, label %range4821, label %inrange4822
|
|
range4821:
|
|
call void @finch_panic_index(ptr @.str.3143, i64 2378, i64 1, i64 %t99)
|
|
unreachable
|
|
inrange4822:
|
|
%t101 = extractvalue { ptr, i64, i64 } %t98, 0
|
|
%t102 = getelementptr inbounds %S.ast.Type, ptr %t101, i64 1
|
|
%t103 = load %S.ast.Type, ptr %t102
|
|
%t104 = load %S.ast.Node, ptr %a6
|
|
%t105 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t96, %S.ast.Type %t103, %S.ast.Node %t104)
|
|
%t106 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t105, 0
|
|
%t107 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t108 = load { ptr, i64, i64 }, ptr %t107
|
|
%t109 = extractvalue { ptr, i64, i64 } %t108, 1
|
|
%t110 = icmp uge i64 1, %t109
|
|
br i1 %t110, label %range4823, label %inrange4824
|
|
range4823:
|
|
call void @finch_panic_index(ptr @.str.3144, i64 2378, i64 1, i64 %t109)
|
|
unreachable
|
|
inrange4824:
|
|
%t111 = extractvalue { ptr, i64, i64 } %t108, 0
|
|
%t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1
|
|
%t113 = load %S.ast.Type, ptr %t112
|
|
store %S.ast.Type %t113, ptr %a114
|
|
call void @finch.copy.S_ast_Type(ptr %a115, ptr %a114)
|
|
%t116 = load %S.ast.Type, ptr %a115
|
|
%t117 = insertvalue %S.gen.Val %t106, %S.ast.Type %t116, 1
|
|
%t118 = insertvalue %S.gen.Val %t117, i1 true, 2
|
|
%t119 = call { ptr, i64, i64 } @finch.gen.own(ptr %t95, %S.gen.Val %t118)
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = load { ptr, i64, i64 }, ptr %a46
|
|
%t122 = load %S.ast.Type, ptr %a3
|
|
%t123 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t120, { ptr, i64, i64 } %t121, %S.ast.Type %t122, i64 2)
|
|
call void @finch.gen.store(ptr %t85, { ptr, i64, i64 } %t94, { ptr, i64, i64 } %t119, { ptr, i64, i64 } %t123)
|
|
br label %endif4818
|
|
endif4818:
|
|
%t124 = load ptr, ptr %a1
|
|
%t125 = load { ptr, i64, i64 }, ptr %a52
|
|
call void @finch.gen.br(ptr %t124, { ptr, i64, i64 } %t125)
|
|
%t126 = load ptr, ptr %a1
|
|
%t127 = load { ptr, i64, i64 }, ptr %a52
|
|
call void @finch.gen.label(ptr %t126, { ptr, i64, i64 } %t127)
|
|
%t128 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t128, ptr %a129
|
|
call void @finch_str_copy(ptr %a130, ptr %a129)
|
|
%t131 = load { ptr, i64, i64 }, ptr %a130
|
|
ret { ptr, i64, i64 } %t131
|
|
}
|
|
|
|
define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca %S.gen.Ref, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca i1, align 16
|
|
%a13 = alloca %S.ast.Type, align 16
|
|
%a14 = alloca %S.ast.Type, align 16
|
|
%a16 = alloca %S.ast.Type, align 16
|
|
%a24 = alloca %S.ast.Type, align 16
|
|
%a25 = alloca %S.ast.Type, align 16
|
|
%a27 = alloca %S.ast.Type, align 16
|
|
%a48 = alloca %S.gen.Val, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca %S.ast.Type, align 16
|
|
%a72 = alloca %S.ast.Type, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca %S.ast.Type, align 16
|
|
%a199 = alloca %S.ast.Type, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca %S.ast.Type, align 16
|
|
%a217 = alloca %S.ast.Type, align 16
|
|
%a220 = alloca %S.gen.Val, align 16
|
|
%a234 = alloca %S.ast.Type, align 16
|
|
%a235 = alloca %S.ast.Type, align 16
|
|
%a241 = alloca %S.gen.Val, align 16
|
|
%a242 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store %S.gen.Ref %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
store i1 %p4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
%t8 = extractvalue { ptr, i64, i64 } %t7, 1
|
|
%t9 = icmp uge i64 0, %t8
|
|
br i1 %t9, label %range4825, label %inrange4826
|
|
range4825:
|
|
call void @finch_panic_index(ptr @.str.3145, i64 2387, i64 0, i64 %t8)
|
|
unreachable
|
|
inrange4826:
|
|
%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 %range4827, label %inrange4828
|
|
range4827:
|
|
call void @finch_panic_index(ptr @.str.3146, i64 2388, i64 1, i64 %t19)
|
|
unreachable
|
|
inrange4828:
|
|
%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 %range4829, label %inrange4830
|
|
range4829:
|
|
call void @finch_panic_index(ptr @.str.3147, i64 2389, i64 1, i64 %t32)
|
|
unreachable
|
|
inrange4830:
|
|
%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 %range4831, label %inrange4832
|
|
range4831:
|
|
call void @finch_panic_index(ptr @.str.3148, i64 2389, i64 1, i64 %t42)
|
|
unreachable
|
|
inrange4832:
|
|
%t44 = extractvalue { ptr, i64, i64 } %t41, 0
|
|
%t45 = getelementptr inbounds %S.ast.Node, ptr %t44, i64 1
|
|
%t46 = load %S.ast.Node, ptr %t45
|
|
%t47 = call %S.gen.Val @finch.gen.coerce(ptr %t28, %S.gen.Val %t38, %S.ast.Type %t39, %S.ast.Node %t46, { ptr, i64, i64 } { ptr @.str.3149, i64 7, i64 0 })
|
|
store %S.gen.Val %t47, ptr %a48
|
|
%t49 = load i1, ptr %a5
|
|
br i1 %t49, label %then4833, label %endif4835
|
|
then4833:
|
|
%t50 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0
|
|
%t51 = load i1, ptr %t50
|
|
%t52 = xor i1 %t51, true
|
|
br i1 %t52, label %then4836, label %endif4838
|
|
then4836:
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t53, %S.ast.Node %t54, { ptr, i64, i64 } { ptr @.str.3150, i64 44, i64 0 })
|
|
br label %endif4838
|
|
endif4838:
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1
|
|
%t57 = getelementptr inbounds %S.gen.Place, ptr %t56, i32 0, i32 0
|
|
%t58 = load { ptr, i64, i64 }, ptr %t57
|
|
%t59 = load %S.ast.Type, ptr %a4
|
|
%t60 = load %S.gen.Val, ptr %a48
|
|
%t61 = load %S.ast.Node, ptr %a2
|
|
%t62 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t55, { ptr, i64, i64 } %t58, %S.ast.Type %t59, %S.gen.Val %t60, i1 true, %S.ast.Node %t61)
|
|
store { ptr, i64, i64 } %t62, ptr %a63
|
|
%t64 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = load { ptr, i64, i64 }, ptr %a63
|
|
%t67 = load %S.ast.Type, ptr %a4
|
|
%t68 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t65, { ptr, i64, i64 } %t66, %S.ast.Type %t67, i64 2)
|
|
%t69 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t68, 0
|
|
%t70 = load %S.ast.Type, ptr %a27
|
|
store %S.ast.Type %t70, ptr %a71
|
|
call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71)
|
|
%t73 = load %S.ast.Type, ptr %a72
|
|
%t74 = insertvalue %S.gen.Place %t69, %S.ast.Type %t73, 1
|
|
%t75 = insertvalue %S.gen.Ref %t64, %S.gen.Place %t74, 1
|
|
ret %S.gen.Ref %t75
|
|
endif4835:
|
|
store { ptr, i64, i64 } { ptr @.str.3151, i64 0, i64 0 }, ptr %a76
|
|
%t77 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0
|
|
%t78 = load i1, ptr %t77
|
|
br i1 %t78, label %then4839, label %else4840
|
|
then4839:
|
|
%t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1
|
|
%t80 = getelementptr inbounds %S.gen.Place, ptr %t79, i32 0, i32 0
|
|
%t81 = load { ptr, i64, i64 }, ptr %t80
|
|
store { ptr, i64, i64 } %t81, ptr %a82
|
|
call void @finch_str_copy(ptr %a83, ptr %a82)
|
|
%t84 = load { ptr, i64, i64 }, ptr %a83
|
|
store { ptr, i64, i64 } %t84, ptr %a76
|
|
br label %endif4841
|
|
else4840:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2
|
|
%t87 = load %S.gen.Val, ptr %t86
|
|
%t88 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t87)
|
|
store { ptr, i64, i64 } %t88, ptr %a76
|
|
br label %endif4841
|
|
endif4841:
|
|
%t89 = load ptr, ptr %a1
|
|
%t90 = load %S.gen.Val, ptr %a48
|
|
%t91 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t89, %S.gen.Val %t90)
|
|
store { ptr, i64, i64 } %t91, ptr %a92
|
|
%t93 = load ptr, ptr %a1
|
|
%t94 = load { ptr, i64, i64 }, ptr %a76
|
|
%t95 = load { ptr, i64, i64 }, ptr %a92
|
|
%t96 = load %S.ast.Type, ptr %a4
|
|
%t97 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t93, { ptr, i64, i64 } %t94, { ptr, i64, i64 } %t95, %S.ast.Type %t96)
|
|
store { ptr, i64, i64 } %t97, ptr %a98
|
|
%t99 = load ptr, ptr %a1
|
|
%t100 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t99, { ptr, i64, i64 } { ptr @.str.3152, i64 11, i64 0 })
|
|
store { ptr, i64, i64 } %t100, ptr %a101
|
|
%t102 = load ptr, ptr %a1
|
|
%t103 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t102, { ptr, i64, i64 } { ptr @.str.3153, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t103, ptr %a104
|
|
%t105 = load ptr, ptr %a1
|
|
%t106 = load ptr, ptr %a1
|
|
%t107 = load { ptr, i64, i64 }, ptr %a98
|
|
store { ptr, i64, i64 } { ptr @.str.3154, i64 13, i64 0 }, ptr %a109
|
|
store { ptr, i64, i64 } %t107, ptr %a110
|
|
call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a108
|
|
store { ptr, i64, i64 } %t111, ptr %a113
|
|
store { ptr, i64, i64 } { ptr @.str.3155, i64 3, i64 0 }, ptr %a114
|
|
call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114)
|
|
%t115 = load { ptr, i64, i64 }, ptr %a112
|
|
%t116 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t115)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a101
|
|
%t118 = load { ptr, i64, i64 }, ptr %a104
|
|
call void @finch.gen.condBr(ptr %t105, { ptr, i64, i64 } %t116, { ptr, i64, i64 } %t117, { ptr, i64, i64 } %t118)
|
|
%t119 = load ptr, ptr %a1
|
|
%t120 = load { ptr, i64, i64 }, ptr %a101
|
|
call void @finch.gen.label(ptr %t119, { ptr, i64, i64 } %t120)
|
|
%t121 = load ptr, ptr %a1
|
|
%t122 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t121, { ptr, i64, i64 } { ptr @.str.3156, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t122, ptr %a123
|
|
%t124 = load ptr, ptr %a1
|
|
%t125 = load { ptr, i64, i64 }, ptr %a123
|
|
call void @finch.gen.store(ptr %t124, { ptr, i64, i64 } { ptr @.str.3157, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3158, i64 15, i64 0 }, { ptr, i64, i64 } %t125)
|
|
%t126 = load ptr, ptr %a1
|
|
%t127 = load { ptr, i64, i64 }, ptr %a123
|
|
%t128 = getelementptr inbounds %S.gen.Val, ptr %a48, i32 0, i32 0
|
|
%t129 = load { ptr, i64, i64 }, ptr %t128
|
|
%t130 = load %S.ast.Type, ptr %a16
|
|
call void @finch.gen.emitFormat(ptr %t126, { ptr, i64, i64 } %t127, { ptr, i64, i64 } %t129, %S.ast.Type %t130, i1 true)
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = load ptr, ptr %a1
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = icmp eq ptr %t133, null
|
|
br i1 %t134, label %panic4842, label %ok4843
|
|
panic4842:
|
|
call void @finch_panic(ptr @.str.3160, i64 2412, ptr @.str.3161)
|
|
unreachable
|
|
ok4843:
|
|
%t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 1
|
|
%t136 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t137 = load i64, ptr %t136
|
|
%t138 = load { ptr, i64, i64 }, ptr %t135
|
|
%t139 = extractvalue { ptr, i64, i64 } %t138, 1
|
|
%t140 = icmp uge i64 %t137, %t139
|
|
br i1 %t140, label %range4844, label %inrange4845
|
|
range4844:
|
|
call void @finch_panic_index(ptr @.str.3162, i64 2412, i64 %t137, i64 %t139)
|
|
unreachable
|
|
inrange4845:
|
|
%t141 = extractvalue { ptr, i64, i64 } %t138, 0
|
|
%t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t137
|
|
%t143 = load { ptr, i64, i64 }, ptr %t142
|
|
%t144 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t132, { ptr, i64, i64 } %t143)
|
|
store { ptr, i64, i64 } { ptr @.str.3159, i64 33, i64 0 }, ptr %a146
|
|
store { ptr, i64, i64 } %t144, ptr %a147
|
|
call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147)
|
|
%t148 = load { ptr, i64, i64 }, ptr %a145
|
|
store { ptr, i64, i64 } %t148, ptr %a150
|
|
store { ptr, i64, i64 } { ptr @.str.3163, i64 6, i64 0 }, ptr %a151
|
|
call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151)
|
|
%t152 = load { ptr, i64, i64 }, ptr %a149
|
|
%t153 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t154 = load i64, ptr %t153
|
|
call void @finch_str_from_int(ptr %a155, i64 %t154)
|
|
%t156 = load { ptr, i64, i64 }, ptr %a155
|
|
store { ptr, i64, i64 } %t152, ptr %a158
|
|
store { ptr, i64, i64 } %t156, ptr %a159
|
|
call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159)
|
|
%t160 = load { ptr, i64, i64 }, ptr %a157
|
|
store { ptr, i64, i64 } %t160, ptr %a162
|
|
store { ptr, i64, i64 } { ptr @.str.3164, i64 6, i64 0 }, ptr %a163
|
|
call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163)
|
|
%t164 = load { ptr, i64, i64 }, ptr %a161
|
|
%t165 = load { ptr, i64, i64 }, ptr %a123
|
|
store { ptr, i64, i64 } %t164, ptr %a167
|
|
store { ptr, i64, i64 } %t165, ptr %a168
|
|
call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168)
|
|
%t169 = load { ptr, i64, i64 }, ptr %a166
|
|
store { ptr, i64, i64 } %t169, ptr %a171
|
|
store { ptr, i64, i64 } { ptr @.str.3165, i64 1, i64 0 }, ptr %a172
|
|
call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172)
|
|
%t173 = load { ptr, i64, i64 }, ptr %a170
|
|
call void @finch.gen.emit(ptr %t131, { ptr, i64, i64 } %t173)
|
|
%t174 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } { ptr @.str.3166, i64 11, i64 0 })
|
|
%t175 = load ptr, ptr %a1
|
|
%t176 = icmp eq ptr %t175, null
|
|
br i1 %t176, label %panic4846, label %ok4847
|
|
panic4846:
|
|
call void @finch_panic(ptr @.str.3167, i64 2414, ptr @.str.3168)
|
|
unreachable
|
|
ok4847:
|
|
%t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 9
|
|
store i1 true, ptr %t177
|
|
%t178 = load ptr, ptr %a1
|
|
%t179 = load { ptr, i64, i64 }, ptr %a104
|
|
call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179)
|
|
%t180 = load ptr, ptr %a1
|
|
%t181 = load ptr, ptr %a1
|
|
%t182 = load { ptr, i64, i64 }, ptr %a76
|
|
%t183 = load %S.ast.Type, ptr %a4
|
|
%t184 = load { ptr, i64, i64 }, ptr %a98
|
|
%t185 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t181, { ptr, i64, i64 } %t182, %S.ast.Type %t183, { ptr, i64, i64 } %t184)
|
|
%t186 = load %S.ast.Type, ptr %a4
|
|
%t187 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t180, { ptr, i64, i64 } %t185, %S.ast.Type %t186, i64 2)
|
|
store { ptr, i64, i64 } %t187, ptr %a188
|
|
%t189 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0
|
|
%t190 = load i1, ptr %t189
|
|
br i1 %t190, label %then4848, label %endif4850
|
|
then4848:
|
|
%t191 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t192 = load { ptr, i64, i64 }, ptr %a188
|
|
store { ptr, i64, i64 } %t192, ptr %a193
|
|
call void @finch_str_copy(ptr %a194, ptr %a193)
|
|
%t195 = load { ptr, i64, i64 }, ptr %a194
|
|
%t196 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t195, 0
|
|
%t197 = load %S.ast.Type, ptr %a27
|
|
store %S.ast.Type %t197, ptr %a198
|
|
call void @finch.copy.S_ast_Type(ptr %a199, ptr %a198)
|
|
%t200 = load %S.ast.Type, ptr %a199
|
|
%t201 = insertvalue %S.gen.Place %t196, %S.ast.Type %t200, 1
|
|
%t202 = insertvalue %S.gen.Ref %t191, %S.gen.Place %t201, 1
|
|
ret %S.gen.Ref %t202
|
|
endif4850:
|
|
%t203 = load ptr, ptr %a1
|
|
%t204 = load ptr, ptr %a1
|
|
%t205 = load %S.ast.Type, ptr %a27
|
|
%t206 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t204, %S.ast.Type %t205)
|
|
%t207 = load { ptr, i64, i64 }, ptr %a188
|
|
%t208 = call { ptr, i64, i64 } @finch.gen.load(ptr %t203, { ptr, i64, i64 } %t206, { ptr, i64, i64 } %t207)
|
|
store { ptr, i64, i64 } %t208, ptr %a209
|
|
%t210 = load { ptr, i64, i64 }, ptr %a209
|
|
store { ptr, i64, i64 } %t210, ptr %a211
|
|
call void @finch_str_copy(ptr %a212, ptr %a211)
|
|
%t213 = load { ptr, i64, i64 }, ptr %a212
|
|
%t214 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t213, 0
|
|
%t215 = load %S.ast.Type, ptr %a27
|
|
store %S.ast.Type %t215, ptr %a216
|
|
call void @finch.copy.S_ast_Type(ptr %a217, ptr %a216)
|
|
%t218 = load %S.ast.Type, ptr %a217
|
|
%t219 = insertvalue %S.gen.Val %t214, %S.ast.Type %t218, 1
|
|
store %S.gen.Val %t219, ptr %a220
|
|
%t221 = load ptr, ptr %a1
|
|
%t222 = load %S.ast.Type, ptr %a27
|
|
%t223 = call i1 @finch.gen.owning(ptr %t221, %S.ast.Type %t222)
|
|
br label %logic.from4851
|
|
logic.from4851:
|
|
br i1 %t223, label %logic.rhs4852, label %logic.end4853
|
|
logic.rhs4852:
|
|
%t224 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2
|
|
%t225 = getelementptr inbounds %S.gen.Val, ptr %t224, i32 0, i32 2
|
|
%t226 = load i1, ptr %t225
|
|
br label %logic.rend4854
|
|
logic.rend4854:
|
|
br label %logic.end4853
|
|
logic.end4853:
|
|
%t227 = phi i1 [ false, %logic.from4851 ], [ %t226, %logic.rend4854 ]
|
|
br i1 %t227, label %then4855, label %endif4857
|
|
then4855:
|
|
%t228 = load ptr, ptr %a1
|
|
%t229 = load { ptr, i64, i64 }, ptr %a209
|
|
%t230 = load %S.ast.Type, ptr %a27
|
|
%t231 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t228, { ptr, i64, i64 } %t229, %S.ast.Type %t230)
|
|
%t232 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t231, 0
|
|
%t233 = load %S.ast.Type, ptr %a27
|
|
store %S.ast.Type %t233, ptr %a234
|
|
call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234)
|
|
%t236 = load %S.ast.Type, ptr %a235
|
|
%t237 = insertvalue %S.gen.Val %t232, %S.ast.Type %t236, 1
|
|
%t238 = insertvalue %S.gen.Val %t237, i1 true, 2
|
|
store %S.gen.Val %t238, ptr %a220
|
|
br label %endif4857
|
|
endif4857:
|
|
%t239 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t240 = load %S.gen.Val, ptr %a220
|
|
store %S.gen.Val %t240, ptr %a241
|
|
call void @finch.copy.S_gen_Val(ptr %a242, ptr %a241)
|
|
%t243 = load %S.gen.Val, ptr %a242
|
|
%t244 = insertvalue %S.gen.Ref %t239, %S.gen.Val %t243, 2
|
|
ret %S.gen.Ref %t244
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca %S.ast.Type, align 16
|
|
%a6 = alloca %S.ast.Type, align 16
|
|
%a8 = alloca %S.ast.Type, align 16
|
|
%a9 = alloca i1, align 16
|
|
%a10 = alloca %S.gen.Val, align 16
|
|
%a11 = alloca %S.gen.Val, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca i1, align 16
|
|
%a25 = alloca i1, align 16
|
|
%a30 = alloca i64, align 16
|
|
%a43 = alloca %S.ast.Node, align 16
|
|
%a44 = alloca %S.ast.Node, align 16
|
|
%a46 = alloca %S.ast.Node, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca %S.ast.Node, align 16
|
|
%a68 = alloca %S.ast.Node, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca %S.ast.Type, align 16
|
|
%a151 = alloca %S.ast.Type, align 16
|
|
%a153 = alloca %S.ast.Type, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca i64, align 16
|
|
%a181 = alloca %S.gen.Val, align 16
|
|
%a182 = alloca %S.gen.Val, align 16
|
|
%a184 = alloca %S.gen.Val, align 16
|
|
%a186 = alloca %S.gen.Val, align 16
|
|
%a187 = alloca %S.gen.Val, align 16
|
|
%a189 = alloca %S.gen.Val, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca %S.ast.Type, align 16
|
|
%a308 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
%t4 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t4, ptr %a5
|
|
call void @finch.copy.S_ast_Type(ptr %a6, ptr %a5)
|
|
%t7 = load %S.ast.Type, ptr %a6
|
|
store %S.ast.Type %t7, ptr %a8
|
|
store i1 false, ptr %a9
|
|
store %S.gen.Val zeroinitializer, ptr %a10
|
|
store %S.gen.Val zeroinitializer, ptr %a11
|
|
%t12 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t13 = load { ptr, i64, i64 }, ptr %t12
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.3169, i64 3, i64 0 }, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp eq i32 %t16, 0
|
|
br i1 %t17, label %then4858, label %endif4860
|
|
then4858:
|
|
%t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i32 0, i32 1
|
|
%t20 = load i64, ptr %t19
|
|
%t21 = icmp eq i64 %t20, 0
|
|
br i1 %t21, label %then4861, label %endif4863
|
|
then4861:
|
|
%t22 = load ptr, ptr %a1
|
|
%t23 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t22, %S.ast.Node %t23, { ptr, i64, i64 } { ptr @.str.3170, i64 52, i64 0 })
|
|
br label %endif4863
|
|
endif4863:
|
|
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.cond4864
|
|
for.cond4864:
|
|
%t31 = load i64, ptr %a30
|
|
%t32 = icmp slt i64 %t31, %t29
|
|
br i1 %t32, label %for.body4865, label %for.end4867
|
|
for.body4865:
|
|
%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 %range4868, label %inrange4869
|
|
range4868:
|
|
call void @finch_panic_index(ptr @.str.3171, i64 2442, i64 %t36, i64 %t38)
|
|
unreachable
|
|
inrange4869:
|
|
%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.3172, i64 5, i64 0 }, ptr %a50
|
|
%t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50)
|
|
%t52 = icmp ne i32 %t51, 0
|
|
br label %logic.from4870
|
|
logic.from4870:
|
|
br i1 %t52, label %logic.rhs4871, label %logic.end4872
|
|
logic.rhs4871:
|
|
%t53 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 1
|
|
%t54 = load { ptr, i64, i64 }, ptr %t53
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
store { ptr, i64, i64 } { ptr @.str.3173, i64 1, i64 0 }, ptr %a56
|
|
%t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56)
|
|
%t58 = icmp ne i32 %t57, 0
|
|
br label %logic.rend4873
|
|
logic.rend4873:
|
|
br label %logic.end4872
|
|
logic.end4872:
|
|
%t59 = phi i1 [ false, %logic.from4870 ], [ %t58, %logic.rend4873 ]
|
|
br i1 %t59, label %then4874, label %endif4876
|
|
then4874:
|
|
%t60 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 9
|
|
%t61 = load { ptr, i64, i64 }, ptr %t60
|
|
%t62 = extractvalue { ptr, i64, i64 } %t61, 1
|
|
%t63 = icmp uge i64 0, %t62
|
|
br i1 %t63, label %range4877, label %inrange4878
|
|
range4877:
|
|
call void @finch_panic_index(ptr @.str.3174, i64 2444, i64 0, i64 %t62)
|
|
unreachable
|
|
inrange4878:
|
|
%t64 = extractvalue { ptr, i64, i64 } %t61, 0
|
|
%t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0
|
|
%t66 = load %S.ast.Node, ptr %t65
|
|
store %S.ast.Node %t66, ptr %a67
|
|
call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67)
|
|
%t69 = load %S.ast.Node, ptr %a68
|
|
store %S.ast.Node %t69, ptr %a46
|
|
br label %endif4876
|
|
endif4876:
|
|
%t70 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0
|
|
%t71 = load { ptr, i64, i64 }, ptr %t70
|
|
store { ptr, i64, i64 } %t71, ptr %a72
|
|
store { ptr, i64, i64 } { ptr @.str.3175, i64 5, i64 0 }, ptr %a73
|
|
%t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73)
|
|
%t75 = icmp ne i32 %t74, 0
|
|
br i1 %t75, label %then4879, label %else4880
|
|
then4879:
|
|
store i1 true, ptr %a25
|
|
br label %endif4881
|
|
else4880:
|
|
%t76 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0
|
|
%t77 = load { ptr, i64, i64 }, ptr %t76
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
store { ptr, i64, i64 } { ptr @.str.3176, i64 3, i64 0 }, ptr %a79
|
|
%t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79)
|
|
%t81 = icmp eq i32 %t80, 0
|
|
br i1 %t81, label %then4882, label %endif4884
|
|
then4882:
|
|
store i1 false, ptr %a24
|
|
br label %endif4884
|
|
endif4884:
|
|
br label %endif4881
|
|
endif4881:
|
|
br label %for.step4866
|
|
for.step4866:
|
|
%t82 = load i64, ptr %a30
|
|
%t83 = add i64 %t82, 1
|
|
store i64 %t83, ptr %a30
|
|
br label %for.cond4864
|
|
for.end4867:
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t86 = load { ptr, i64, i64 }, ptr %t85
|
|
%t87 = extractvalue { ptr, i64, i64 } %t86, 1
|
|
%t88 = icmp uge i64 0, %t87
|
|
br i1 %t88, label %range4885, label %inrange4886
|
|
range4885:
|
|
call void @finch_panic_index(ptr @.str.3177, i64 2452, i64 0, i64 %t87)
|
|
unreachable
|
|
inrange4886:
|
|
%t89 = extractvalue { ptr, i64, i64 } %t86, 0
|
|
%t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 0
|
|
%t91 = load %S.ast.Node, ptr %t90
|
|
%t92 = call %S.gen.Val @finch.gen.expr(ptr %t84, %S.ast.Node %t91)
|
|
store %S.gen.Val %t92, ptr %a10
|
|
%t93 = load ptr, ptr %a1
|
|
%t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t95 = load { ptr, i64, i64 }, ptr %t94
|
|
%t96 = extractvalue { ptr, i64, i64 } %t95, 1
|
|
%t97 = icmp uge i64 1, %t96
|
|
br i1 %t97, label %range4887, label %inrange4888
|
|
range4887:
|
|
call void @finch_panic_index(ptr @.str.3178, i64 2453, i64 1, i64 %t96)
|
|
unreachable
|
|
inrange4888:
|
|
%t98 = extractvalue { ptr, i64, i64 } %t95, 0
|
|
%t99 = getelementptr inbounds %S.ast.Node, ptr %t98, i64 1
|
|
%t100 = load %S.ast.Node, ptr %t99
|
|
%t101 = call %S.gen.Val @finch.gen.expr(ptr %t93, %S.ast.Node %t100)
|
|
store %S.gen.Val %t101, ptr %a11
|
|
%t102 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1
|
|
%t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i32 0, i32 0
|
|
%t104 = load { ptr, i64, i64 }, ptr %t103
|
|
store { ptr, i64, i64 } %t104, ptr %a105
|
|
store { ptr, i64, i64 } { ptr @.str.3179, i64 4, i64 0 }, ptr %a106
|
|
%t107 = call i32 @finch_str_eq(ptr %a105, ptr %a106)
|
|
%t108 = icmp ne i32 %t107, 0
|
|
br label %logic.from4889
|
|
logic.from4889:
|
|
br i1 %t108, label %logic.end4891, label %logic.rhs4890
|
|
logic.rhs4890:
|
|
%t109 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1
|
|
%t110 = getelementptr inbounds %S.ast.Type, ptr %t109, i32 0, i32 0
|
|
%t111 = load { ptr, i64, i64 }, ptr %t110
|
|
store { ptr, i64, i64 } %t111, ptr %a112
|
|
store { ptr, i64, i64 } { ptr @.str.3180, i64 4, i64 0 }, ptr %a113
|
|
%t114 = call i32 @finch_str_eq(ptr %a112, ptr %a113)
|
|
%t115 = icmp ne i32 %t114, 0
|
|
br label %logic.rend4892
|
|
logic.rend4892:
|
|
br label %logic.end4891
|
|
logic.end4891:
|
|
%t116 = phi i1 [ true, %logic.from4889 ], [ %t115, %logic.rend4892 ]
|
|
br i1 %t116, label %then4893, label %endif4895
|
|
then4893:
|
|
%t117 = load ptr, ptr %a1
|
|
%t118 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t119 = load { ptr, i64, i64 }, ptr %t118
|
|
%t120 = extractvalue { ptr, i64, i64 } %t119, 1
|
|
%t121 = icmp uge i64 0, %t120
|
|
br i1 %t121, label %range4896, label %inrange4897
|
|
range4896:
|
|
call void @finch_panic_index(ptr @.str.3181, i64 2455, i64 0, i64 %t120)
|
|
unreachable
|
|
inrange4897:
|
|
%t122 = extractvalue { ptr, i64, i64 } %t119, 0
|
|
%t123 = getelementptr inbounds %S.ast.Node, ptr %t122, i64 0
|
|
%t124 = load %S.ast.Node, ptr %t123
|
|
call void @finch.gen.fail(ptr %t117, %S.ast.Node %t124, { ptr, i64, i64 } { ptr @.str.3182, i64 35, i64 0 })
|
|
br label %endif4895
|
|
endif4895:
|
|
%t125 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1
|
|
%t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i32 0, i32 0
|
|
%t127 = load { ptr, i64, i64 }, ptr %t126
|
|
store { ptr, i64, i64 } %t127, ptr %a128
|
|
store { ptr, i64, i64 } { ptr @.str.3183, i64 4, i64 0 }, ptr %a129
|
|
%t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129)
|
|
%t131 = icmp ne i32 %t130, 0
|
|
br label %logic.from4898
|
|
logic.from4898:
|
|
br i1 %t131, label %logic.end4900, label %logic.rhs4899
|
|
logic.rhs4899:
|
|
%t132 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1
|
|
%t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i32 0, i32 0
|
|
%t134 = load { ptr, i64, i64 }, ptr %t133
|
|
store { ptr, i64, i64 } %t134, ptr %a135
|
|
store { ptr, i64, i64 } { ptr @.str.3184, i64 4, i64 0 }, ptr %a136
|
|
%t137 = call i32 @finch_str_eq(ptr %a135, ptr %a136)
|
|
%t138 = icmp ne i32 %t137, 0
|
|
br label %logic.rend4901
|
|
logic.rend4901:
|
|
br label %logic.end4900
|
|
logic.end4900:
|
|
%t139 = phi i1 [ true, %logic.from4898 ], [ %t138, %logic.rend4901 ]
|
|
br i1 %t139, label %then4902, label %endif4904
|
|
then4902:
|
|
%t140 = load ptr, ptr %a1
|
|
%t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t142 = load { ptr, i64, i64 }, ptr %t141
|
|
%t143 = extractvalue { ptr, i64, i64 } %t142, 1
|
|
%t144 = icmp uge i64 1, %t143
|
|
br i1 %t144, label %range4905, label %inrange4906
|
|
range4905:
|
|
call void @finch_panic_index(ptr @.str.3185, i64 2458, i64 1, i64 %t143)
|
|
unreachable
|
|
inrange4906:
|
|
%t145 = extractvalue { ptr, i64, i64 } %t142, 0
|
|
%t146 = getelementptr inbounds %S.ast.Node, ptr %t145, i64 1
|
|
%t147 = load %S.ast.Node, ptr %t146
|
|
call void @finch.gen.fail(ptr %t140, %S.ast.Node %t147, { ptr, i64, i64 } { ptr @.str.3186, i64 37, i64 0 })
|
|
br label %endif4904
|
|
endif4904:
|
|
%t148 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1
|
|
%t149 = load %S.ast.Type, ptr %t148
|
|
store %S.ast.Type %t149, ptr %a150
|
|
call void @finch.copy.S_ast_Type(ptr %a151, ptr %a150)
|
|
%t152 = load %S.ast.Type, ptr %a151
|
|
store %S.ast.Type %t152, ptr %a153
|
|
%t154 = load i1, ptr %a24
|
|
br label %logic.from4907
|
|
logic.from4907:
|
|
br i1 %t154, label %logic.rhs4908, label %logic.end4909
|
|
logic.rhs4908:
|
|
%t155 = load i1, ptr %a25
|
|
br label %logic.rend4910
|
|
logic.rend4910:
|
|
br label %logic.end4909
|
|
logic.end4909:
|
|
%t156 = phi i1 [ false, %logic.from4907 ], [ %t155, %logic.rend4910 ]
|
|
br i1 %t156, label %then4911, label %endif4913
|
|
then4911:
|
|
%t157 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3187, i64 5, i64 0 })
|
|
store %S.ast.Type %t157, ptr %a153
|
|
br label %endif4913
|
|
endif4913:
|
|
%t158 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1
|
|
%t159 = load %S.ast.Type, ptr %t158
|
|
%t160 = load %S.ast.Type, ptr %a153
|
|
%t161 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t159, %S.ast.Type %t160)
|
|
store %S.ast.Type %t161, ptr %a8
|
|
store i1 true, ptr %a9
|
|
br label %endif4860
|
|
endif4860:
|
|
%t162 = load ptr, ptr %a1
|
|
%t163 = load ptr, ptr %a1
|
|
%t164 = load %S.ast.Type, ptr %a8
|
|
%t165 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t164)
|
|
%t166 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t162, { ptr, i64, i64 } %t165)
|
|
store { ptr, i64, i64 } %t166, ptr %a167
|
|
%t168 = load ptr, ptr %a1
|
|
%t169 = load ptr, ptr %a1
|
|
%t170 = load %S.ast.Type, ptr %a8
|
|
%t171 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t169, %S.ast.Type %t170)
|
|
%t172 = load { ptr, i64, i64 }, ptr %a167
|
|
call void @finch.gen.store(ptr %t168, { ptr, i64, i64 } %t171, { ptr, i64, i64 } { ptr @.str.3188, i64 15, i64 0 }, { ptr, i64, i64 } %t172)
|
|
%t173 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1
|
|
%t175 = load i64, ptr %t174
|
|
%t176 = sdiv i64 %t175, 2
|
|
store i64 0, ptr %a177
|
|
br label %for.cond4914
|
|
for.cond4914:
|
|
%t178 = load i64, ptr %a177
|
|
%t179 = icmp slt i64 %t178, %t176
|
|
br i1 %t179, label %for.body4915, label %for.end4917
|
|
for.body4915:
|
|
%t180 = load %S.gen.Val, ptr %a10
|
|
store %S.gen.Val %t180, ptr %a181
|
|
call void @finch.copy.S_gen_Val(ptr %a182, ptr %a181)
|
|
%t183 = load %S.gen.Val, ptr %a182
|
|
store %S.gen.Val %t183, ptr %a184
|
|
%t185 = load %S.gen.Val, ptr %a11
|
|
store %S.gen.Val %t185, ptr %a186
|
|
call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186)
|
|
%t188 = load %S.gen.Val, ptr %a187
|
|
store %S.gen.Val %t188, ptr %a189
|
|
%t190 = load i64, ptr %a177
|
|
%t191 = icmp eq i64 %t190, 0
|
|
br label %logic.from4918
|
|
logic.from4918:
|
|
br i1 %t191, label %logic.rhs4919, label %logic.end4920
|
|
logic.rhs4919:
|
|
%t192 = load i1, ptr %a9
|
|
br label %logic.rend4921
|
|
logic.rend4921:
|
|
br label %logic.end4920
|
|
logic.end4920:
|
|
%t193 = phi i1 [ false, %logic.from4918 ], [ %t192, %logic.rend4921 ]
|
|
%t194 = xor i1 %t193, true
|
|
br i1 %t194, label %then4922, label %endif4924
|
|
then4922:
|
|
%t195 = load ptr, ptr %a1
|
|
%t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t197 = load i64, ptr %a177
|
|
%t198 = mul i64 2, %t197
|
|
%t199 = load { ptr, i64, i64 }, ptr %t196
|
|
%t200 = extractvalue { ptr, i64, i64 } %t199, 1
|
|
%t201 = icmp uge i64 %t198, %t200
|
|
br i1 %t201, label %range4925, label %inrange4926
|
|
range4925:
|
|
call void @finch_panic_index(ptr @.str.3189, i64 2473, i64 %t198, i64 %t200)
|
|
unreachable
|
|
inrange4926:
|
|
%t202 = extractvalue { ptr, i64, i64 } %t199, 0
|
|
%t203 = getelementptr inbounds %S.ast.Node, ptr %t202, i64 %t198
|
|
%t204 = load %S.ast.Node, ptr %t203
|
|
%t205 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1
|
|
%t206 = load { ptr, i64, i64 }, ptr %t205
|
|
%t207 = extractvalue { ptr, i64, i64 } %t206, 1
|
|
%t208 = icmp uge i64 0, %t207
|
|
br i1 %t208, label %range4927, label %inrange4928
|
|
range4927:
|
|
call void @finch_panic_index(ptr @.str.3190, i64 2473, i64 0, i64 %t207)
|
|
unreachable
|
|
inrange4928:
|
|
%t209 = extractvalue { ptr, i64, i64 } %t206, 0
|
|
%t210 = getelementptr inbounds %S.ast.Type, ptr %t209, i64 0
|
|
%t211 = load %S.ast.Type, ptr %t210
|
|
%t212 = call %S.gen.Val @finch.gen.exprWant(ptr %t195, %S.ast.Node %t204, %S.ast.Type %t211)
|
|
store %S.gen.Val %t212, ptr %a184
|
|
%t213 = load ptr, ptr %a1
|
|
%t214 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t215 = load i64, ptr %a177
|
|
%t216 = mul i64 2, %t215
|
|
%t217 = add i64 %t216, 1
|
|
%t218 = load { ptr, i64, i64 }, ptr %t214
|
|
%t219 = extractvalue { ptr, i64, i64 } %t218, 1
|
|
%t220 = icmp uge i64 %t217, %t219
|
|
br i1 %t220, label %range4929, label %inrange4930
|
|
range4929:
|
|
call void @finch_panic_index(ptr @.str.3191, i64 2474, i64 %t217, i64 %t219)
|
|
unreachable
|
|
inrange4930:
|
|
%t221 = extractvalue { ptr, i64, i64 } %t218, 0
|
|
%t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217
|
|
%t223 = load %S.ast.Node, ptr %t222
|
|
%t224 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1
|
|
%t225 = load { ptr, i64, i64 }, ptr %t224
|
|
%t226 = extractvalue { ptr, i64, i64 } %t225, 1
|
|
%t227 = icmp uge i64 1, %t226
|
|
br i1 %t227, label %range4931, label %inrange4932
|
|
range4931:
|
|
call void @finch_panic_index(ptr @.str.3192, i64 2474, i64 1, i64 %t226)
|
|
unreachable
|
|
inrange4932:
|
|
%t228 = extractvalue { ptr, i64, i64 } %t225, 0
|
|
%t229 = getelementptr inbounds %S.ast.Type, ptr %t228, i64 1
|
|
%t230 = load %S.ast.Type, ptr %t229
|
|
%t231 = call %S.gen.Val @finch.gen.exprWant(ptr %t213, %S.ast.Node %t223, %S.ast.Type %t230)
|
|
store %S.gen.Val %t231, ptr %a189
|
|
br label %endif4924
|
|
endif4924:
|
|
%t232 = load ptr, ptr %a1
|
|
%t233 = load %S.gen.Val, ptr %a184
|
|
%t234 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1
|
|
%t235 = load { ptr, i64, i64 }, ptr %t234
|
|
%t236 = extractvalue { ptr, i64, i64 } %t235, 1
|
|
%t237 = icmp uge i64 0, %t236
|
|
br i1 %t237, label %range4933, label %inrange4934
|
|
range4933:
|
|
call void @finch_panic_index(ptr @.str.3193, i64 2476, i64 0, i64 %t236)
|
|
unreachable
|
|
inrange4934:
|
|
%t238 = extractvalue { ptr, i64, i64 } %t235, 0
|
|
%t239 = getelementptr inbounds %S.ast.Type, ptr %t238, i64 0
|
|
%t240 = load %S.ast.Type, ptr %t239
|
|
%t241 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t242 = load i64, ptr %a177
|
|
%t243 = mul i64 2, %t242
|
|
%t244 = load { ptr, i64, i64 }, ptr %t241
|
|
%t245 = extractvalue { ptr, i64, i64 } %t244, 1
|
|
%t246 = icmp uge i64 %t243, %t245
|
|
br i1 %t246, label %range4935, label %inrange4936
|
|
range4935:
|
|
call void @finch_panic_index(ptr @.str.3194, i64 2476, i64 %t243, i64 %t245)
|
|
unreachable
|
|
inrange4936:
|
|
%t247 = extractvalue { ptr, i64, i64 } %t244, 0
|
|
%t248 = getelementptr inbounds %S.ast.Node, ptr %t247, i64 %t243
|
|
%t249 = load %S.ast.Node, ptr %t248
|
|
%t250 = call %S.gen.Val @finch.gen.coerce(ptr %t232, %S.gen.Val %t233, %S.ast.Type %t240, %S.ast.Node %t249, { ptr, i64, i64 } { ptr @.str.3195, i64 21, i64 0 })
|
|
store %S.gen.Val %t250, ptr %a184
|
|
%t251 = load ptr, ptr %a1
|
|
%t252 = load %S.gen.Val, ptr %a189
|
|
%t253 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1
|
|
%t254 = load { ptr, i64, i64 }, ptr %t253
|
|
%t255 = extractvalue { ptr, i64, i64 } %t254, 1
|
|
%t256 = icmp uge i64 1, %t255
|
|
br i1 %t256, label %range4937, label %inrange4938
|
|
range4937:
|
|
call void @finch_panic_index(ptr @.str.3196, i64 2477, i64 1, i64 %t255)
|
|
unreachable
|
|
inrange4938:
|
|
%t257 = extractvalue { ptr, i64, i64 } %t254, 0
|
|
%t258 = getelementptr inbounds %S.ast.Type, ptr %t257, i64 1
|
|
%t259 = load %S.ast.Type, ptr %t258
|
|
%t260 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t261 = load i64, ptr %a177
|
|
%t262 = mul i64 2, %t261
|
|
%t263 = add i64 %t262, 1
|
|
%t264 = load { ptr, i64, i64 }, ptr %t260
|
|
%t265 = extractvalue { ptr, i64, i64 } %t264, 1
|
|
%t266 = icmp uge i64 %t263, %t265
|
|
br i1 %t266, label %range4939, label %inrange4940
|
|
range4939:
|
|
call void @finch_panic_index(ptr @.str.3197, i64 2477, i64 %t263, i64 %t265)
|
|
unreachable
|
|
inrange4940:
|
|
%t267 = extractvalue { ptr, i64, i64 } %t264, 0
|
|
%t268 = getelementptr inbounds %S.ast.Node, ptr %t267, i64 %t263
|
|
%t269 = load %S.ast.Node, ptr %t268
|
|
%t270 = call %S.gen.Val @finch.gen.coerce(ptr %t251, %S.gen.Val %t252, %S.ast.Type %t259, %S.ast.Node %t269, { ptr, i64, i64 } { ptr @.str.3198, i64 23, i64 0 })
|
|
store %S.gen.Val %t270, ptr %a189
|
|
%t271 = load ptr, ptr %a1
|
|
%t272 = load %S.gen.Val, ptr %a189
|
|
%t273 = call { ptr, i64, i64 } @finch.gen.own(ptr %t271, %S.gen.Val %t272)
|
|
store { ptr, i64, i64 } %t273, ptr %a274
|
|
%t275 = load ptr, ptr %a1
|
|
%t276 = load { ptr, i64, i64 }, ptr %a167
|
|
%t277 = load %S.ast.Type, ptr %a8
|
|
%t278 = load %S.gen.Val, ptr %a184
|
|
%t279 = load %S.ast.Node, ptr %a2
|
|
%t280 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t275, { ptr, i64, i64 } %t276, %S.ast.Type %t277, %S.gen.Val %t278, i1 false, %S.ast.Node %t279)
|
|
store { ptr, i64, i64 } %t280, ptr %a281
|
|
%t282 = load ptr, ptr %a1
|
|
%t283 = load ptr, ptr %a1
|
|
%t284 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1
|
|
%t285 = load { ptr, i64, i64 }, ptr %t284
|
|
%t286 = extractvalue { ptr, i64, i64 } %t285, 1
|
|
%t287 = icmp uge i64 1, %t286
|
|
br i1 %t287, label %range4941, label %inrange4942
|
|
range4941:
|
|
call void @finch_panic_index(ptr @.str.3199, i64 2480, i64 1, i64 %t286)
|
|
unreachable
|
|
inrange4942:
|
|
%t288 = extractvalue { ptr, i64, i64 } %t285, 0
|
|
%t289 = getelementptr inbounds %S.ast.Type, ptr %t288, i64 1
|
|
%t290 = load %S.ast.Type, ptr %t289
|
|
%t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t290)
|
|
%t292 = load { ptr, i64, i64 }, ptr %a274
|
|
%t293 = load ptr, ptr %a1
|
|
%t294 = load { ptr, i64, i64 }, ptr %a281
|
|
%t295 = load %S.ast.Type, ptr %a8
|
|
%t296 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t293, { ptr, i64, i64 } %t294, %S.ast.Type %t295, i64 2)
|
|
call void @finch.gen.store(ptr %t282, { ptr, i64, i64 } %t291, { ptr, i64, i64 } %t292, { ptr, i64, i64 } %t296)
|
|
br label %for.step4916
|
|
for.step4916:
|
|
%t297 = load i64, ptr %a177
|
|
%t298 = add i64 %t297, 1
|
|
store i64 %t298, ptr %a177
|
|
br label %for.cond4914
|
|
for.end4917:
|
|
%t299 = load ptr, ptr %a1
|
|
%t300 = load ptr, ptr %a1
|
|
%t301 = load %S.ast.Type, ptr %a8
|
|
%t302 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t300, %S.ast.Type %t301)
|
|
%t303 = load { ptr, i64, i64 }, ptr %a167
|
|
%t304 = call { ptr, i64, i64 } @finch.gen.load(ptr %t299, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303)
|
|
%t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0
|
|
%t306 = load %S.ast.Type, ptr %a8
|
|
store %S.ast.Type %t306, ptr %a307
|
|
call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307)
|
|
%t309 = load %S.ast.Type, ptr %a308
|
|
%t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1
|
|
%t311 = insertvalue %S.gen.Val %t310, i1 true, 2
|
|
ret %S.gen.Val %t311
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca %S.ast.Type, align 16
|
|
%a19 = alloca %S.ast.Type, align 16
|
|
%a21 = alloca %S.ast.Type, align 16
|
|
%a29 = alloca %S.ast.Type, align 16
|
|
%a30 = alloca %S.ast.Type, align 16
|
|
%a32 = alloca %S.ast.Type, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca %S.gen.Val, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca { ptr, i64, i64 }, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca %S.ast.Type, align 16
|
|
%a301 = alloca %S.ast.Type, align 16
|
|
%a309 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a318 = alloca { ptr, i64, i64 }, align 16
|
|
%a319 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a330 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a335 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca i64, align 16
|
|
%a344 = alloca %S.ast.Type, align 16
|
|
%a345 = alloca %S.ast.Type, align 16
|
|
%a347 = alloca %S.ast.Type, align 16
|
|
%a349 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca %S.ast.Type, align 16
|
|
%a355 = alloca %S.ast.Type, align 16
|
|
%a359 = alloca %S.ast.Type, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a372 = alloca { ptr, i64, i64 }, align 16
|
|
%a374 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a381 = alloca { ptr, i64, i64 }, align 16
|
|
%a383 = alloca { ptr, i64, i64 }, align 16
|
|
%a384 = alloca { ptr, i64, i64 }, align 16
|
|
%a385 = alloca { ptr, i64, i64 }, align 16
|
|
%a389 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a396 = alloca { ptr, i64, i64 }, align 16
|
|
%a397 = alloca { ptr, i64, i64 }, align 16
|
|
%a398 = alloca { ptr, i64, i64 }, align 16
|
|
%a401 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a403 = alloca { ptr, i64, i64 }, align 16
|
|
%a405 = alloca { ptr, i64, i64 }, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a414 = alloca { ptr, i64, i64 }, align 16
|
|
%a416 = alloca { ptr, i64, i64 }, align 16
|
|
%a417 = alloca { ptr, i64, i64 }, align 16
|
|
%a418 = alloca { ptr, i64, i64 }, align 16
|
|
%a423 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a434 = alloca { ptr, i64, i64 }, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a438 = alloca { ptr, i64, i64 }, align 16
|
|
%a439 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a443 = alloca { ptr, i64, i64 }, align 16
|
|
%a444 = alloca { ptr, i64, i64 }, align 16
|
|
%a445 = alloca { ptr, i64, i64 }, align 16
|
|
%a447 = alloca { ptr, i64, i64 }, align 16
|
|
%a448 = alloca { ptr, i64, i64 }, align 16
|
|
%a449 = alloca { ptr, i64, i64 }, align 16
|
|
%a453 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a468 = alloca { ptr, i64, i64 }, align 16
|
|
%a471 = alloca { ptr, i64, i64 }, align 16
|
|
%a474 = alloca { ptr, i64, i64 }, align 16
|
|
%a483 = alloca { ptr, i64, i64 }, align 16
|
|
%a484 = alloca { ptr, i64, i64 }, align 16
|
|
%a485 = alloca { ptr, i64, i64 }, align 16
|
|
%a487 = alloca { ptr, i64, i64 }, align 16
|
|
%a488 = alloca { ptr, i64, i64 }, align 16
|
|
%a489 = alloca { ptr, i64, i64 }, align 16
|
|
%a499 = alloca { ptr, i64, i64 }, align 16
|
|
%a505 = alloca { ptr, i64, i64 }, align 16
|
|
%a506 = alloca { ptr, i64, i64 }, align 16
|
|
%a507 = alloca { ptr, i64, i64 }, align 16
|
|
%a509 = alloca { ptr, i64, i64 }, align 16
|
|
%a510 = alloca { ptr, i64, i64 }, align 16
|
|
%a511 = alloca { ptr, i64, i64 }, align 16
|
|
%a514 = alloca { ptr, i64, i64 }, align 16
|
|
%a515 = alloca { ptr, i64, i64 }, align 16
|
|
%a516 = alloca { ptr, i64, i64 }, align 16
|
|
%a518 = alloca { ptr, i64, i64 }, align 16
|
|
%a519 = alloca { ptr, i64, i64 }, align 16
|
|
%a520 = alloca { ptr, i64, i64 }, align 16
|
|
%a523 = alloca { ptr, i64, i64 }, align 16
|
|
%a524 = alloca { ptr, i64, i64 }, align 16
|
|
%a525 = alloca { ptr, i64, i64 }, align 16
|
|
%a537 = alloca { ptr, i64, i64 }, align 16
|
|
%a538 = alloca { ptr, i64, i64 }, align 16
|
|
%a539 = alloca { ptr, i64, i64 }, align 16
|
|
%a541 = alloca { ptr, i64, i64 }, align 16
|
|
%a542 = alloca { ptr, i64, i64 }, align 16
|
|
%a543 = alloca { ptr, i64, i64 }, align 16
|
|
%a558 = alloca %S.ast.Type, align 16
|
|
%a559 = alloca %S.ast.Type, align 16
|
|
%a566 = alloca { ptr, i64, i64 }, align 16
|
|
%a567 = alloca { ptr, i64, i64 }, align 16
|
|
%a568 = alloca { ptr, i64, i64 }, align 16
|
|
%a570 = alloca { ptr, i64, i64 }, align 16
|
|
%a571 = alloca { ptr, i64, i64 }, align 16
|
|
%a572 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
%t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
call void @finch_str_copy(ptr %a8, ptr %a7)
|
|
%t9 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
%t11 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1
|
|
%t12 = load { ptr, i64, i64 }, ptr %t11
|
|
%t13 = extractvalue { ptr, i64, i64 } %t12, 1
|
|
%t14 = icmp uge i64 0, %t13
|
|
br i1 %t14, label %range4943, label %inrange4944
|
|
range4943:
|
|
call void @finch_panic_index(ptr @.str.3200, i64 2487, i64 0, i64 %t13)
|
|
unreachable
|
|
inrange4944:
|
|
%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 %range4945, label %inrange4946
|
|
range4945:
|
|
call void @finch_panic_index(ptr @.str.3201, i64 2488, i64 1, i64 %t24)
|
|
unreachable
|
|
inrange4946:
|
|
%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.3202, i64 3, i64 0 }, ptr %a35
|
|
%t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35)
|
|
%t37 = icmp ne i32 %t36, 0
|
|
br label %logic.from4947
|
|
logic.from4947:
|
|
br i1 %t37, label %logic.end4949, label %logic.rhs4948
|
|
logic.rhs4948:
|
|
%t38 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t38, ptr %a39
|
|
store { ptr, i64, i64 } { ptr @.str.3203, i64 3, i64 0 }, ptr %a40
|
|
%t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40)
|
|
%t42 = icmp ne i32 %t41, 0
|
|
br label %logic.rend4950
|
|
logic.rend4950:
|
|
br label %logic.end4949
|
|
logic.end4949:
|
|
%t43 = phi i1 [ true, %logic.from4947 ], [ %t42, %logic.rend4950 ]
|
|
br label %logic.from4951
|
|
logic.from4951:
|
|
br i1 %t43, label %logic.end4953, label %logic.rhs4952
|
|
logic.rhs4952:
|
|
%t44 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t44, ptr %a45
|
|
store { ptr, i64, i64 } { ptr @.str.3204, i64 6, i64 0 }, ptr %a46
|
|
%t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46)
|
|
%t48 = icmp ne i32 %t47, 0
|
|
br label %logic.rend4954
|
|
logic.rend4954:
|
|
br label %logic.end4953
|
|
logic.end4953:
|
|
%t49 = phi i1 [ true, %logic.from4951 ], [ %t48, %logic.rend4954 ]
|
|
br i1 %t49, label %then4955, label %endif4957
|
|
then4955:
|
|
%t50 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t50, ptr %a51
|
|
store { ptr, i64, i64 } { ptr @.str.3205, i64 3, i64 0 }, ptr %a52
|
|
%t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52)
|
|
%t54 = icmp ne i32 %t53, 0
|
|
br i1 %t54, label %then4958, label %else4959
|
|
then4958:
|
|
%t55 = load ptr, ptr %a1
|
|
%t56 = load %S.ast.Node, ptr %a2
|
|
%t57 = load { ptr, i64, i64 }, ptr %a10
|
|
call void @finch.gen.checkArgs(ptr %t55, %S.ast.Node %t56, i64 1, i64 2, { ptr, i64, i64 } %t57)
|
|
br label %endif4960
|
|
else4959:
|
|
%t58 = load ptr, ptr %a1
|
|
%t59 = load %S.ast.Node, ptr %a2
|
|
%t60 = load { ptr, i64, i64 }, ptr %a10
|
|
call void @finch.gen.checkArgs(ptr %t58, %S.ast.Node %t59, i64 1, i64 1, { ptr, i64, i64 } %t60)
|
|
br label %endif4960
|
|
endif4960:
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t64 = load { ptr, i64, i64 }, ptr %t63
|
|
%t65 = extractvalue { ptr, i64, i64 } %t64, 1
|
|
%t66 = icmp uge i64 1, %t65
|
|
br i1 %t66, label %range4961, label %inrange4962
|
|
range4961:
|
|
call void @finch_panic_index(ptr @.str.3206, i64 2495, i64 1, i64 %t65)
|
|
unreachable
|
|
inrange4962:
|
|
%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 %range4963, label %inrange4964
|
|
range4963:
|
|
call void @finch_panic_index(ptr @.str.3207, i64 2495, i64 1, i64 %t75)
|
|
unreachable
|
|
inrange4964:
|
|
%t77 = extractvalue { ptr, i64, i64 } %t74, 0
|
|
%t78 = getelementptr inbounds %S.ast.Node, ptr %t77, i64 1
|
|
%t79 = load %S.ast.Node, ptr %t78
|
|
%t80 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t71, %S.ast.Type %t72, %S.ast.Node %t79, { ptr, i64, i64 } { ptr @.str.3208, i64 7, i64 0 })
|
|
store %S.gen.Val %t80, ptr %a81
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = load { ptr, i64, i64 }, ptr %a3
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = load %S.gen.Val, ptr %a81
|
|
%t86 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t84, %S.gen.Val %t85)
|
|
%t87 = load %S.ast.Type, ptr %a4
|
|
%t88 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t82, { ptr, i64, i64 } %t83, { ptr, i64, i64 } %t86, %S.ast.Type %t87)
|
|
store { ptr, i64, i64 } %t88, ptr %a89
|
|
%t90 = load ptr, ptr %a1
|
|
%t91 = load { ptr, i64, i64 }, ptr %a89
|
|
store { ptr, i64, i64 } { ptr @.str.3209, i64 13, i64 0 }, ptr %a93
|
|
store { ptr, i64, i64 } %t91, ptr %a94
|
|
call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94)
|
|
%t95 = load { ptr, i64, i64 }, ptr %a92
|
|
store { ptr, i64, i64 } %t95, ptr %a97
|
|
store { ptr, i64, i64 } { ptr @.str.3210, i64 3, i64 0 }, ptr %a98
|
|
call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a96
|
|
%t100 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t99)
|
|
store { ptr, i64, i64 } %t100, ptr %a101
|
|
%t102 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t102, ptr %a103
|
|
store { ptr, i64, i64 } { ptr @.str.3211, i64 3, i64 0 }, ptr %a104
|
|
%t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104)
|
|
%t106 = icmp ne i32 %t105, 0
|
|
br i1 %t106, label %then4965, label %endif4967
|
|
then4965:
|
|
%t107 = load { ptr, i64, i64 }, ptr %a101
|
|
store { ptr, i64, i64 } %t107, ptr %a108
|
|
call void @finch_str_copy(ptr %a109, ptr %a108)
|
|
%t110 = load { ptr, i64, i64 }, ptr %a109
|
|
%t111 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t110, 0
|
|
%t112 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3212, i64 4, i64 0 })
|
|
%t113 = insertvalue %S.gen.Val %t111, %S.ast.Type %t112, 1
|
|
ret %S.gen.Val %t113
|
|
endif4967:
|
|
%t114 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t114, ptr %a115
|
|
store { ptr, i64, i64 } { ptr @.str.3213, i64 6, i64 0 }, ptr %a116
|
|
%t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116)
|
|
%t118 = icmp ne i32 %t117, 0
|
|
br i1 %t118, label %then4968, label %endif4970
|
|
then4968:
|
|
%t119 = load ptr, ptr %a1
|
|
%t120 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t119, { ptr, i64, i64 } { ptr @.str.3214, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t120, ptr %a121
|
|
%t122 = load ptr, ptr %a1
|
|
%t123 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t122, { ptr, i64, i64 } { ptr @.str.3215, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t123, ptr %a124
|
|
%t125 = load ptr, ptr %a1
|
|
%t126 = load { ptr, i64, i64 }, ptr %a101
|
|
%t127 = load { ptr, i64, i64 }, ptr %a121
|
|
%t128 = load { ptr, i64, i64 }, ptr %a124
|
|
call void @finch.gen.condBr(ptr %t125, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127, { ptr, i64, i64 } %t128)
|
|
%t129 = load ptr, ptr %a1
|
|
%t130 = load { ptr, i64, i64 }, ptr %a121
|
|
call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130)
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.3216, i64 35, i64 0 }, ptr %a134
|
|
store { ptr, i64, i64 } %t132, ptr %a135
|
|
call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135)
|
|
%t136 = load { ptr, i64, i64 }, ptr %a133
|
|
store { ptr, i64, i64 } %t136, ptr %a138
|
|
store { ptr, i64, i64 } { ptr @.str.3217, i64 6, i64 0 }, ptr %a139
|
|
call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139)
|
|
%t140 = load { ptr, i64, i64 }, ptr %a137
|
|
%t141 = load { ptr, i64, i64 }, ptr %a89
|
|
store { ptr, i64, i64 } %t140, ptr %a143
|
|
store { ptr, i64, i64 } %t141, ptr %a144
|
|
call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144)
|
|
%t145 = load { ptr, i64, i64 }, ptr %a142
|
|
store { ptr, i64, i64 } %t145, ptr %a147
|
|
store { ptr, i64, i64 } { ptr @.str.3218, i64 6, i64 0 }, ptr %a148
|
|
call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148)
|
|
%t149 = load { ptr, i64, i64 }, ptr %a146
|
|
%t150 = load ptr, ptr %a1
|
|
%t151 = load %S.ast.Type, ptr %a4
|
|
%t152 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t150, %S.ast.Type %t151)
|
|
store { ptr, i64, i64 } %t149, ptr %a154
|
|
store { ptr, i64, i64 } %t152, ptr %a155
|
|
call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155)
|
|
%t156 = load { ptr, i64, i64 }, ptr %a153
|
|
store { ptr, i64, i64 } %t156, ptr %a158
|
|
store { ptr, i64, i64 } { ptr @.str.3219, i64 1, i64 0 }, ptr %a159
|
|
call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159)
|
|
%t160 = load { ptr, i64, i64 }, ptr %a157
|
|
call void @finch.gen.emit(ptr %t131, { ptr, i64, i64 } %t160)
|
|
%t161 = load ptr, ptr %a1
|
|
%t162 = load { ptr, i64, i64 }, ptr %a124
|
|
call void @finch.gen.br(ptr %t161, { ptr, i64, i64 } %t162)
|
|
%t163 = load ptr, ptr %a1
|
|
%t164 = load { ptr, i64, i64 }, ptr %a124
|
|
call void @finch.gen.label(ptr %t163, { ptr, i64, i64 } %t164)
|
|
%t165 = load { ptr, i64, i64 }, ptr %a101
|
|
store { ptr, i64, i64 } %t165, ptr %a166
|
|
call void @finch_str_copy(ptr %a167, ptr %a166)
|
|
%t168 = load { ptr, i64, i64 }, ptr %a167
|
|
%t169 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t168, 0
|
|
%t170 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3220, i64 4, i64 0 })
|
|
%t171 = insertvalue %S.gen.Val %t169, %S.ast.Type %t170, 1
|
|
ret %S.gen.Val %t171
|
|
endif4970:
|
|
%t172 = load ptr, ptr %a1
|
|
%t173 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t172, { ptr, i64, i64 } { ptr @.str.3221, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t173, ptr %a174
|
|
%t175 = load ptr, ptr %a1
|
|
%t176 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t175, { ptr, i64, i64 } { ptr @.str.3222, i64 11, i64 0 })
|
|
store { ptr, i64, i64 } %t176, ptr %a177
|
|
%t178 = load ptr, ptr %a1
|
|
%t179 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t178, { ptr, i64, i64 } { ptr @.str.3223, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t179, ptr %a180
|
|
%t181 = load ptr, ptr %a1
|
|
%t182 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t181, { ptr, i64, i64 } { ptr @.str.3224, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t182, ptr %a183
|
|
%t184 = load ptr, ptr %a1
|
|
%t185 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t184, { ptr, i64, i64 } { ptr @.str.3225, i64 7, i64 0 })
|
|
store { ptr, i64, i64 } %t185, ptr %a186
|
|
%t187 = load ptr, ptr %a1
|
|
%t188 = load { ptr, i64, i64 }, ptr %a101
|
|
%t189 = load { ptr, i64, i64 }, ptr %a174
|
|
%t190 = load { ptr, i64, i64 }, ptr %a177
|
|
call void @finch.gen.condBr(ptr %t187, { ptr, i64, i64 } %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190)
|
|
%t191 = load ptr, ptr %a1
|
|
%t192 = load { ptr, i64, i64 }, ptr %a174
|
|
call void @finch.gen.label(ptr %t191, { ptr, i64, i64 } %t192)
|
|
%t193 = load ptr, ptr %a1
|
|
%t194 = load ptr, ptr %a1
|
|
%t195 = load ptr, ptr %a1
|
|
%t196 = load %S.ast.Type, ptr %a32
|
|
%t197 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t195, %S.ast.Type %t196)
|
|
%t198 = load ptr, ptr %a1
|
|
%t199 = load ptr, ptr %a1
|
|
%t200 = load { ptr, i64, i64 }, ptr %a3
|
|
%t201 = load %S.ast.Type, ptr %a4
|
|
%t202 = load { ptr, i64, i64 }, ptr %a89
|
|
%t203 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t199, { ptr, i64, i64 } %t200, %S.ast.Type %t201, { ptr, i64, i64 } %t202)
|
|
%t204 = load %S.ast.Type, ptr %a4
|
|
%t205 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t198, { ptr, i64, i64 } %t203, %S.ast.Type %t204, i64 2)
|
|
%t206 = call { ptr, i64, i64 } @finch.gen.load(ptr %t194, { ptr, i64, i64 } %t197, { ptr, i64, i64 } %t205)
|
|
%t207 = load %S.ast.Type, ptr %a32
|
|
%t208 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t193, { ptr, i64, i64 } %t206, %S.ast.Type %t207)
|
|
store { ptr, i64, i64 } %t208, ptr %a209
|
|
%t210 = load ptr, ptr %a1
|
|
%t211 = load { ptr, i64, i64 }, ptr %a180
|
|
call void @finch.gen.br(ptr %t210, { ptr, i64, i64 } %t211)
|
|
%t212 = load ptr, ptr %a1
|
|
%t213 = load { ptr, i64, i64 }, ptr %a180
|
|
call void @finch.gen.label(ptr %t212, { ptr, i64, i64 } %t213)
|
|
%t214 = load ptr, ptr %a1
|
|
%t215 = load { ptr, i64, i64 }, ptr %a186
|
|
call void @finch.gen.br(ptr %t214, { ptr, i64, i64 } %t215)
|
|
%t216 = load ptr, ptr %a1
|
|
%t217 = load { ptr, i64, i64 }, ptr %a177
|
|
call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217)
|
|
%t218 = load ptr, ptr %a1
|
|
%t219 = load ptr, ptr %a1
|
|
%t220 = load ptr, ptr %a1
|
|
%t221 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t222 = load { ptr, i64, i64 }, ptr %t221
|
|
%t223 = extractvalue { ptr, i64, i64 } %t222, 1
|
|
%t224 = icmp uge i64 2, %t223
|
|
br i1 %t224, label %range4971, label %inrange4972
|
|
range4971:
|
|
call void @finch_panic_index(ptr @.str.3226, i64 2524, i64 2, i64 %t223)
|
|
unreachable
|
|
inrange4972:
|
|
%t225 = extractvalue { ptr, i64, i64 } %t222, 0
|
|
%t226 = getelementptr inbounds %S.ast.Node, ptr %t225, i64 2
|
|
%t227 = load %S.ast.Node, ptr %t226
|
|
%t228 = load %S.ast.Type, ptr %a32
|
|
%t229 = call %S.gen.Val @finch.gen.exprWant(ptr %t220, %S.ast.Node %t227, %S.ast.Type %t228)
|
|
%t230 = load %S.ast.Type, ptr %a32
|
|
%t231 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t232 = load { ptr, i64, i64 }, ptr %t231
|
|
%t233 = extractvalue { ptr, i64, i64 } %t232, 1
|
|
%t234 = icmp uge i64 2, %t233
|
|
br i1 %t234, label %range4973, label %inrange4974
|
|
range4973:
|
|
call void @finch_panic_index(ptr @.str.3227, i64 2524, i64 2, i64 %t233)
|
|
unreachable
|
|
inrange4974:
|
|
%t235 = extractvalue { ptr, i64, i64 } %t232, 0
|
|
%t236 = getelementptr inbounds %S.ast.Node, ptr %t235, i64 2
|
|
%t237 = load %S.ast.Node, ptr %t236
|
|
%t238 = call %S.gen.Val @finch.gen.coerce(ptr %t219, %S.gen.Val %t229, %S.ast.Type %t230, %S.ast.Node %t237, { ptr, i64, i64 } { ptr @.str.3228, i64 11, i64 0 })
|
|
%t239 = call { ptr, i64, i64 } @finch.gen.own(ptr %t218, %S.gen.Val %t238)
|
|
store { ptr, i64, i64 } %t239, ptr %a240
|
|
%t241 = load ptr, ptr %a1
|
|
%t242 = load { ptr, i64, i64 }, ptr %a183
|
|
call void @finch.gen.br(ptr %t241, { ptr, i64, i64 } %t242)
|
|
%t243 = load ptr, ptr %a1
|
|
%t244 = load { ptr, i64, i64 }, ptr %a183
|
|
call void @finch.gen.label(ptr %t243, { ptr, i64, i64 } %t244)
|
|
%t245 = load ptr, ptr %a1
|
|
%t246 = load { ptr, i64, i64 }, ptr %a186
|
|
call void @finch.gen.br(ptr %t245, { ptr, i64, i64 } %t246)
|
|
%t247 = load ptr, ptr %a1
|
|
%t248 = load { ptr, i64, i64 }, ptr %a186
|
|
call void @finch.gen.label(ptr %t247, { ptr, i64, i64 } %t248)
|
|
%t249 = load ptr, ptr %a1
|
|
%t250 = load ptr, ptr %a1
|
|
%t251 = load %S.ast.Type, ptr %a32
|
|
%t252 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t250, %S.ast.Type %t251)
|
|
store { ptr, i64, i64 } { ptr @.str.3229, i64 4, i64 0 }, ptr %a254
|
|
store { ptr, i64, i64 } %t252, ptr %a255
|
|
call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255)
|
|
%t256 = load { ptr, i64, i64 }, ptr %a253
|
|
store { ptr, i64, i64 } %t256, ptr %a258
|
|
store { ptr, i64, i64 } { ptr @.str.3230, i64 3, i64 0 }, ptr %a259
|
|
call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259)
|
|
%t260 = load { ptr, i64, i64 }, ptr %a257
|
|
%t261 = load { ptr, i64, i64 }, ptr %a209
|
|
store { ptr, i64, i64 } %t260, ptr %a263
|
|
store { ptr, i64, i64 } %t261, ptr %a264
|
|
call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264)
|
|
%t265 = load { ptr, i64, i64 }, ptr %a262
|
|
store { ptr, i64, i64 } %t265, ptr %a267
|
|
store { ptr, i64, i64 } { ptr @.str.3231, i64 3, i64 0 }, ptr %a268
|
|
call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268)
|
|
%t269 = load { ptr, i64, i64 }, ptr %a266
|
|
%t270 = load { ptr, i64, i64 }, ptr %a180
|
|
store { ptr, i64, i64 } %t269, ptr %a272
|
|
store { ptr, i64, i64 } %t270, ptr %a273
|
|
call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273)
|
|
%t274 = load { ptr, i64, i64 }, ptr %a271
|
|
store { ptr, i64, i64 } %t274, ptr %a276
|
|
store { ptr, i64, i64 } { ptr @.str.3232, i64 6, i64 0 }, ptr %a277
|
|
call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277)
|
|
%t278 = load { ptr, i64, i64 }, ptr %a275
|
|
%t279 = load { ptr, i64, i64 }, ptr %a240
|
|
store { ptr, i64, i64 } %t278, ptr %a281
|
|
store { ptr, i64, i64 } %t279, ptr %a282
|
|
call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282)
|
|
%t283 = load { ptr, i64, i64 }, ptr %a280
|
|
store { ptr, i64, i64 } %t283, ptr %a285
|
|
store { ptr, i64, i64 } { ptr @.str.3233, i64 3, i64 0 }, ptr %a286
|
|
call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286)
|
|
%t287 = load { ptr, i64, i64 }, ptr %a284
|
|
%t288 = load { ptr, i64, i64 }, ptr %a183
|
|
store { ptr, i64, i64 } %t287, ptr %a290
|
|
store { ptr, i64, i64 } %t288, ptr %a291
|
|
call void @finch_str_concat(ptr %a289, ptr %a290, ptr %a291)
|
|
%t292 = load { ptr, i64, i64 }, ptr %a289
|
|
store { ptr, i64, i64 } %t292, ptr %a294
|
|
store { ptr, i64, i64 } { ptr @.str.3234, i64 2, i64 0 }, ptr %a295
|
|
call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295)
|
|
%t296 = load { ptr, i64, i64 }, ptr %a293
|
|
%t297 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t296)
|
|
%t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t297, 0
|
|
%t299 = load %S.ast.Type, ptr %a32
|
|
store %S.ast.Type %t299, ptr %a300
|
|
call void @finch.copy.S_ast_Type(ptr %a301, ptr %a300)
|
|
%t302 = load %S.ast.Type, ptr %a301
|
|
%t303 = insertvalue %S.gen.Val %t298, %S.ast.Type %t302, 1
|
|
%t304 = load ptr, ptr %a1
|
|
%t305 = load %S.ast.Type, ptr %a32
|
|
%t306 = call i1 @finch.gen.owning(ptr %t304, %S.ast.Type %t305)
|
|
%t307 = insertvalue %S.gen.Val %t303, i1 %t306, 2
|
|
ret %S.gen.Val %t307
|
|
endif4957:
|
|
%t308 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t308, ptr %a309
|
|
store { ptr, i64, i64 } { ptr @.str.3235, i64 5, i64 0 }, ptr %a310
|
|
%t311 = call i32 @finch_str_eq(ptr %a309, ptr %a310)
|
|
%t312 = icmp ne i32 %t311, 0
|
|
br i1 %t312, label %then4975, label %endif4977
|
|
then4975:
|
|
%t313 = load ptr, ptr %a1
|
|
%t314 = load %S.ast.Node, ptr %a2
|
|
%t315 = load { ptr, i64, i64 }, ptr %a10
|
|
call void @finch.gen.checkArgs(ptr %t313, %S.ast.Node %t314, i64 1, i64 0, { ptr, i64, i64 } %t315)
|
|
%t316 = load ptr, ptr %a1
|
|
%t317 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.3236, i64 31, i64 0 }, ptr %a319
|
|
store { ptr, i64, i64 } %t317, ptr %a320
|
|
call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320)
|
|
%t321 = load { ptr, i64, i64 }, ptr %a318
|
|
store { ptr, i64, i64 } %t321, ptr %a323
|
|
store { ptr, i64, i64 } { ptr @.str.3237, i64 1, i64 0 }, ptr %a324
|
|
call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324)
|
|
%t325 = load { ptr, i64, i64 }, ptr %a322
|
|
call void @finch.gen.emit(ptr %t316, { ptr, i64, i64 } %t325)
|
|
%t326 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3238, i64 4, i64 0 })
|
|
%t327 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t326, 1
|
|
ret %S.gen.Val %t327
|
|
endif4977:
|
|
%t328 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t328, ptr %a329
|
|
store { ptr, i64, i64 } { ptr @.str.3239, i64 4, i64 0 }, ptr %a330
|
|
%t331 = call i32 @finch_str_eq(ptr %a329, ptr %a330)
|
|
%t332 = icmp ne i32 %t331, 0
|
|
br label %logic.from4978
|
|
logic.from4978:
|
|
br i1 %t332, label %logic.end4980, label %logic.rhs4979
|
|
logic.rhs4979:
|
|
%t333 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t333, ptr %a334
|
|
store { ptr, i64, i64 } { ptr @.str.3240, i64 6, i64 0 }, ptr %a335
|
|
%t336 = call i32 @finch_str_eq(ptr %a334, ptr %a335)
|
|
%t337 = icmp ne i32 %t336, 0
|
|
br label %logic.rend4981
|
|
logic.rend4981:
|
|
br label %logic.end4980
|
|
logic.end4980:
|
|
%t338 = phi i1 [ true, %logic.from4978 ], [ %t337, %logic.rend4981 ]
|
|
br i1 %t338, label %then4982, label %endif4984
|
|
then4982:
|
|
%t339 = load ptr, ptr %a1
|
|
%t340 = load %S.ast.Node, ptr %a2
|
|
%t341 = load { ptr, i64, i64 }, ptr %a10
|
|
call void @finch.gen.checkArgs(ptr %t339, %S.ast.Node %t340, i64 1, i64 0, { ptr, i64, i64 } %t341)
|
|
store i64 1, ptr %a342
|
|
%t343 = load %S.ast.Type, ptr %a21
|
|
store %S.ast.Type %t343, ptr %a344
|
|
call void @finch.copy.S_ast_Type(ptr %a345, ptr %a344)
|
|
%t346 = load %S.ast.Type, ptr %a345
|
|
store %S.ast.Type %t346, ptr %a347
|
|
%t348 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t348, ptr %a349
|
|
store { ptr, i64, i64 } { ptr @.str.3241, i64 6, i64 0 }, ptr %a350
|
|
%t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350)
|
|
%t352 = icmp ne i32 %t351, 0
|
|
br i1 %t352, label %then4985, label %endif4987
|
|
then4985:
|
|
store i64 2, ptr %a342
|
|
%t353 = load %S.ast.Type, ptr %a32
|
|
store %S.ast.Type %t353, ptr %a354
|
|
call void @finch.copy.S_ast_Type(ptr %a355, ptr %a354)
|
|
%t356 = load %S.ast.Type, ptr %a355
|
|
store %S.ast.Type %t356, ptr %a347
|
|
br label %endif4987
|
|
endif4987:
|
|
%t357 = load %S.ast.Type, ptr %a347
|
|
%t358 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t357)
|
|
store %S.ast.Type %t358, ptr %a359
|
|
%t360 = load ptr, ptr %a1
|
|
%t361 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t360, { ptr, i64, i64 } { ptr @.str.3242, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t361, ptr %a362
|
|
%t363 = load ptr, ptr %a1
|
|
%t364 = load { ptr, i64, i64 }, ptr %a362
|
|
call void @finch.gen.store(ptr %t363, { ptr, i64, i64 } { ptr @.str.3243, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3244, i64 15, i64 0 }, { ptr, i64, i64 } %t364)
|
|
%t365 = load ptr, ptr %a1
|
|
%t366 = load ptr, ptr %a1
|
|
%t367 = load ptr, ptr %a1
|
|
%t368 = load %S.ast.Type, ptr %a4
|
|
%t369 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t367, %S.ast.Type %t368)
|
|
store { ptr, i64, i64 } { ptr @.str.3246, i64 23, i64 0 }, ptr %a371
|
|
store { ptr, i64, i64 } %t369, ptr %a372
|
|
call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372)
|
|
%t373 = load { ptr, i64, i64 }, ptr %a370
|
|
store { ptr, i64, i64 } %t373, ptr %a375
|
|
store { ptr, i64, i64 } { ptr @.str.3247, i64 6, i64 0 }, ptr %a376
|
|
call void @finch_str_concat(ptr %a374, ptr %a375, ptr %a376)
|
|
%t377 = load { ptr, i64, i64 }, ptr %a374
|
|
%t378 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t377, ptr %a380
|
|
store { ptr, i64, i64 } %t378, ptr %a381
|
|
call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381)
|
|
%t382 = load { ptr, i64, i64 }, ptr %a379
|
|
store { ptr, i64, i64 } %t382, ptr %a384
|
|
store { ptr, i64, i64 } { ptr @.str.3248, i64 14, i64 0 }, ptr %a385
|
|
call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385)
|
|
%t386 = load { ptr, i64, i64 }, ptr %a383
|
|
%t387 = call { ptr, i64, i64 } @finch.gen.op(ptr %t366, { ptr, i64, i64 } %t386)
|
|
%t388 = call { ptr, i64, i64 } @finch.gen.load(ptr %t365, { ptr, i64, i64 } { ptr @.str.3245, i64 3, i64 0 }, { ptr, i64, i64 } %t387)
|
|
store { ptr, i64, i64 } %t388, ptr %a389
|
|
%t390 = load ptr, ptr %a1
|
|
%t391 = load { ptr, i64, i64 }, ptr %a362
|
|
store { ptr, i64, i64 } { ptr @.str.3249, i64 30, i64 0 }, ptr %a393
|
|
store { ptr, i64, i64 } %t391, ptr %a394
|
|
call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394)
|
|
%t395 = load { ptr, i64, i64 }, ptr %a392
|
|
store { ptr, i64, i64 } %t395, ptr %a397
|
|
store { ptr, i64, i64 } { ptr @.str.3250, i64 6, i64 0 }, ptr %a398
|
|
call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398)
|
|
%t399 = load { ptr, i64, i64 }, ptr %a396
|
|
%t400 = load { ptr, i64, i64 }, ptr %a389
|
|
store { ptr, i64, i64 } %t399, ptr %a402
|
|
store { ptr, i64, i64 } %t400, ptr %a403
|
|
call void @finch_str_concat(ptr %a401, ptr %a402, ptr %a403)
|
|
%t404 = load { ptr, i64, i64 }, ptr %a401
|
|
store { ptr, i64, i64 } %t404, ptr %a406
|
|
store { ptr, i64, i64 } { ptr @.str.3251, i64 6, i64 0 }, ptr %a407
|
|
call void @finch_str_concat(ptr %a405, ptr %a406, ptr %a407)
|
|
%t408 = load { ptr, i64, i64 }, ptr %a405
|
|
%t409 = load ptr, ptr %a1
|
|
%t410 = load %S.ast.Type, ptr %a347
|
|
%t411 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t409, %S.ast.Type %t410)
|
|
store { ptr, i64, i64 } %t408, ptr %a413
|
|
store { ptr, i64, i64 } %t411, ptr %a414
|
|
call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414)
|
|
%t415 = load { ptr, i64, i64 }, ptr %a412
|
|
store { ptr, i64, i64 } %t415, ptr %a417
|
|
store { ptr, i64, i64 } { ptr @.str.3252, i64 1, i64 0 }, ptr %a418
|
|
call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418)
|
|
%t419 = load { ptr, i64, i64 }, ptr %a416
|
|
call void @finch.gen.emit(ptr %t390, { ptr, i64, i64 } %t419)
|
|
%t420 = load ptr, ptr %a1
|
|
%t421 = load { ptr, i64, i64 }, ptr %a362
|
|
%t422 = call { ptr, i64, i64 } @finch.gen.load(ptr %t420, { ptr, i64, i64 } { ptr @.str.3253, i64 3, i64 0 }, { ptr, i64, i64 } %t421)
|
|
store { ptr, i64, i64 } %t422, ptr %a423
|
|
%t424 = load ptr, ptr %a1
|
|
%t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t424, { ptr, i64, i64 } { ptr @.str.3254, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t425, ptr %a426
|
|
%t427 = load ptr, ptr %a1
|
|
%t428 = load { ptr, i64, i64 }, ptr %a426
|
|
call void @finch.gen.store(ptr %t427, { ptr, i64, i64 } { ptr @.str.3255, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3256, i64 1, i64 0 }, { ptr, i64, i64 } %t428)
|
|
%t429 = load ptr, ptr %a1
|
|
%t430 = load ptr, ptr %a1
|
|
%t431 = load ptr, ptr %a1
|
|
%t432 = load %S.ast.Type, ptr %a4
|
|
%t433 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t431, %S.ast.Type %t432)
|
|
store { ptr, i64, i64 } { ptr @.str.3258, i64 23, i64 0 }, ptr %a435
|
|
store { ptr, i64, i64 } %t433, ptr %a436
|
|
call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436)
|
|
%t437 = load { ptr, i64, i64 }, ptr %a434
|
|
store { ptr, i64, i64 } %t437, ptr %a439
|
|
store { ptr, i64, i64 } { ptr @.str.3259, i64 6, i64 0 }, ptr %a440
|
|
call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440)
|
|
%t441 = load { ptr, i64, i64 }, ptr %a438
|
|
%t442 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t441, ptr %a444
|
|
store { ptr, i64, i64 } %t442, ptr %a445
|
|
call void @finch_str_concat(ptr %a443, ptr %a444, ptr %a445)
|
|
%t446 = load { ptr, i64, i64 }, ptr %a443
|
|
store { ptr, i64, i64 } %t446, ptr %a448
|
|
store { ptr, i64, i64 } { ptr @.str.3260, i64 14, i64 0 }, ptr %a449
|
|
call void @finch_str_concat(ptr %a447, ptr %a448, ptr %a449)
|
|
%t450 = load { ptr, i64, i64 }, ptr %a447
|
|
%t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t430, { ptr, i64, i64 } %t450)
|
|
%t452 = call { ptr, i64, i64 } @finch.gen.load(ptr %t429, { ptr, i64, i64 } { ptr @.str.3257, i64 3, i64 0 }, { ptr, i64, i64 } %t451)
|
|
store { ptr, i64, i64 } %t452, ptr %a453
|
|
%t454 = load ptr, ptr %a1
|
|
%t455 = load { ptr, i64, i64 }, ptr %a453
|
|
%t456 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t454, { ptr, i64, i64 } %t455)
|
|
store { ptr, i64, i64 } %t456, ptr %a457
|
|
%t458 = load ptr, ptr %a1
|
|
%t459 = load { ptr, i64, i64 }, ptr %a3
|
|
%t460 = load %S.ast.Type, ptr %a4
|
|
%t461 = load { ptr, i64, i64 }, ptr %a457
|
|
%t462 = extractvalue { ptr, i64, i64 } %t461, 1
|
|
%t463 = icmp uge i64 3, %t462
|
|
br i1 %t463, label %range4988, label %inrange4989
|
|
range4988:
|
|
call void @finch_panic_index(ptr @.str.3261, i64 2554, i64 3, i64 %t462)
|
|
unreachable
|
|
inrange4989:
|
|
%t464 = extractvalue { ptr, i64, i64 } %t461, 0
|
|
%t465 = getelementptr inbounds { ptr, i64, i64 }, ptr %t464, i64 3
|
|
%t466 = load { ptr, i64, i64 }, ptr %t465
|
|
%t467 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t458, { ptr, i64, i64 } %t459, %S.ast.Type %t460, { ptr, i64, i64 } %t466)
|
|
store { ptr, i64, i64 } %t467, ptr %a468
|
|
%t469 = load ptr, ptr %a1
|
|
%t470 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t469, { ptr, i64, i64 } { ptr @.str.3262, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t470, ptr %a471
|
|
%t472 = load ptr, ptr %a1
|
|
%t473 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t472, { ptr, i64, i64 } { ptr @.str.3263, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t473, ptr %a474
|
|
%t475 = load ptr, ptr %a1
|
|
%t476 = load ptr, ptr %a1
|
|
%t477 = load ptr, ptr %a1
|
|
%t478 = load ptr, ptr %a1
|
|
%t479 = load { ptr, i64, i64 }, ptr %a468
|
|
%t480 = load %S.ast.Type, ptr %a4
|
|
%t481 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t478, { ptr, i64, i64 } %t479, %S.ast.Type %t480, i64 0)
|
|
%t482 = call { ptr, i64, i64 } @finch.gen.load(ptr %t477, { ptr, i64, i64 } { ptr @.str.3265, i64 3, i64 0 }, { ptr, i64, i64 } %t481)
|
|
store { ptr, i64, i64 } { ptr @.str.3264, i64 12, i64 0 }, ptr %a484
|
|
store { ptr, i64, i64 } %t482, ptr %a485
|
|
call void @finch_str_concat(ptr %a483, ptr %a484, ptr %a485)
|
|
%t486 = load { ptr, i64, i64 }, ptr %a483
|
|
store { ptr, i64, i64 } %t486, ptr %a488
|
|
store { ptr, i64, i64 } { ptr @.str.3266, i64 3, i64 0 }, ptr %a489
|
|
call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489)
|
|
%t490 = load { ptr, i64, i64 }, ptr %a487
|
|
%t491 = call { ptr, i64, i64 } @finch.gen.op(ptr %t476, { ptr, i64, i64 } %t490)
|
|
%t492 = load { ptr, i64, i64 }, ptr %a471
|
|
%t493 = load { ptr, i64, i64 }, ptr %a474
|
|
call void @finch.gen.condBr(ptr %t475, { ptr, i64, i64 } %t491, { ptr, i64, i64 } %t492, { ptr, i64, i64 } %t493)
|
|
%t494 = load ptr, ptr %a1
|
|
%t495 = load { ptr, i64, i64 }, ptr %a471
|
|
call void @finch.gen.label(ptr %t494, { ptr, i64, i64 } %t495)
|
|
%t496 = load ptr, ptr %a1
|
|
%t497 = load { ptr, i64, i64 }, ptr %a426
|
|
%t498 = call { ptr, i64, i64 } @finch.gen.load(ptr %t496, { ptr, i64, i64 } { ptr @.str.3267, i64 3, i64 0 }, { ptr, i64, i64 } %t497)
|
|
store { ptr, i64, i64 } %t498, ptr %a499
|
|
%t500 = load ptr, ptr %a1
|
|
%t501 = load ptr, ptr %a1
|
|
%t502 = load ptr, ptr %a1
|
|
%t503 = load %S.ast.Type, ptr %a347
|
|
%t504 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t502, %S.ast.Type %t503)
|
|
store { ptr, i64, i64 } { ptr @.str.3268, i64 23, i64 0 }, ptr %a506
|
|
store { ptr, i64, i64 } %t504, ptr %a507
|
|
call void @finch_str_concat(ptr %a505, ptr %a506, ptr %a507)
|
|
%t508 = load { ptr, i64, i64 }, ptr %a505
|
|
store { ptr, i64, i64 } %t508, ptr %a510
|
|
store { ptr, i64, i64 } { ptr @.str.3269, i64 6, i64 0 }, ptr %a511
|
|
call void @finch_str_concat(ptr %a509, ptr %a510, ptr %a511)
|
|
%t512 = load { ptr, i64, i64 }, ptr %a509
|
|
%t513 = load { ptr, i64, i64 }, ptr %a423
|
|
store { ptr, i64, i64 } %t512, ptr %a515
|
|
store { ptr, i64, i64 } %t513, ptr %a516
|
|
call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516)
|
|
%t517 = load { ptr, i64, i64 }, ptr %a514
|
|
store { ptr, i64, i64 } %t517, ptr %a519
|
|
store { ptr, i64, i64 } { ptr @.str.3270, i64 6, i64 0 }, ptr %a520
|
|
call void @finch_str_concat(ptr %a518, ptr %a519, ptr %a520)
|
|
%t521 = load { ptr, i64, i64 }, ptr %a518
|
|
%t522 = load { ptr, i64, i64 }, ptr %a499
|
|
store { ptr, i64, i64 } %t521, ptr %a524
|
|
store { ptr, i64, i64 } %t522, ptr %a525
|
|
call void @finch_str_concat(ptr %a523, ptr %a524, ptr %a525)
|
|
%t526 = load { ptr, i64, i64 }, ptr %a523
|
|
%t527 = call { ptr, i64, i64 } @finch.gen.op(ptr %t501, { ptr, i64, i64 } %t526)
|
|
%t528 = load ptr, ptr %a1
|
|
%t529 = load { ptr, i64, i64 }, ptr %a468
|
|
%t530 = load %S.ast.Type, ptr %a4
|
|
%t531 = load i64, ptr %a342
|
|
%t532 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t528, { ptr, i64, i64 } %t529, %S.ast.Type %t530, i64 %t531)
|
|
%t533 = load %S.ast.Type, ptr %a347
|
|
call void @finch.gen.copyAt(ptr %t500, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t532, %S.ast.Type %t533)
|
|
%t534 = load ptr, ptr %a1
|
|
%t535 = load ptr, ptr %a1
|
|
%t536 = load { ptr, i64, i64 }, ptr %a499
|
|
store { ptr, i64, i64 } { ptr @.str.3272, i64 8, i64 0 }, ptr %a538
|
|
store { ptr, i64, i64 } %t536, ptr %a539
|
|
call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539)
|
|
%t540 = load { ptr, i64, i64 }, ptr %a537
|
|
store { ptr, i64, i64 } %t540, ptr %a542
|
|
store { ptr, i64, i64 } { ptr @.str.3273, i64 3, i64 0 }, ptr %a543
|
|
call void @finch_str_concat(ptr %a541, ptr %a542, ptr %a543)
|
|
%t544 = load { ptr, i64, i64 }, ptr %a541
|
|
%t545 = call { ptr, i64, i64 } @finch.gen.op(ptr %t535, { ptr, i64, i64 } %t544)
|
|
%t546 = load { ptr, i64, i64 }, ptr %a426
|
|
call void @finch.gen.store(ptr %t534, { ptr, i64, i64 } { ptr @.str.3271, i64 3, i64 0 }, { ptr, i64, i64 } %t545, { ptr, i64, i64 } %t546)
|
|
%t547 = load ptr, ptr %a1
|
|
%t548 = load { ptr, i64, i64 }, ptr %a474
|
|
call void @finch.gen.br(ptr %t547, { ptr, i64, i64 } %t548)
|
|
%t549 = load ptr, ptr %a1
|
|
%t550 = load { ptr, i64, i64 }, ptr %a474
|
|
call void @finch.gen.label(ptr %t549, { ptr, i64, i64 } %t550)
|
|
%t551 = load ptr, ptr %a1
|
|
%t552 = load { ptr, i64, i64 }, ptr %a457
|
|
call void @finch.gen.loopEnd(ptr %t551, { ptr, i64, i64 } %t552)
|
|
%t553 = load ptr, ptr %a1
|
|
%t554 = load { ptr, i64, i64 }, ptr %a362
|
|
%t555 = call { ptr, i64, i64 } @finch.gen.load(ptr %t553, { ptr, i64, i64 } { ptr @.str.3274, i64 17, i64 0 }, { ptr, i64, i64 } %t554)
|
|
%t556 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t555, 0
|
|
%t557 = load %S.ast.Type, ptr %a359
|
|
store %S.ast.Type %t557, ptr %a558
|
|
call void @finch.copy.S_ast_Type(ptr %a559, ptr %a558)
|
|
%t560 = load %S.ast.Type, ptr %a559
|
|
%t561 = insertvalue %S.gen.Val %t556, %S.ast.Type %t560, 1
|
|
%t562 = insertvalue %S.gen.Val %t561, i1 true, 2
|
|
ret %S.gen.Val %t562
|
|
endif4984:
|
|
%t563 = load ptr, ptr %a1
|
|
%t564 = load %S.ast.Node, ptr %a2
|
|
%t565 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.3275, i64 21, i64 0 }, ptr %a567
|
|
store { ptr, i64, i64 } %t565, ptr %a568
|
|
call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568)
|
|
%t569 = load { ptr, i64, i64 }, ptr %a566
|
|
store { ptr, i64, i64 } %t569, ptr %a571
|
|
store { ptr, i64, i64 } { ptr @.str.3276, i64 49, i64 0 }, ptr %a572
|
|
call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572)
|
|
%t573 = load { ptr, i64, i64 }, ptr %a570
|
|
call void @finch.gen.fail(ptr %t563, %S.ast.Node %t564, { ptr, i64, i64 } %t573)
|
|
ret %S.gen.Val zeroinitializer
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.patternValue(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca %S.gen.EnumDef, align 16
|
|
%a39 = alloca %S.gen.EnumDef, align 16
|
|
%a41 = alloca %S.gen.EnumDef, align 16
|
|
%a46 = alloca i64, align 16
|
|
%a49 = alloca i64, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca i64, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca %S.ast.Type, align 16
|
|
%a111 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.3277, i64 4, i64 0 }, ptr %a7
|
|
%t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7)
|
|
%t9 = icmp ne i32 %t8, 0
|
|
br label %logic.from4990
|
|
logic.from4990:
|
|
br i1 %t9, label %logic.rhs4991, label %logic.end4992
|
|
logic.rhs4991:
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t11 = load { ptr, i64, i64 }, ptr %t10
|
|
store { ptr, i64, i64 } %t11, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.3278, i64 3, i64 0 }, ptr %a13
|
|
%t14 = call i32 @finch_str_eq(ptr %a12, ptr %a13)
|
|
%t15 = icmp ne i32 %t14, 0
|
|
br label %logic.rend4993
|
|
logic.rend4993:
|
|
br label %logic.end4992
|
|
logic.end4992:
|
|
%t16 = phi i1 [ false, %logic.from4990 ], [ %t15, %logic.rend4993 ]
|
|
br label %logic.from4994
|
|
logic.from4994:
|
|
br i1 %t16, label %logic.rhs4995, label %logic.end4996
|
|
logic.rhs4995:
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t19 = load { ptr, i64, i64 }, ptr %t18
|
|
%t20 = call i64 @finch.gen.lookup(ptr %t17, { ptr, i64, i64 } %t19)
|
|
%t21 = icmp slt i64 %t20, 0
|
|
br label %logic.rend4997
|
|
logic.rend4997:
|
|
br label %logic.end4996
|
|
logic.end4996:
|
|
%t22 = phi i1 [ false, %logic.from4994 ], [ %t21, %logic.rend4997 ]
|
|
br i1 %t22, label %then4998, label %endif5000
|
|
then4998:
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = icmp eq ptr %t23, null
|
|
br i1 %t24, label %panic5001, label %ok5002
|
|
panic5001:
|
|
call void @finch_panic(ptr @.str.3279, i64 2576, ptr @.str.3280)
|
|
unreachable
|
|
ok5002:
|
|
%t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 20
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3
|
|
%t28 = load { ptr, i64, i64 }, ptr %t27
|
|
%t29 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2
|
|
%t30 = load { ptr, i64, i64 }, ptr %t29
|
|
%t31 = call i64 @finch.gen.findEnum(ptr %t26, { ptr, i64, i64 } %t28, { ptr, i64, i64 } %t30)
|
|
%t32 = load { ptr, i64, i64 }, ptr %t25
|
|
%t33 = extractvalue { ptr, i64, i64 } %t32, 1
|
|
%t34 = icmp uge i64 %t31, %t33
|
|
br i1 %t34, label %range5003, label %inrange5004
|
|
range5003:
|
|
call void @finch_panic_index(ptr @.str.3281, i64 2576, i64 %t31, i64 %t33)
|
|
unreachable
|
|
inrange5004:
|
|
%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.cond5005
|
|
find.cond5005:
|
|
%t50 = load i64, ptr %a49
|
|
%t51 = icmp slt i64 %t50, %t47
|
|
br i1 %t51, label %find.body5006, label %find.end5009
|
|
find.body5006:
|
|
%t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i64 %t50
|
|
%t53 = load { ptr, i64, i64 }, ptr %t52
|
|
store { ptr, i64, i64 } %t53, ptr %a54
|
|
store { ptr, i64, i64 } %t45, ptr %a55
|
|
%t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55)
|
|
%t57 = icmp ne i32 %t56, 0
|
|
br i1 %t57, label %find.hit5007, label %find.next5008
|
|
find.hit5007:
|
|
store i64 %t50, ptr %a46
|
|
br label %find.end5009
|
|
find.next5008:
|
|
%t58 = add i64 %t50, 1
|
|
store i64 %t58, ptr %a49
|
|
br label %find.cond5005
|
|
find.end5009:
|
|
%t59 = load i64, ptr %a46
|
|
store i64 %t59, ptr %a60
|
|
%t61 = load i64, ptr %a60
|
|
%t62 = icmp slt i64 %t61, 0
|
|
br i1 %t62, label %then5010, label %endif5012
|
|
then5010:
|
|
%t63 = load ptr, ptr %a1
|
|
%t64 = load %S.ast.Node, ptr %a2
|
|
%t65 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t66 = load { ptr, i64, i64 }, ptr %t65
|
|
store { ptr, i64, i64 } { ptr @.str.3282, i64 1, i64 0 }, ptr %a68
|
|
store { ptr, i64, i64 } %t66, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t70, ptr %a72
|
|
store { ptr, i64, i64 } { ptr @.str.3283, i64 22, i64 0 }, ptr %a73
|
|
call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73)
|
|
%t74 = load { ptr, i64, i64 }, ptr %a71
|
|
%t75 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1
|
|
%t76 = load { ptr, i64, i64 }, ptr %t75
|
|
store { ptr, i64, i64 } %t74, ptr %a78
|
|
store { ptr, i64, i64 } %t76, ptr %a79
|
|
call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79)
|
|
%t80 = load { ptr, i64, i64 }, ptr %a77
|
|
store { ptr, i64, i64 } %t80, ptr %a82
|
|
store { ptr, i64, i64 } { ptr @.str.3284, i64 10, i64 0 }, ptr %a83
|
|
call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83)
|
|
%t84 = load { ptr, i64, i64 }, ptr %a81
|
|
%t85 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2
|
|
%t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.3285, i64 2, i64 0 }, ptr %a87
|
|
call void @finch_str_join(ptr %a88, ptr %t85, ptr %a87)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a88
|
|
store { ptr, i64, i64 } %t84, ptr %a91
|
|
store { ptr, i64, i64 } %t89, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
store { ptr, i64, i64 } %t93, ptr %a95
|
|
store { ptr, i64, i64 } { ptr @.str.3286, i64 1, i64 0 }, ptr %a96
|
|
call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a94
|
|
call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t97)
|
|
br label %endif5012
|
|
endif5012:
|
|
%t98 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3
|
|
%t99 = load i64, ptr %a60
|
|
%t100 = load { ptr, i64, i64 }, ptr %t98
|
|
%t101 = extractvalue { ptr, i64, i64 } %t100, 1
|
|
%t102 = icmp uge i64 %t99, %t101
|
|
br i1 %t102, label %range5013, label %inrange5014
|
|
range5013:
|
|
call void @finch_panic_index(ptr @.str.3287, i64 2581, i64 %t99, i64 %t101)
|
|
unreachable
|
|
inrange5014:
|
|
%t103 = extractvalue { ptr, i64, i64 } %t100, 0
|
|
%t104 = getelementptr inbounds i64, ptr %t103, i64 %t99
|
|
%t105 = load i64, ptr %t104
|
|
call void @finch_str_from_int(ptr %a106, i64 %t105)
|
|
%t107 = load { ptr, i64, i64 }, ptr %a106
|
|
%t108 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t107, 0
|
|
%t109 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t109, ptr %a110
|
|
call void @finch.copy.S_ast_Type(ptr %a111, ptr %a110)
|
|
%t112 = load %S.ast.Type, ptr %a111
|
|
%t113 = insertvalue %S.gen.Val %t108, %S.ast.Type %t112, 1
|
|
ret %S.gen.Val %t113
|
|
endif5000:
|
|
%t114 = load ptr, ptr %a1
|
|
%t115 = load ptr, ptr %a1
|
|
%t116 = load %S.ast.Node, ptr %a2
|
|
%t117 = load %S.ast.Type, ptr %a3
|
|
%t118 = call %S.gen.Val @finch.gen.exprWant(ptr %t115, %S.ast.Node %t116, %S.ast.Type %t117)
|
|
%t119 = load %S.ast.Type, ptr %a3
|
|
%t120 = load %S.ast.Node, ptr %a2
|
|
%t121 = call %S.gen.Val @finch.gen.coerce(ptr %t114, %S.gen.Val %t118, %S.ast.Type %t119, %S.ast.Node %t120, { ptr, i64, i64 } { ptr @.str.3288, i64 12, i64 0 })
|
|
ret %S.gen.Val %t121
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.matchGen(ptr %p0, %S.ast.Node %p1, i1 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i1, align 16
|
|
%a13 = alloca %S.gen.Val, align 16
|
|
%a16 = alloca %S.ast.Type, align 16
|
|
%a17 = alloca %S.ast.Type, align 16
|
|
%a19 = alloca %S.ast.Type, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca i1, align 16
|
|
%a45 = alloca i1, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca %S.ast.Type, align 16
|
|
%a55 = alloca i64, align 16
|
|
%a57 = alloca i64, align 16
|
|
%a69 = alloca %S.ast.Node, align 16
|
|
%a70 = alloca %S.ast.Node, align 16
|
|
%a72 = alloca %S.ast.Node, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca i64, align 16
|
|
%a113 = alloca %S.gen.Val, align 16
|
|
%a117 = alloca i64, align 16
|
|
%a120 = alloca i64, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca %S.gen.Val, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca %S.ast.Node, align 16
|
|
%a201 = alloca %S.ast.Node, align 16
|
|
%a203 = alloca %S.ast.Node, align 16
|
|
%a208 = alloca %S.gen.Val, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a237 = alloca %S.ast.Type, align 16
|
|
%a238 = alloca %S.ast.Type, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a304 = alloca { ptr, i64, i64 }, align 16
|
|
%a305 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca %S.gen.EnumDef, align 16
|
|
%a324 = alloca %S.gen.EnumDef, align 16
|
|
%a326 = alloca %S.gen.EnumDef, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca i64, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca i64, align 16
|
|
%a348 = alloca i64, align 16
|
|
%a353 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a385 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a388 = alloca { ptr, i64, i64 }, align 16
|
|
%a389 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a400 = alloca { ptr, i64, i64 }, align 16
|
|
%a401 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a405 = alloca { ptr, i64, i64 }, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a431 = alloca { ptr, i64, i64 }, align 16
|
|
%a433 = alloca { ptr, i64, i64 }, align 16
|
|
%a434 = alloca { ptr, i64, i64 }, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a441 = alloca { ptr, i64, i64 }, align 16
|
|
%a442 = alloca { ptr, i64, i64 }, align 16
|
|
%a447 = alloca %S.ast.Type, align 16
|
|
%a448 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i1 %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
%t7 = extractvalue { ptr, i64, i64 } %t6, 1
|
|
%t8 = icmp uge i64 0, %t7
|
|
br i1 %t8, label %range5015, label %inrange5016
|
|
range5015:
|
|
call void @finch_panic_index(ptr @.str.3289, i64 2589, i64 0, i64 %t7)
|
|
unreachable
|
|
inrange5016:
|
|
%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.3290, i64 4, i64 0 }, ptr %a23
|
|
%t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23)
|
|
%t25 = icmp ne i32 %t24, 0
|
|
br label %logic.from5017
|
|
logic.from5017:
|
|
br i1 %t25, label %logic.end5019, label %logic.rhs5018
|
|
logic.rhs5018:
|
|
%t26 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
store { ptr, i64, i64 } { ptr @.str.3291, i64 4, i64 0 }, ptr %a29
|
|
%t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29)
|
|
%t31 = icmp ne i32 %t30, 0
|
|
br label %logic.rend5020
|
|
logic.rend5020:
|
|
br label %logic.end5019
|
|
logic.end5019:
|
|
%t32 = phi i1 [ true, %logic.from5017 ], [ %t31, %logic.rend5020 ]
|
|
br i1 %t32, label %then5021, label %endif5023
|
|
then5021:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t35 = load { ptr, i64, i64 }, ptr %t34
|
|
%t36 = extractvalue { ptr, i64, i64 } %t35, 1
|
|
%t37 = icmp uge i64 0, %t36
|
|
br i1 %t37, label %range5024, label %inrange5025
|
|
range5024:
|
|
call void @finch_panic_index(ptr @.str.3292, i64 2592, i64 0, i64 %t36)
|
|
unreachable
|
|
inrange5025:
|
|
%t38 = extractvalue { ptr, i64, i64 } %t35, 0
|
|
%t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 0
|
|
%t40 = load %S.ast.Node, ptr %t39
|
|
call void @finch.gen.fail(ptr %t33, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.3293, i64 30, i64 0 })
|
|
br label %endif5023
|
|
endif5023:
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t41, { ptr, i64, i64 } { ptr @.str.3294, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t42, ptr %a43
|
|
store i1 false, ptr %a44
|
|
store i1 false, ptr %a45
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a46
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a47
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a48
|
|
%t49 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3295, i64 4, i64 0 })
|
|
store %S.ast.Type %t49, ptr %a50
|
|
%t51 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i32 0, i32 1
|
|
%t53 = load i64, ptr %t52
|
|
%t54 = sub i64 %t53, 1
|
|
store i64 %t54, ptr %a55
|
|
%t56 = load i64, ptr %a55
|
|
store i64 0, ptr %a57
|
|
br label %for.cond5026
|
|
for.cond5026:
|
|
%t58 = load i64, ptr %a57
|
|
%t59 = icmp slt i64 %t58, %t56
|
|
br i1 %t59, label %for.body5027, label %for.end5029
|
|
for.body5027:
|
|
%t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t61 = load i64, ptr %a57
|
|
%t62 = add i64 1, %t61
|
|
%t63 = load { ptr, i64, i64 }, ptr %t60
|
|
%t64 = extractvalue { ptr, i64, i64 } %t63, 1
|
|
%t65 = icmp uge i64 %t62, %t64
|
|
br i1 %t65, label %range5030, label %inrange5031
|
|
range5030:
|
|
call void @finch_panic_index(ptr @.str.3296, i64 2603, i64 %t62, i64 %t64)
|
|
unreachable
|
|
inrange5031:
|
|
%t66 = extractvalue { ptr, i64, i64 } %t63, 0
|
|
%t67 = getelementptr inbounds %S.ast.Node, ptr %t66, i64 %t62
|
|
%t68 = load %S.ast.Node, ptr %t67
|
|
store %S.ast.Node %t68, ptr %a69
|
|
call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69)
|
|
%t71 = load %S.ast.Node, ptr %a70
|
|
store %S.ast.Node %t71, ptr %a72
|
|
%t73 = load i1, ptr %a44
|
|
br i1 %t73, label %then5032, label %endif5034
|
|
then5032:
|
|
%t74 = load ptr, ptr %a1
|
|
%t75 = load %S.ast.Node, ptr %a72
|
|
call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.3297, i64 72, i64 0 })
|
|
br label %endif5034
|
|
endif5034:
|
|
%t76 = load ptr, ptr %a1
|
|
%t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3298, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
%t79 = load ptr, ptr %a1
|
|
%t80 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t79, { ptr, i64, i64 } { ptr @.str.3299, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
%t82 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 6
|
|
%t83 = load i1, ptr %t82
|
|
br i1 %t83, label %then5035, label %else5036
|
|
then5035:
|
|
store i1 true, ptr %a44
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = load { ptr, i64, i64 }, ptr %a78
|
|
call void @finch.gen.br(ptr %t84, { ptr, i64, i64 } %t85)
|
|
br label %endif5037
|
|
else5036:
|
|
%t86 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 9
|
|
%t87 = load { ptr, i64, i64 }, ptr %t86
|
|
%t88 = extractvalue { ptr, i64, i64 } %t87, 1
|
|
%t89 = icmp uge i64 0, %t88
|
|
br i1 %t89, label %range5038, label %inrange5039
|
|
range5038:
|
|
call void @finch_panic_index(ptr @.str.3300, i64 2613, i64 0, i64 %t88)
|
|
unreachable
|
|
inrange5039:
|
|
%t90 = extractvalue { ptr, i64, i64 } %t87, 0
|
|
%t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0
|
|
%t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i32 0, i32 9
|
|
%t93 = load { ptr, i64, i64 }, ptr %t92
|
|
store { ptr, i64, i64 } %t93, ptr %a94
|
|
call void @finch.copy.arr_S_ast_Node(ptr %a95, ptr %a94)
|
|
%t96 = load { ptr, i64, i64 }, ptr %a95
|
|
store { ptr, i64, i64 } %t96, ptr %a97
|
|
%t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %a97, i32 0, i32 1
|
|
%t99 = load i64, ptr %t98
|
|
store i64 0, ptr %a100
|
|
br label %for.cond5040
|
|
for.cond5040:
|
|
%t101 = load i64, ptr %a100
|
|
%t102 = icmp slt i64 %t101, %t99
|
|
br i1 %t102, label %for.body5041, label %for.end5043
|
|
for.body5041:
|
|
%t103 = load ptr, ptr %a1
|
|
%t104 = load i64, ptr %a100
|
|
%t105 = load { ptr, i64, i64 }, ptr %a97
|
|
%t106 = extractvalue { ptr, i64, i64 } %t105, 1
|
|
%t107 = icmp uge i64 %t104, %t106
|
|
br i1 %t107, label %range5044, label %inrange5045
|
|
range5044:
|
|
call void @finch_panic_index(ptr @.str.3301, i64 2615, i64 %t104, i64 %t106)
|
|
unreachable
|
|
inrange5045:
|
|
%t108 = extractvalue { ptr, i64, i64 } %t105, 0
|
|
%t109 = getelementptr inbounds %S.ast.Node, ptr %t108, i64 %t104
|
|
%t110 = load %S.ast.Node, ptr %t109
|
|
%t111 = load %S.ast.Type, ptr %a19
|
|
%t112 = call %S.gen.Val @finch.gen.patternValue(ptr %t103, %S.ast.Node %t110, %S.ast.Type %t111)
|
|
store %S.gen.Val %t112, ptr %a113
|
|
%t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a46, i32 0, i32 1
|
|
%t115 = getelementptr inbounds %S.gen.Val, ptr %a113, i32 0, i32 0
|
|
%t116 = load { ptr, i64, i64 }, ptr %t115
|
|
store i64 -1, ptr %a117
|
|
%t118 = load i64, ptr %t114
|
|
%t119 = load ptr, ptr %a46
|
|
store i64 0, ptr %a120
|
|
br label %find.cond5046
|
|
find.cond5046:
|
|
%t121 = load i64, ptr %a120
|
|
%t122 = icmp slt i64 %t121, %t118
|
|
br i1 %t122, label %find.body5047, label %find.end5050
|
|
find.body5047:
|
|
%t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i64 %t121
|
|
%t124 = load { ptr, i64, i64 }, ptr %t123
|
|
store { ptr, i64, i64 } %t124, ptr %a125
|
|
store { ptr, i64, i64 } %t116, ptr %a126
|
|
%t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126)
|
|
%t128 = icmp ne i32 %t127, 0
|
|
br i1 %t128, label %find.hit5048, label %find.next5049
|
|
find.hit5048:
|
|
store i64 %t121, ptr %a117
|
|
br label %find.end5050
|
|
find.next5049:
|
|
%t129 = add i64 %t121, 1
|
|
store i64 %t129, ptr %a120
|
|
br label %find.cond5046
|
|
find.end5050:
|
|
%t130 = load i64, ptr %a117
|
|
%t131 = icmp sge i64 %t130, 0
|
|
br label %logic.from5051
|
|
logic.from5051:
|
|
br i1 %t131, label %logic.rhs5052, label %logic.end5053
|
|
logic.rhs5052:
|
|
%t132 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0
|
|
%t133 = load { ptr, i64, i64 }, ptr %t132
|
|
store { ptr, i64, i64 } %t133, ptr %a134
|
|
store { ptr, i64, i64 } { ptr @.str.3302, i64 4, i64 0 }, ptr %a135
|
|
%t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135)
|
|
%t137 = icmp ne i32 %t136, 0
|
|
br label %logic.rend5054
|
|
logic.rend5054:
|
|
br label %logic.end5053
|
|
logic.end5053:
|
|
%t138 = phi i1 [ false, %logic.from5051 ], [ %t137, %logic.rend5054 ]
|
|
br i1 %t138, label %then5055, label %endif5057
|
|
then5055:
|
|
%t139 = load ptr, ptr %a1
|
|
%t140 = load i64, ptr %a100
|
|
%t141 = load { ptr, i64, i64 }, ptr %a97
|
|
%t142 = extractvalue { ptr, i64, i64 } %t141, 1
|
|
%t143 = icmp uge i64 %t140, %t142
|
|
br i1 %t143, label %range5058, label %inrange5059
|
|
range5058:
|
|
call void @finch_panic_index(ptr @.str.3303, i64 2617, i64 %t140, i64 %t142)
|
|
unreachable
|
|
inrange5059:
|
|
%t144 = extractvalue { ptr, i64, i64 } %t141, 0
|
|
%t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 %t140
|
|
%t146 = load %S.ast.Node, ptr %t145
|
|
call void @finch.gen.fail(ptr %t139, %S.ast.Node %t146, { ptr, i64, i64 } { ptr @.str.3304, i64 49, i64 0 })
|
|
br label %endif5057
|
|
endif5057:
|
|
%t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a46, i32 0, i32 1
|
|
%t148 = getelementptr inbounds %S.gen.Val, ptr %a113, i32 0, i32 0
|
|
%t149 = load { ptr, i64, i64 }, ptr %t148
|
|
store { ptr, i64, i64 } %t149, ptr %a150
|
|
call void @finch_str_copy(ptr %a151, ptr %a150)
|
|
%t152 = load { ptr, i64, i64 }, ptr %a151
|
|
%t153 = load i64, ptr %t147
|
|
%t154 = add i64 %t153, 1
|
|
call void @finch_arr_reserve(ptr %a46, i64 %t154, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t155 = load ptr, ptr %a46
|
|
%t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i64 %t153
|
|
store { ptr, i64, i64 } %t152, ptr %t156
|
|
store i64 %t154, ptr %t147
|
|
%t157 = load ptr, ptr %a1
|
|
%t158 = load %S.gen.Val, ptr %a13
|
|
%t159 = load %S.gen.Val, ptr %a113
|
|
%t160 = load i64, ptr %a100
|
|
%t161 = load { ptr, i64, i64 }, ptr %a97
|
|
%t162 = extractvalue { ptr, i64, i64 } %t161, 1
|
|
%t163 = icmp uge i64 %t160, %t162
|
|
br i1 %t163, label %range5060, label %inrange5061
|
|
range5060:
|
|
call void @finch_panic_index(ptr @.str.3306, i64 2620, i64 %t160, i64 %t162)
|
|
unreachable
|
|
inrange5061:
|
|
%t164 = extractvalue { ptr, i64, i64 } %t161, 0
|
|
%t165 = getelementptr inbounds %S.ast.Node, ptr %t164, i64 %t160
|
|
%t166 = load %S.ast.Node, ptr %t165
|
|
%t167 = call %S.gen.Val @finch.gen.compare(ptr %t157, { ptr, i64, i64 } { ptr @.str.3305, i64 2, i64 0 }, %S.gen.Val %t158, %S.gen.Val %t159, %S.ast.Node %t166)
|
|
store %S.gen.Val %t167, ptr %a168
|
|
%t169 = load i64, ptr %a100
|
|
%t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a97, i32 0, i32 1
|
|
%t171 = load i64, ptr %t170
|
|
%t172 = sub i64 %t171, 1
|
|
%t173 = icmp eq i64 %t169, %t172
|
|
br i1 %t173, label %then5062, label %else5063
|
|
then5062:
|
|
%t174 = load ptr, ptr %a1
|
|
%t175 = getelementptr inbounds %S.gen.Val, ptr %a168, i32 0, i32 0
|
|
%t176 = load { ptr, i64, i64 }, ptr %t175
|
|
%t177 = load { ptr, i64, i64 }, ptr %a78
|
|
%t178 = load { ptr, i64, i64 }, ptr %a81
|
|
call void @finch.gen.condBr(ptr %t174, { ptr, i64, i64 } %t176, { ptr, i64, i64 } %t177, { ptr, i64, i64 } %t178)
|
|
br label %endif5064
|
|
else5063:
|
|
%t179 = load ptr, ptr %a1
|
|
%t180 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t179, { ptr, i64, i64 } { ptr @.str.3307, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t180, ptr %a181
|
|
%t182 = load ptr, ptr %a1
|
|
%t183 = getelementptr inbounds %S.gen.Val, ptr %a168, i32 0, i32 0
|
|
%t184 = load { ptr, i64, i64 }, ptr %t183
|
|
%t185 = load { ptr, i64, i64 }, ptr %a78
|
|
%t186 = load { ptr, i64, i64 }, ptr %a181
|
|
call void @finch.gen.condBr(ptr %t182, { ptr, i64, i64 } %t184, { ptr, i64, i64 } %t185, { ptr, i64, i64 } %t186)
|
|
%t187 = load ptr, ptr %a1
|
|
%t188 = load { ptr, i64, i64 }, ptr %a181
|
|
call void @finch.gen.label(ptr %t187, { ptr, i64, i64 } %t188)
|
|
br label %endif5064
|
|
endif5064:
|
|
br label %for.step5042
|
|
for.step5042:
|
|
%t189 = load i64, ptr %a100
|
|
%t190 = add i64 %t189, 1
|
|
store i64 %t190, ptr %a100
|
|
br label %for.cond5040
|
|
for.end5043:
|
|
br label %endif5037
|
|
endif5037:
|
|
%t191 = load ptr, ptr %a1
|
|
%t192 = load { ptr, i64, i64 }, ptr %a78
|
|
call void @finch.gen.label(ptr %t191, { ptr, i64, i64 } %t192)
|
|
%t193 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 9
|
|
%t194 = load { ptr, i64, i64 }, ptr %t193
|
|
%t195 = extractvalue { ptr, i64, i64 } %t194, 1
|
|
%t196 = icmp uge i64 1, %t195
|
|
br i1 %t196, label %range5065, label %inrange5066
|
|
range5065:
|
|
call void @finch_panic_index(ptr @.str.3308, i64 2631, i64 1, i64 %t195)
|
|
unreachable
|
|
inrange5066:
|
|
%t197 = extractvalue { ptr, i64, i64 } %t194, 0
|
|
%t198 = getelementptr inbounds %S.ast.Node, ptr %t197, i64 1
|
|
%t199 = load %S.ast.Node, ptr %t198
|
|
store %S.ast.Node %t199, ptr %a200
|
|
call void @finch.copy.S_ast_Node(ptr %a201, ptr %a200)
|
|
%t202 = load %S.ast.Node, ptr %a201
|
|
store %S.ast.Node %t202, ptr %a203
|
|
%t204 = load i1, ptr %a3
|
|
br i1 %t204, label %then5067, label %else5068
|
|
then5067:
|
|
%t205 = load ptr, ptr %a1
|
|
%t206 = load %S.ast.Node, ptr %a203
|
|
%t207 = call %S.gen.Val @finch.gen.expr(ptr %t205, %S.ast.Node %t206)
|
|
store %S.gen.Val %t207, ptr %a208
|
|
%t209 = load i64, ptr %a57
|
|
%t210 = icmp eq i64 %t209, 0
|
|
br label %logic.from5070
|
|
logic.from5070:
|
|
br i1 %t210, label %logic.end5072, label %logic.rhs5071
|
|
logic.rhs5071:
|
|
%t211 = getelementptr inbounds %S.ast.Type, ptr %a50, i32 0, i32 0
|
|
%t212 = load { ptr, i64, i64 }, ptr %t211
|
|
store { ptr, i64, i64 } %t212, ptr %a213
|
|
store { ptr, i64, i64 } { ptr @.str.3309, i64 4, i64 0 }, ptr %a214
|
|
%t215 = call i32 @finch_str_eq(ptr %a213, ptr %a214)
|
|
%t216 = icmp ne i32 %t215, 0
|
|
br label %logic.rend5073
|
|
logic.rend5073:
|
|
br label %logic.end5072
|
|
logic.end5072:
|
|
%t217 = phi i1 [ true, %logic.from5070 ], [ %t216, %logic.rend5073 ]
|
|
br i1 %t217, label %then5074, label %endif5076
|
|
then5074:
|
|
%t218 = getelementptr inbounds %S.gen.Val, ptr %a208, i32 0, i32 1
|
|
%t219 = getelementptr inbounds %S.ast.Type, ptr %t218, i32 0, i32 0
|
|
%t220 = load { ptr, i64, i64 }, ptr %t219
|
|
store { ptr, i64, i64 } %t220, ptr %a221
|
|
store { ptr, i64, i64 } { ptr @.str.3310, i64 4, i64 0 }, ptr %a222
|
|
%t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222)
|
|
%t224 = icmp ne i32 %t223, 0
|
|
br label %logic.from5077
|
|
logic.from5077:
|
|
br i1 %t224, label %logic.end5079, label %logic.rhs5078
|
|
logic.rhs5078:
|
|
%t225 = getelementptr inbounds %S.gen.Val, ptr %a208, i32 0, i32 1
|
|
%t226 = getelementptr inbounds %S.ast.Type, ptr %t225, i32 0, i32 0
|
|
%t227 = load { ptr, i64, i64 }, ptr %t226
|
|
store { ptr, i64, i64 } %t227, ptr %a228
|
|
store { ptr, i64, i64 } { ptr @.str.3311, i64 4, i64 0 }, ptr %a229
|
|
%t230 = call i32 @finch_str_eq(ptr %a228, ptr %a229)
|
|
%t231 = icmp ne i32 %t230, 0
|
|
br label %logic.rend5080
|
|
logic.rend5080:
|
|
br label %logic.end5079
|
|
logic.end5079:
|
|
%t232 = phi i1 [ true, %logic.from5077 ], [ %t231, %logic.rend5080 ]
|
|
br i1 %t232, label %then5081, label %endif5083
|
|
then5081:
|
|
%t233 = load ptr, ptr %a1
|
|
%t234 = load %S.ast.Node, ptr %a203
|
|
call void @finch.gen.fail(ptr %t233, %S.ast.Node %t234, { ptr, i64, i64 } { ptr @.str.3312, i64 52, i64 0 })
|
|
br label %endif5083
|
|
endif5083:
|
|
%t235 = getelementptr inbounds %S.gen.Val, ptr %a208, i32 0, i32 1
|
|
%t236 = load %S.ast.Type, ptr %t235
|
|
store %S.ast.Type %t236, ptr %a237
|
|
call void @finch.copy.S_ast_Type(ptr %a238, ptr %a237)
|
|
%t239 = load %S.ast.Type, ptr %a238
|
|
store %S.ast.Type %t239, ptr %a50
|
|
br label %endif5076
|
|
endif5076:
|
|
%t240 = load ptr, ptr %a1
|
|
%t241 = load %S.gen.Val, ptr %a208
|
|
%t242 = load %S.ast.Type, ptr %a50
|
|
%t243 = load %S.ast.Node, ptr %a203
|
|
%t244 = call %S.gen.Val @finch.gen.coerce(ptr %t240, %S.gen.Val %t241, %S.ast.Type %t242, %S.ast.Node %t243, { ptr, i64, i64 } { ptr @.str.3313, i64 57, i64 0 })
|
|
store %S.gen.Val %t244, ptr %a208
|
|
%t245 = load ptr, ptr %a1
|
|
%t246 = load %S.gen.Val, ptr %a208
|
|
%t247 = call { ptr, i64, i64 } @finch.gen.own(ptr %t245, %S.gen.Val %t246)
|
|
store { ptr, i64, i64 } %t247, ptr %a248
|
|
%t249 = load ptr, ptr %a1
|
|
%t250 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t249, { ptr, i64, i64 } { ptr @.str.3314, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t250, ptr %a251
|
|
%t252 = load ptr, ptr %a1
|
|
%t253 = load { ptr, i64, i64 }, ptr %a251
|
|
call void @finch.gen.br(ptr %t252, { ptr, i64, i64 } %t253)
|
|
%t254 = load ptr, ptr %a1
|
|
%t255 = load { ptr, i64, i64 }, ptr %a251
|
|
call void @finch.gen.label(ptr %t254, { ptr, i64, i64 } %t255)
|
|
%t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %a47, i32 0, i32 1
|
|
%t257 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t257, ptr %a258
|
|
call void @finch_str_copy(ptr %a259, ptr %a258)
|
|
%t260 = load { ptr, i64, i64 }, ptr %a259
|
|
%t261 = load i64, ptr %t256
|
|
%t262 = add i64 %t261, 1
|
|
call void @finch_arr_reserve(ptr %a47, i64 %t262, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t263 = load ptr, ptr %a47
|
|
%t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i64 %t261
|
|
store { ptr, i64, i64 } %t260, ptr %t264
|
|
store i64 %t262, ptr %t256
|
|
%t265 = getelementptr inbounds { ptr, i64, i64 }, ptr %a48, i32 0, i32 1
|
|
%t266 = load { ptr, i64, i64 }, ptr %a251
|
|
store { ptr, i64, i64 } %t266, ptr %a267
|
|
call void @finch_str_copy(ptr %a268, ptr %a267)
|
|
%t269 = load { ptr, i64, i64 }, ptr %a268
|
|
%t270 = load i64, ptr %t265
|
|
%t271 = add i64 %t270, 1
|
|
call void @finch_arr_reserve(ptr %a48, i64 %t271, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t272 = load ptr, ptr %a48
|
|
%t273 = getelementptr inbounds { ptr, i64, i64 }, ptr %t272, i64 %t270
|
|
store { ptr, i64, i64 } %t269, ptr %t273
|
|
store i64 %t271, ptr %t265
|
|
%t274 = load ptr, ptr %a1
|
|
%t275 = load { ptr, i64, i64 }, ptr %a43
|
|
call void @finch.gen.br(ptr %t274, { ptr, i64, i64 } %t275)
|
|
store i1 true, ptr %a45
|
|
br label %endif5069
|
|
else5068:
|
|
%t276 = getelementptr inbounds %S.ast.Node, ptr %a203, i32 0, i32 0
|
|
%t277 = load { ptr, i64, i64 }, ptr %t276
|
|
store { ptr, i64, i64 } %t277, ptr %a278
|
|
store { ptr, i64, i64 } { ptr @.str.3315, i64 5, i64 0 }, ptr %a279
|
|
%t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279)
|
|
%t281 = icmp ne i32 %t280, 0
|
|
br i1 %t281, label %then5084, label %else5085
|
|
then5084:
|
|
%t282 = load ptr, ptr %a1
|
|
%t283 = load %S.ast.Node, ptr %a203
|
|
call void @finch.gen.block(ptr %t282, %S.ast.Node %t283, i1 true)
|
|
br label %endif5086
|
|
else5085:
|
|
%t284 = load ptr, ptr %a1
|
|
%t285 = load %S.ast.Node, ptr %a203
|
|
call void @finch.gen.stmt(ptr %t284, %S.ast.Node %t285)
|
|
br label %endif5086
|
|
endif5086:
|
|
%t286 = load ptr, ptr %a1
|
|
%t287 = icmp eq ptr %t286, null
|
|
br i1 %t287, label %panic5087, label %ok5088
|
|
panic5087:
|
|
call void @finch_panic(ptr @.str.3316, i64 2655, ptr @.str.3317)
|
|
unreachable
|
|
ok5088:
|
|
%t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 9
|
|
%t289 = load i1, ptr %t288
|
|
%t290 = xor i1 %t289, true
|
|
br i1 %t290, label %then5089, label %endif5091
|
|
then5089:
|
|
store i1 true, ptr %a45
|
|
br label %endif5091
|
|
endif5091:
|
|
%t291 = load ptr, ptr %a1
|
|
%t292 = load { ptr, i64, i64 }, ptr %a43
|
|
call void @finch.gen.br(ptr %t291, { ptr, i64, i64 } %t292)
|
|
br label %endif5069
|
|
endif5069:
|
|
%t293 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 6
|
|
%t294 = load i1, ptr %t293
|
|
%t295 = xor i1 %t294, true
|
|
br i1 %t295, label %then5092, label %endif5094
|
|
then5092:
|
|
%t296 = load ptr, ptr %a1
|
|
%t297 = load { ptr, i64, i64 }, ptr %a81
|
|
call void @finch.gen.label(ptr %t296, { ptr, i64, i64 } %t297)
|
|
br label %endif5094
|
|
endif5094:
|
|
br label %for.step5028
|
|
for.step5028:
|
|
%t298 = load i64, ptr %a57
|
|
%t299 = add i64 %t298, 1
|
|
store i64 %t299, ptr %a57
|
|
br label %for.cond5026
|
|
for.end5029:
|
|
%t300 = load i1, ptr %a44
|
|
%t301 = xor i1 %t300, true
|
|
br i1 %t301, label %then5095, label %endif5097
|
|
then5095:
|
|
%t302 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0
|
|
%t303 = load { ptr, i64, i64 }, ptr %t302
|
|
store { ptr, i64, i64 } %t303, ptr %a304
|
|
store { ptr, i64, i64 } { ptr @.str.3318, i64 4, i64 0 }, ptr %a305
|
|
%t306 = call i32 @finch_str_eq(ptr %a304, ptr %a305)
|
|
%t307 = icmp ne i32 %t306, 0
|
|
br i1 %t307, label %then5098, label %else5099
|
|
then5098:
|
|
%t308 = load ptr, ptr %a1
|
|
%t309 = icmp eq ptr %t308, null
|
|
br i1 %t309, label %panic5101, label %ok5102
|
|
panic5101:
|
|
call void @finch_panic(ptr @.str.3319, i64 2666, ptr @.str.3320)
|
|
unreachable
|
|
ok5102:
|
|
%t310 = getelementptr inbounds %S.gen.Gen, ptr %t308, i32 0, i32 20
|
|
%t311 = load ptr, ptr %a1
|
|
%t312 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3
|
|
%t313 = load { ptr, i64, i64 }, ptr %t312
|
|
%t314 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2
|
|
%t315 = load { ptr, i64, i64 }, ptr %t314
|
|
%t316 = call i64 @finch.gen.findEnum(ptr %t311, { ptr, i64, i64 } %t313, { ptr, i64, i64 } %t315)
|
|
%t317 = load { ptr, i64, i64 }, ptr %t310
|
|
%t318 = extractvalue { ptr, i64, i64 } %t317, 1
|
|
%t319 = icmp uge i64 %t316, %t318
|
|
br i1 %t319, label %range5103, label %inrange5104
|
|
range5103:
|
|
call void @finch_panic_index(ptr @.str.3321, i64 2666, i64 %t316, i64 %t318)
|
|
unreachable
|
|
inrange5104:
|
|
%t320 = extractvalue { ptr, i64, i64 } %t317, 0
|
|
%t321 = getelementptr inbounds %S.gen.EnumDef, ptr %t320, i64 %t316
|
|
%t322 = load %S.gen.EnumDef, ptr %t321
|
|
store %S.gen.EnumDef %t322, ptr %a323
|
|
call void @finch.copy.S_gen_EnumDef(ptr %a324, ptr %a323)
|
|
%t325 = load %S.gen.EnumDef, ptr %a324
|
|
store %S.gen.EnumDef %t325, ptr %a326
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a327
|
|
%t328 = getelementptr inbounds %S.gen.EnumDef, ptr %a326, i32 0, i32 2
|
|
%t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i32 0, i32 1
|
|
%t330 = load i64, ptr %t329
|
|
store i64 0, ptr %a331
|
|
br label %for.cond5105
|
|
for.cond5105:
|
|
%t332 = load i64, ptr %a331
|
|
%t333 = icmp slt i64 %t332, %t330
|
|
br i1 %t333, label %for.body5106, label %for.end5108
|
|
for.body5106:
|
|
%t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %a46, i32 0, i32 1
|
|
%t335 = getelementptr inbounds %S.gen.EnumDef, ptr %a326, i32 0, i32 3
|
|
%t336 = load i64, ptr %a331
|
|
%t337 = load { ptr, i64, i64 }, ptr %t335
|
|
%t338 = extractvalue { ptr, i64, i64 } %t337, 1
|
|
%t339 = icmp uge i64 %t336, %t338
|
|
br i1 %t339, label %range5109, label %inrange5110
|
|
range5109:
|
|
call void @finch_panic_index(ptr @.str.3322, i64 2669, i64 %t336, i64 %t338)
|
|
unreachable
|
|
inrange5110:
|
|
%t340 = extractvalue { ptr, i64, i64 } %t337, 0
|
|
%t341 = getelementptr inbounds i64, ptr %t340, i64 %t336
|
|
%t342 = load i64, ptr %t341
|
|
call void @finch_str_from_int(ptr %a343, i64 %t342)
|
|
%t344 = load { ptr, i64, i64 }, ptr %a343
|
|
store i64 -1, ptr %a345
|
|
%t346 = load i64, ptr %t334
|
|
%t347 = load ptr, ptr %a46
|
|
store i64 0, ptr %a348
|
|
br label %find.cond5111
|
|
find.cond5111:
|
|
%t349 = load i64, ptr %a348
|
|
%t350 = icmp slt i64 %t349, %t346
|
|
br i1 %t350, label %find.body5112, label %find.end5115
|
|
find.body5112:
|
|
%t351 = getelementptr inbounds { ptr, i64, i64 }, ptr %t347, i64 %t349
|
|
%t352 = load { ptr, i64, i64 }, ptr %t351
|
|
store { ptr, i64, i64 } %t352, ptr %a353
|
|
store { ptr, i64, i64 } %t344, ptr %a354
|
|
%t355 = call i32 @finch_str_eq(ptr %a353, ptr %a354)
|
|
%t356 = icmp ne i32 %t355, 0
|
|
br i1 %t356, label %find.hit5113, label %find.next5114
|
|
find.hit5113:
|
|
store i64 %t349, ptr %a345
|
|
br label %find.end5115
|
|
find.next5114:
|
|
%t357 = add i64 %t349, 1
|
|
store i64 %t357, ptr %a348
|
|
br label %find.cond5111
|
|
find.end5115:
|
|
%t358 = load i64, ptr %a345
|
|
%t359 = icmp sge i64 %t358, 0
|
|
%t360 = xor i1 %t359, true
|
|
br i1 %t360, label %then5116, label %endif5118
|
|
then5116:
|
|
%t361 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1
|
|
%t362 = getelementptr inbounds %S.gen.EnumDef, ptr %a326, i32 0, i32 2
|
|
%t363 = load i64, ptr %a331
|
|
%t364 = load { ptr, i64, i64 }, ptr %t362
|
|
%t365 = extractvalue { ptr, i64, i64 } %t364, 1
|
|
%t366 = icmp uge i64 %t363, %t365
|
|
br i1 %t366, label %range5119, label %inrange5120
|
|
range5119:
|
|
call void @finch_panic_index(ptr @.str.3323, i64 2670, i64 %t363, i64 %t365)
|
|
unreachable
|
|
inrange5120:
|
|
%t367 = extractvalue { ptr, i64, i64 } %t364, 0
|
|
%t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t363
|
|
%t369 = load { ptr, i64, i64 }, ptr %t368
|
|
store { ptr, i64, i64 } %t369, ptr %a370
|
|
call void @finch_str_copy(ptr %a371, ptr %a370)
|
|
%t372 = load { ptr, i64, i64 }, ptr %a371
|
|
%t373 = load i64, ptr %t361
|
|
%t374 = add i64 %t373, 1
|
|
call void @finch_arr_reserve(ptr %a327, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t375 = load ptr, ptr %a327
|
|
%t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373
|
|
store { ptr, i64, i64 } %t372, ptr %t376
|
|
store i64 %t374, ptr %t361
|
|
br label %endif5118
|
|
endif5118:
|
|
br label %for.step5107
|
|
for.step5107:
|
|
%t377 = load i64, ptr %a331
|
|
%t378 = add i64 %t377, 1
|
|
store i64 %t378, ptr %a331
|
|
br label %for.cond5105
|
|
for.end5108:
|
|
%t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1
|
|
%t380 = load i64, ptr %t379
|
|
%t381 = icmp sgt i64 %t380, 0
|
|
br i1 %t381, label %then5121, label %endif5123
|
|
then5121:
|
|
%t382 = load ptr, ptr %a1
|
|
%t383 = load %S.ast.Node, ptr %a2
|
|
%t384 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.3325, i64 2, i64 0 }, ptr %a385
|
|
call void @finch_str_join(ptr %a386, ptr %a327, ptr %a385)
|
|
%t387 = load { ptr, i64, i64 }, ptr %a386
|
|
store { ptr, i64, i64 } { ptr @.str.3324, i64 26, i64 0 }, ptr %a389
|
|
store { ptr, i64, i64 } %t387, ptr %a390
|
|
call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390)
|
|
%t391 = load { ptr, i64, i64 }, ptr %a388
|
|
store { ptr, i64, i64 } %t391, ptr %a393
|
|
store { ptr, i64, i64 } { ptr @.str.3326, i64 29, i64 0 }, ptr %a394
|
|
call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394)
|
|
%t395 = load { ptr, i64, i64 }, ptr %a392
|
|
call void @finch.gen.fail(ptr %t382, %S.ast.Node %t383, { ptr, i64, i64 } %t395)
|
|
br label %endif5123
|
|
endif5123:
|
|
br label %endif5100
|
|
else5099:
|
|
%t396 = load ptr, ptr %a1
|
|
%t397 = load %S.ast.Node, ptr %a2
|
|
%t398 = load %S.ast.Type, ptr %a19
|
|
%t399 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t398)
|
|
store { ptr, i64, i64 } { ptr @.str.3327, i64 11, i64 0 }, ptr %a401
|
|
store { ptr, i64, i64 } %t399, ptr %a402
|
|
call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402)
|
|
%t403 = load { ptr, i64, i64 }, ptr %a400
|
|
store { ptr, i64, i64 } %t403, ptr %a405
|
|
store { ptr, i64, i64 } { ptr @.str.3328, i64 54, i64 0 }, ptr %a406
|
|
call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406)
|
|
%t407 = load { ptr, i64, i64 }, ptr %a404
|
|
call void @finch.gen.fail(ptr %t396, %S.ast.Node %t397, { ptr, i64, i64 } %t407)
|
|
br label %endif5100
|
|
endif5100:
|
|
%t408 = load ptr, ptr %a1
|
|
%t409 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.panicIf(ptr %t408, { ptr, i64, i64 } { ptr @.str.3329, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3330, i64 35, i64 0 }, %S.ast.Node %t409)
|
|
%t410 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t410, { ptr, i64, i64 } { ptr @.str.3331, i64 11, i64 0 })
|
|
%t411 = load ptr, ptr %a1
|
|
%t412 = icmp eq ptr %t411, null
|
|
br i1 %t412, label %panic5124, label %ok5125
|
|
panic5124:
|
|
call void @finch_panic(ptr @.str.3332, i64 2682, ptr @.str.3333)
|
|
unreachable
|
|
ok5125:
|
|
%t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 9
|
|
store i1 true, ptr %t413
|
|
br label %endif5097
|
|
endif5097:
|
|
%t414 = load ptr, ptr %a1
|
|
%t415 = load { ptr, i64, i64 }, ptr %a43
|
|
call void @finch.gen.label(ptr %t414, { ptr, i64, i64 } %t415)
|
|
%t416 = load i1, ptr %a45
|
|
%t417 = xor i1 %t416, true
|
|
br i1 %t417, label %then5126, label %endif5128
|
|
then5126:
|
|
%t418 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t418, { ptr, i64, i64 } { ptr @.str.3334, i64 11, i64 0 })
|
|
%t419 = load ptr, ptr %a1
|
|
%t420 = icmp eq ptr %t419, null
|
|
br i1 %t420, label %panic5129, label %ok5130
|
|
panic5129:
|
|
call void @finch_panic(ptr @.str.3335, i64 2687, ptr @.str.3336)
|
|
unreachable
|
|
ok5130:
|
|
%t421 = getelementptr inbounds %S.gen.Gen, ptr %t419, i32 0, i32 9
|
|
store i1 true, ptr %t421
|
|
%t422 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3337, i64 4, i64 0 })
|
|
%t423 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t422, 1
|
|
ret %S.gen.Val %t423
|
|
endif5128:
|
|
%t424 = load i1, ptr %a3
|
|
br i1 %t424, label %then5131, label %endif5133
|
|
then5131:
|
|
%t425 = load ptr, ptr %a1
|
|
%t426 = load ptr, ptr %a1
|
|
%t427 = load %S.ast.Type, ptr %a50
|
|
%t428 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t426, %S.ast.Type %t427)
|
|
store { ptr, i64, i64 } { ptr @.str.3338, i64 4, i64 0 }, ptr %a430
|
|
store { ptr, i64, i64 } %t428, ptr %a431
|
|
call void @finch_str_concat(ptr %a429, ptr %a430, ptr %a431)
|
|
%t432 = load { ptr, i64, i64 }, ptr %a429
|
|
store { ptr, i64, i64 } %t432, ptr %a434
|
|
store { ptr, i64, i64 } { ptr @.str.3339, i64 1, i64 0 }, ptr %a435
|
|
call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435)
|
|
%t436 = load { ptr, i64, i64 }, ptr %a433
|
|
%t437 = load { ptr, i64, i64 }, ptr %a47
|
|
%t438 = load { ptr, i64, i64 }, ptr %a48
|
|
%t439 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t437, { ptr, i64, i64 } %t438)
|
|
store { ptr, i64, i64 } %t436, ptr %a441
|
|
store { ptr, i64, i64 } %t439, ptr %a442
|
|
call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442)
|
|
%t443 = load { ptr, i64, i64 }, ptr %a440
|
|
%t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t425, { ptr, i64, i64 } %t443)
|
|
%t445 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t444, 0
|
|
%t446 = load %S.ast.Type, ptr %a50
|
|
store %S.ast.Type %t446, ptr %a447
|
|
call void @finch.copy.S_ast_Type(ptr %a448, ptr %a447)
|
|
%t449 = load %S.ast.Type, ptr %a448
|
|
%t450 = insertvalue %S.gen.Val %t445, %S.ast.Type %t449, 1
|
|
%t451 = load ptr, ptr %a1
|
|
%t452 = load %S.ast.Type, ptr %a50
|
|
%t453 = call i1 @finch.gen.owning(ptr %t451, %S.ast.Type %t452)
|
|
%t454 = insertvalue %S.gen.Val %t450, i1 %t453, 2
|
|
ret %S.gen.Val %t454
|
|
endif5133:
|
|
%t455 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3340, i64 4, i64 0 })
|
|
%t456 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t455, 1
|
|
ret %S.gen.Val %t456
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca i64, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a3
|
|
%t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t5 = load i64, ptr %t4
|
|
store i64 0, ptr %a6
|
|
br label %for.cond5134
|
|
for.cond5134:
|
|
%t7 = load i64, ptr %a6
|
|
%t8 = icmp slt i64 %t7, %t5
|
|
br i1 %t8, label %for.body5135, label %for.end5137
|
|
for.body5135:
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t10 = load i64, ptr %a6
|
|
%t11 = load { ptr, i64, i64 }, ptr %a1
|
|
%t12 = extractvalue { ptr, i64, i64 } %t11, 1
|
|
%t13 = icmp uge i64 %t10, %t12
|
|
br i1 %t13, label %range5138, label %inrange5139
|
|
range5138:
|
|
call void @finch_panic_index(ptr @.str.3342, i64 2699, i64 %t10, i64 %t12)
|
|
unreachable
|
|
inrange5139:
|
|
%t14 = extractvalue { ptr, i64, i64 } %t11, 0
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i64 %t10
|
|
%t16 = load { ptr, i64, i64 }, ptr %t15
|
|
store { ptr, i64, i64 } { ptr @.str.3341, i64 2, i64 0 }, ptr %a18
|
|
store { ptr, i64, i64 } %t16, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
store { ptr, i64, i64 } %t20, ptr %a22
|
|
store { ptr, i64, i64 } { ptr @.str.3343, i64 3, i64 0 }, ptr %a23
|
|
call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a21
|
|
%t25 = load i64, ptr %a6
|
|
%t26 = load { ptr, i64, i64 }, ptr %a2
|
|
%t27 = extractvalue { ptr, i64, i64 } %t26, 1
|
|
%t28 = icmp uge i64 %t25, %t27
|
|
br i1 %t28, label %range5140, label %inrange5141
|
|
range5140:
|
|
call void @finch_panic_index(ptr @.str.3344, i64 2699, i64 %t25, i64 %t27)
|
|
unreachable
|
|
inrange5141:
|
|
%t29 = extractvalue { ptr, i64, i64 } %t26, 0
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25
|
|
%t31 = load { ptr, i64, i64 }, ptr %t30
|
|
store { ptr, i64, i64 } %t24, ptr %a33
|
|
store { ptr, i64, i64 } %t31, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t35, ptr %a37
|
|
store { ptr, i64, i64 } { ptr @.str.3345, i64 2, i64 0 }, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
%t40 = load i64, ptr %t9
|
|
%t41 = add i64 %t40, 1
|
|
call void @finch_arr_reserve(ptr %a3, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t42 = load ptr, ptr %a3
|
|
%t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i64 %t40
|
|
store { ptr, i64, i64 } %t39, ptr %t43
|
|
store i64 %t41, ptr %t9
|
|
br label %for.step5136
|
|
for.step5136:
|
|
%t44 = load i64, ptr %a6
|
|
%t45 = add i64 %t44, 1
|
|
store i64 %t45, ptr %a6
|
|
br label %for.cond5134
|
|
for.end5137:
|
|
%t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.3346, i64 2, i64 0 }, ptr %a47
|
|
call void @finch_str_join(ptr %a48, ptr %a3, ptr %a47)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a48
|
|
ret { ptr, i64, i64 } %t49
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Fallible(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Fallible, ptr %src
|
|
store %S.gen.Fallible %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 0
|
|
call void @finch.copy.S_gen_Val(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.gen.Fallible, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.gen.Fallible, ptr %src, i32 0, i32 2
|
|
call void @finch_str_copy(ptr %t6, ptr %t7)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca %S.gen.Val, align 16
|
|
%a58 = alloca %S.gen.Val, align 16
|
|
%a59 = alloca %S.gen.Val, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca %S.gen.Fallible, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca %S.gen.Fallible, align 16
|
|
%a108 = alloca %S.gen.Fallible, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.3347, i64 4, i64 0 }, ptr %a6
|
|
%t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6)
|
|
%t8 = icmp eq i32 %t7, 0
|
|
br label %logic.from5142
|
|
logic.from5142:
|
|
br i1 %t8, label %logic.rhs5143, label %logic.end5144
|
|
logic.rhs5143:
|
|
%t9 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t10 = load { ptr, i64, i64 }, ptr %t9
|
|
store { ptr, i64, i64 } %t10, ptr %a11
|
|
store { ptr, i64, i64 } { ptr @.str.3348, i64 6, i64 0 }, ptr %a12
|
|
%t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12)
|
|
%t14 = icmp eq i32 %t13, 0
|
|
br label %logic.rend5145
|
|
logic.rend5145:
|
|
br label %logic.end5144
|
|
logic.end5144:
|
|
%t15 = phi i1 [ false, %logic.from5142 ], [ %t14, %logic.rend5145 ]
|
|
br i1 %t15, label %then5146, label %endif5148
|
|
then5146:
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } { ptr @.str.3349, i64 80, i64 0 })
|
|
br label %endif5148
|
|
endif5148:
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = icmp eq ptr %t18, null
|
|
br i1 %t19, label %panic5149, label %ok5150
|
|
panic5149:
|
|
call void @finch_panic(ptr @.str.3350, i64 2717, ptr @.str.3351)
|
|
unreachable
|
|
ok5150:
|
|
%t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 37
|
|
%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 %panic5151, label %ok5152
|
|
panic5151:
|
|
call void @finch_panic(ptr @.str.3352, i64 2718, ptr @.str.3353)
|
|
unreachable
|
|
ok5152:
|
|
%t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 38
|
|
%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 %panic5153, label %ok5154
|
|
panic5153:
|
|
call void @finch_panic(ptr @.str.3354, i64 2719, ptr @.str.3355)
|
|
unreachable
|
|
ok5154:
|
|
%t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 39
|
|
%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 %panic5155, label %ok5156
|
|
panic5155:
|
|
call void @finch_panic(ptr @.str.3356, i64 2720, ptr @.str.3357)
|
|
unreachable
|
|
ok5156:
|
|
%t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 37
|
|
store { ptr, i64, i64 } %t43, ptr %t46
|
|
%t47 = load ptr, ptr %a1
|
|
%t48 = icmp eq ptr %t47, null
|
|
br i1 %t48, label %panic5157, label %ok5158
|
|
panic5157:
|
|
call void @finch_panic(ptr @.str.3359, i64 2721, ptr @.str.3360)
|
|
unreachable
|
|
ok5158:
|
|
%t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 38
|
|
store { ptr, i64, i64 } { ptr @.str.3358, i64 0, i64 0 }, ptr %t49
|
|
%t50 = load ptr, ptr %a1
|
|
%t51 = icmp eq ptr %t50, null
|
|
br i1 %t51, label %panic5159, label %ok5160
|
|
panic5159:
|
|
call void @finch_panic(ptr @.str.3362, i64 2722, ptr @.str.3363)
|
|
unreachable
|
|
ok5160:
|
|
%t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 39
|
|
store { ptr, i64, i64 } { ptr @.str.3361, i64 0, i64 0 }, ptr %t52
|
|
%t53 = load ptr, ptr %a1
|
|
%t54 = load %S.ast.Node, ptr %a2
|
|
%t55 = call %S.gen.Val @finch.gen.expr(ptr %t53, %S.ast.Node %t54)
|
|
store %S.gen.Val %t55, ptr %a56
|
|
%t57 = load %S.gen.Val, ptr %a56
|
|
store %S.gen.Val %t57, ptr %a58
|
|
call void @finch.copy.S_gen_Val(ptr %a59, ptr %a58)
|
|
%t60 = load %S.gen.Val, ptr %a59
|
|
%t61 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t60, 0
|
|
%t62 = load ptr, ptr %a1
|
|
%t63 = icmp eq ptr %t62, null
|
|
br i1 %t63, label %panic5161, label %ok5162
|
|
panic5161:
|
|
call void @finch_panic(ptr @.str.3364, i64 2724, ptr @.str.3365)
|
|
unreachable
|
|
ok5162:
|
|
%t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 38
|
|
%t65 = load { ptr, i64, i64 }, ptr %t64
|
|
store { ptr, i64, i64 } %t65, ptr %a66
|
|
call void @finch_str_copy(ptr %a67, ptr %a66)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a67
|
|
%t69 = insertvalue %S.gen.Fallible %t61, { ptr, i64, i64 } %t68, 1
|
|
%t70 = load ptr, ptr %a1
|
|
%t71 = icmp eq ptr %t70, null
|
|
br i1 %t71, label %panic5163, label %ok5164
|
|
panic5163:
|
|
call void @finch_panic(ptr @.str.3366, i64 2724, ptr @.str.3367)
|
|
unreachable
|
|
ok5164:
|
|
%t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 39
|
|
%t73 = load { ptr, i64, i64 }, ptr %t72
|
|
store { ptr, i64, i64 } %t73, ptr %a74
|
|
call void @finch_str_copy(ptr %a75, ptr %a74)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a75
|
|
%t77 = insertvalue %S.gen.Fallible %t69, { ptr, i64, i64 } %t76, 2
|
|
store %S.gen.Fallible %t77, ptr %a78
|
|
%t79 = load { ptr, i64, i64 }, ptr %a25
|
|
%t80 = load ptr, ptr %a1
|
|
%t81 = icmp eq ptr %t80, null
|
|
br i1 %t81, label %panic5165, label %ok5166
|
|
panic5165:
|
|
call void @finch_panic(ptr @.str.3368, i64 2725, ptr @.str.3369)
|
|
unreachable
|
|
ok5166:
|
|
%t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 37
|
|
store { ptr, i64, i64 } %t79, ptr %a83
|
|
call void @finch_str_copy(ptr %a84, ptr %a83)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a84
|
|
store { ptr, i64, i64 } %t85, ptr %t82
|
|
%t86 = load { ptr, i64, i64 }, ptr %a33
|
|
%t87 = load ptr, ptr %a1
|
|
%t88 = icmp eq ptr %t87, null
|
|
br i1 %t88, label %panic5167, label %ok5168
|
|
panic5167:
|
|
call void @finch_panic(ptr @.str.3370, i64 2726, ptr @.str.3371)
|
|
unreachable
|
|
ok5168:
|
|
%t89 = getelementptr inbounds %S.gen.Gen, ptr %t87, i32 0, i32 38
|
|
store { ptr, i64, i64 } %t86, ptr %a90
|
|
call void @finch_str_copy(ptr %a91, ptr %a90)
|
|
%t92 = load { ptr, i64, i64 }, ptr %a91
|
|
store { ptr, i64, i64 } %t92, ptr %t89
|
|
%t93 = load { ptr, i64, i64 }, ptr %a41
|
|
%t94 = load ptr, ptr %a1
|
|
%t95 = icmp eq ptr %t94, null
|
|
br i1 %t95, label %panic5169, label %ok5170
|
|
panic5169:
|
|
call void @finch_panic(ptr @.str.3372, i64 2727, ptr @.str.3373)
|
|
unreachable
|
|
ok5170:
|
|
%t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 39
|
|
store { ptr, i64, i64 } %t93, ptr %a97
|
|
call void @finch_str_copy(ptr %a98, ptr %a97)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a98
|
|
store { ptr, i64, i64 } %t99, ptr %t96
|
|
%t100 = getelementptr inbounds %S.gen.Fallible, ptr %a78, i32 0, i32 1
|
|
%t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i32 0, i32 1
|
|
%t102 = load i64, ptr %t101
|
|
%t103 = icmp eq i64 %t102, 0
|
|
br i1 %t103, label %then5171, label %endif5173
|
|
then5171:
|
|
%t104 = load ptr, ptr %a1
|
|
%t105 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } { ptr @.str.3374, i64 50, i64 0 })
|
|
br label %endif5173
|
|
endif5173:
|
|
%t106 = load %S.gen.Fallible, ptr %a78
|
|
store %S.gen.Fallible %t106, ptr %a107
|
|
call void @finch.copy.S_gen_Fallible(ptr %a108, ptr %a107)
|
|
%t109 = load %S.gen.Fallible, ptr %a108
|
|
ret %S.gen.Fallible %t109
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca %S.gen.Fallible, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca %S.gen.Val, align 16
|
|
%a138 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic5174, label %ok5175
|
|
panic5174:
|
|
call void @finch_panic(ptr @.str.3375, i64 2736, ptr @.str.3376)
|
|
unreachable
|
|
ok5175:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 42
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = icmp sgt i64 %t6, 0
|
|
br i1 %t7, label %then5176, label %endif5178
|
|
then5176:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3377, i64 30, i64 0 })
|
|
br label %endif5178
|
|
endif5178:
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = icmp eq ptr %t10, null
|
|
br i1 %t11, label %panic5179, label %ok5180
|
|
panic5179:
|
|
call void @finch_panic(ptr @.str.3378, i64 2739, ptr @.str.3379)
|
|
unreachable
|
|
ok5180:
|
|
%t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 12
|
|
%t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9
|
|
%t14 = load i1, ptr %t13
|
|
%t15 = xor i1 %t14, true
|
|
br i1 %t15, label %then5181, label %endif5183
|
|
then5181:
|
|
store { ptr, i64, i64 } { ptr @.str.3380, i64 1, i64 0 }, ptr %a16
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = icmp eq ptr %t17, null
|
|
br i1 %t18, label %panic5184, label %ok5185
|
|
panic5184:
|
|
call void @finch_panic(ptr @.str.3381, i64 2741, ptr @.str.3382)
|
|
unreachable
|
|
ok5185:
|
|
%t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 12
|
|
%t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12
|
|
%t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.3383, i64 4, i64 0 }, ptr %a24
|
|
%t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24)
|
|
%t26 = icmp eq i32 %t25, 0
|
|
br i1 %t26, label %then5186, label %endif5188
|
|
then5186:
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = icmp eq ptr %t27, null
|
|
br i1 %t28, label %panic5189, label %ok5190
|
|
panic5189:
|
|
call void @finch_panic(ptr @.str.3384, i64 2742, ptr @.str.3385)
|
|
unreachable
|
|
ok5190:
|
|
%t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 12
|
|
%t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12
|
|
%t31 = load %S.ast.Type, ptr %t30
|
|
%t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31)
|
|
store { ptr, i64, i64 } %t32, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.3386, i64 1, i64 0 }, ptr %a35
|
|
call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35)
|
|
%t36 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } %t36, ptr %a16
|
|
br label %endif5188
|
|
endif5188:
|
|
%t37 = load ptr, ptr %a1
|
|
%t38 = load %S.ast.Node, ptr %a2
|
|
%t39 = load ptr, ptr %a1
|
|
%t40 = icmp eq ptr %t39, null
|
|
br i1 %t40, label %panic5191, label %ok5192
|
|
panic5191:
|
|
call void @finch_panic(ptr @.str.3388, i64 2744, ptr @.str.3389)
|
|
unreachable
|
|
ok5192:
|
|
%t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 12
|
|
%t42 = getelementptr inbounds %S.gen.FnSig, ptr %t41, i32 0, i32 1
|
|
%t43 = load { ptr, i64, i64 }, ptr %t42
|
|
store { ptr, i64, i64 } { ptr @.str.3387, i64 29, i64 0 }, ptr %a45
|
|
store { ptr, i64, i64 } %t43, ptr %a46
|
|
call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46)
|
|
%t47 = load { ptr, i64, i64 }, ptr %a44
|
|
store { ptr, i64, i64 } %t47, ptr %a49
|
|
store { ptr, i64, i64 } { ptr @.str.3390, i64 31, i64 0 }, ptr %a50
|
|
call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a48
|
|
%t52 = load { ptr, i64, i64 }, ptr %a16
|
|
store { ptr, i64, i64 } %t51, ptr %a54
|
|
store { ptr, i64, i64 } %t52, ptr %a55
|
|
call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t56, ptr %a58
|
|
store { ptr, i64, i64 } { ptr @.str.3391, i64 55, i64 0 }, ptr %a59
|
|
call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59)
|
|
%t60 = load { ptr, i64, i64 }, ptr %a57
|
|
call void @finch.gen.fail(ptr %t37, %S.ast.Node %t38, { ptr, i64, i64 } %t60)
|
|
br label %endif5183
|
|
endif5183:
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t63 = load { ptr, i64, i64 }, ptr %t62
|
|
%t64 = extractvalue { ptr, i64, i64 } %t63, 1
|
|
%t65 = icmp uge i64 0, %t64
|
|
br i1 %t65, label %range5193, label %inrange5194
|
|
range5193:
|
|
call void @finch_panic_index(ptr @.str.3392, i64 2746, i64 0, i64 %t64)
|
|
unreachable
|
|
inrange5194:
|
|
%t66 = extractvalue { ptr, i64, i64 } %t63, 0
|
|
%t67 = getelementptr inbounds %S.ast.Node, ptr %t66, i64 0
|
|
%t68 = load %S.ast.Node, ptr %t67
|
|
%t69 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t61, %S.ast.Node %t68)
|
|
store %S.gen.Fallible %t69, ptr %a70
|
|
%t71 = load ptr, ptr %a1
|
|
%t72 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t71, { ptr, i64, i64 } { ptr @.str.3393, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t72, ptr %a73
|
|
%t74 = load ptr, ptr %a1
|
|
%t75 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t74, { ptr, i64, i64 } { ptr @.str.3394, i64 6, i64 0 })
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
%t77 = load ptr, ptr %a1
|
|
%t78 = getelementptr inbounds %S.gen.Fallible, ptr %a70, i32 0, i32 1
|
|
%t79 = load { ptr, i64, i64 }, ptr %t78
|
|
%t80 = load { ptr, i64, i64 }, ptr %a73
|
|
%t81 = load { ptr, i64, i64 }, ptr %a76
|
|
call void @finch.gen.condBr(ptr %t77, { ptr, i64, i64 } %t79, { ptr, i64, i64 } %t80, { ptr, i64, i64 } %t81)
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = load { ptr, i64, i64 }, ptr %a73
|
|
call void @finch.gen.label(ptr %t82, { ptr, i64, i64 } %t83)
|
|
%t84 = load ptr, ptr %a1
|
|
call void @finch.gen.unwind(ptr %t84, i64 0)
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = load ptr, ptr %a1
|
|
%t87 = load ptr, ptr %a1
|
|
%t88 = icmp eq ptr %t87, null
|
|
br i1 %t88, label %panic5195, label %ok5196
|
|
panic5195:
|
|
call void @finch_panic(ptr @.str.3396, i64 2752, ptr @.str.3397)
|
|
unreachable
|
|
ok5196:
|
|
%t89 = getelementptr inbounds %S.gen.Gen, ptr %t87, i32 0, i32 12
|
|
%t90 = load %S.gen.FnSig, ptr %t89
|
|
%t91 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t86, %S.gen.FnSig %t90)
|
|
store { ptr, i64, i64 } { ptr @.str.3395, i64 4, i64 0 }, ptr %a93
|
|
store { ptr, i64, i64 } %t91, ptr %a94
|
|
call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94)
|
|
%t95 = load { ptr, i64, i64 }, ptr %a92
|
|
store { ptr, i64, i64 } %t95, ptr %a97
|
|
store { ptr, i64, i64 } { ptr @.str.3398, i64 1, i64 0 }, ptr %a98
|
|
call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a96
|
|
%t100 = load ptr, ptr %a1
|
|
%t101 = load ptr, ptr %a1
|
|
%t102 = load ptr, ptr %a1
|
|
%t103 = icmp eq ptr %t102, null
|
|
br i1 %t103, label %panic5197, label %ok5198
|
|
panic5197:
|
|
call void @finch_panic(ptr @.str.3400, i64 2752, ptr @.str.3401)
|
|
unreachable
|
|
ok5198:
|
|
%t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 12
|
|
%t105 = load %S.gen.FnSig, ptr %t104
|
|
%t106 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t101, %S.gen.FnSig %t105)
|
|
store { ptr, i64, i64 } { ptr @.str.3399, i64 12, i64 0 }, ptr %a108
|
|
store { ptr, i64, i64 } %t106, ptr %a109
|
|
call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109)
|
|
%t110 = load { ptr, i64, i64 }, ptr %a107
|
|
store { ptr, i64, i64 } %t110, ptr %a112
|
|
store { ptr, i64, i64 } { ptr @.str.3402, i64 36, i64 0 }, ptr %a113
|
|
call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113)
|
|
%t114 = load { ptr, i64, i64 }, ptr %a111
|
|
%t115 = getelementptr inbounds %S.gen.Fallible, ptr %a70, i32 0, i32 2
|
|
%t116 = load { ptr, i64, i64 }, ptr %t115
|
|
store { ptr, i64, i64 } %t114, ptr %a118
|
|
store { ptr, i64, i64 } %t116, ptr %a119
|
|
call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119)
|
|
%t120 = load { ptr, i64, i64 }, ptr %a117
|
|
store { ptr, i64, i64 } %t120, ptr %a122
|
|
store { ptr, i64, i64 } { ptr @.str.3403, i64 3, i64 0 }, ptr %a123
|
|
call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123)
|
|
%t124 = load { ptr, i64, i64 }, ptr %a121
|
|
%t125 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t124)
|
|
store { ptr, i64, i64 } %t99, ptr %a127
|
|
store { ptr, i64, i64 } %t125, ptr %a128
|
|
call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128)
|
|
%t129 = load { ptr, i64, i64 }, ptr %a126
|
|
call void @finch.gen.emit(ptr %t85, { ptr, i64, i64 } %t129)
|
|
%t130 = load ptr, ptr %a1
|
|
%t131 = icmp eq ptr %t130, null
|
|
br i1 %t131, label %panic5199, label %ok5200
|
|
panic5199:
|
|
call void @finch_panic(ptr @.str.3404, i64 2753, ptr @.str.3405)
|
|
unreachable
|
|
ok5200:
|
|
%t132 = getelementptr inbounds %S.gen.Gen, ptr %t130, i32 0, i32 9
|
|
store i1 true, ptr %t132
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = load { ptr, i64, i64 }, ptr %a76
|
|
call void @finch.gen.label(ptr %t133, { ptr, i64, i64 } %t134)
|
|
%t135 = getelementptr inbounds %S.gen.Fallible, ptr %a70, i32 0, i32 0
|
|
%t136 = load %S.gen.Val, ptr %t135
|
|
store %S.gen.Val %t136, ptr %a137
|
|
call void @finch.copy.S_gen_Val(ptr %a138, ptr %a137)
|
|
%t139 = load %S.gen.Val, ptr %a138
|
|
ret %S.gen.Val %t139
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i1, align 16
|
|
%a13 = alloca %S.gen.Fallible, align 16
|
|
%a16 = alloca %S.gen.Val, align 16
|
|
%a17 = alloca %S.gen.Val, align 16
|
|
%a19 = alloca %S.gen.Val, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca i1, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca %S.gen.Val, align 16
|
|
%a105 = alloca %S.gen.Val, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca %S.gen.Val, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca %S.ast.Type, align 16
|
|
%a230 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i1 %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
%t7 = extractvalue { ptr, i64, i64 } %t6, 1
|
|
%t8 = icmp uge i64 0, %t7
|
|
br i1 %t8, label %range5201, label %inrange5202
|
|
range5201:
|
|
call void @finch_panic_index(ptr @.str.3406, i64 2760, i64 0, i64 %t7)
|
|
unreachable
|
|
inrange5202:
|
|
%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.3407, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t23, { ptr, i64, i64 } { ptr @.str.3408, i64 5, i64 0 })
|
|
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 %then5203, label %endif5205
|
|
then5203:
|
|
%t35 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t35)
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load %S.ast.Node, ptr %a2
|
|
%t38 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3410, i64 3, i64 0 })
|
|
%t39 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2
|
|
%t40 = load { ptr, i64, i64 }, ptr %t39
|
|
%t41 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } { ptr @.str.3409, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true)
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t44 = load { ptr, i64, i64 }, ptr %t43
|
|
%t45 = extractvalue { ptr, i64, i64 } %t44, 1
|
|
%t46 = icmp uge i64 1, %t45
|
|
br i1 %t46, label %range5206, label %inrange5207
|
|
range5206:
|
|
call void @finch_panic_index(ptr @.str.3411, i64 2769, i64 1, i64 %t45)
|
|
unreachable
|
|
inrange5207:
|
|
%t47 = extractvalue { ptr, i64, i64 } %t44, 0
|
|
%t48 = getelementptr inbounds %S.ast.Node, ptr %t47, i64 1
|
|
%t49 = load %S.ast.Node, ptr %t48
|
|
call void @finch.gen.block(ptr %t42, %S.ast.Node %t49, i1 true)
|
|
%t50 = load ptr, ptr %a1
|
|
%t51 = icmp eq ptr %t50, null
|
|
br i1 %t51, label %panic5208, label %ok5209
|
|
panic5208:
|
|
call void @finch_panic(ptr @.str.3412, i64 2770, ptr @.str.3413)
|
|
unreachable
|
|
ok5209:
|
|
%t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 9
|
|
%t53 = load i1, ptr %t52
|
|
store i1 %t53, ptr %a54
|
|
%t55 = load ptr, ptr %a1
|
|
call void @finch.gen.popScope(ptr %t55)
|
|
%t56 = load i1, ptr %a54
|
|
%t57 = xor i1 %t56, true
|
|
br label %logic.from5210
|
|
logic.from5210:
|
|
br i1 %t57, label %logic.rhs5211, label %logic.end5212
|
|
logic.rhs5211:
|
|
%t58 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1
|
|
%t59 = getelementptr inbounds %S.ast.Type, ptr %t58, i32 0, i32 0
|
|
%t60 = load { ptr, i64, i64 }, ptr %t59
|
|
store { ptr, i64, i64 } %t60, ptr %a61
|
|
store { ptr, i64, i64 } { ptr @.str.3414, i64 4, i64 0 }, ptr %a62
|
|
%t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62)
|
|
%t64 = icmp eq i32 %t63, 0
|
|
br label %logic.rend5213
|
|
logic.rend5213:
|
|
br label %logic.end5212
|
|
logic.end5212:
|
|
%t65 = phi i1 [ false, %logic.from5210 ], [ %t64, %logic.rend5213 ]
|
|
br label %logic.from5214
|
|
logic.from5214:
|
|
br i1 %t65, label %logic.rhs5215, label %logic.end5216
|
|
logic.rhs5215:
|
|
%t66 = load i1, ptr %a3
|
|
%t67 = xor i1 %t66, true
|
|
br label %logic.rend5217
|
|
logic.rend5217:
|
|
br label %logic.end5216
|
|
logic.end5216:
|
|
%t68 = phi i1 [ false, %logic.from5214 ], [ %t67, %logic.rend5217 ]
|
|
br i1 %t68, label %then5218, label %endif5220
|
|
then5218:
|
|
%t69 = load ptr, ptr %a1
|
|
%t70 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t71 = load { ptr, i64, i64 }, ptr %t70
|
|
%t72 = extractvalue { ptr, i64, i64 } %t71, 1
|
|
%t73 = icmp uge i64 1, %t72
|
|
br i1 %t73, label %range5221, label %inrange5222
|
|
range5221:
|
|
call void @finch_panic_index(ptr @.str.3415, i64 2773, i64 1, i64 %t72)
|
|
unreachable
|
|
inrange5222:
|
|
%t74 = extractvalue { ptr, i64, i64 } %t71, 0
|
|
%t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 1
|
|
%t76 = load %S.ast.Node, ptr %t75
|
|
call void @finch.gen.fail(ptr %t69, %S.ast.Node %t76, { ptr, i64, i64 } { ptr @.str.3416, i64 142, i64 0 })
|
|
br label %endif5220
|
|
endif5220:
|
|
%t77 = load i1, ptr %a3
|
|
br label %logic.from5223
|
|
logic.from5223:
|
|
br i1 %t77, label %logic.rhs5224, label %logic.end5225
|
|
logic.rhs5224:
|
|
%t78 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1
|
|
%t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i32 0, i32 0
|
|
%t80 = load { ptr, i64, i64 }, ptr %t79
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.3417, i64 4, i64 0 }, ptr %a82
|
|
%t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82)
|
|
%t84 = icmp eq i32 %t83, 0
|
|
br label %logic.rend5226
|
|
logic.rend5226:
|
|
br label %logic.end5225
|
|
logic.end5225:
|
|
%t85 = phi i1 [ false, %logic.from5223 ], [ %t84, %logic.rend5226 ]
|
|
br i1 %t85, label %then5227, label %endif5229
|
|
then5227:
|
|
%t86 = load ptr, ptr %a1
|
|
%t87 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t86, { ptr, i64, i64 } { ptr @.str.3418, i64 6, i64 0 })
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
%t89 = load ptr, ptr %a1
|
|
%t90 = load { ptr, i64, i64 }, ptr %a88
|
|
call void @finch.gen.br(ptr %t89, { ptr, i64, i64 } %t90)
|
|
%t91 = load ptr, ptr %a1
|
|
%t92 = load { ptr, i64, i64 }, ptr %a25
|
|
call void @finch.gen.label(ptr %t91, { ptr, i64, i64 } %t92)
|
|
%t93 = load ptr, ptr %a1
|
|
%t94 = load { ptr, i64, i64 }, ptr %a88
|
|
call void @finch.gen.br(ptr %t93, { ptr, i64, i64 } %t94)
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = load { ptr, i64, i64 }, ptr %a88
|
|
call void @finch.gen.label(ptr %t95, { ptr, i64, i64 } %t96)
|
|
%t97 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3419, i64 4, i64 0 })
|
|
%t98 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t97, 1
|
|
ret %S.gen.Val %t98
|
|
endif5229:
|
|
%t99 = load ptr, ptr %a1
|
|
%t100 = load { ptr, i64, i64 }, ptr %a25
|
|
call void @finch.gen.br(ptr %t99, { ptr, i64, i64 } %t100)
|
|
%t101 = load ptr, ptr %a1
|
|
%t102 = load { ptr, i64, i64 }, ptr %a25
|
|
call void @finch.gen.label(ptr %t101, { ptr, i64, i64 } %t102)
|
|
%t103 = load %S.gen.Val, ptr %a19
|
|
store %S.gen.Val %t103, ptr %a104
|
|
call void @finch.copy.S_gen_Val(ptr %a105, ptr %a104)
|
|
%t106 = load %S.gen.Val, ptr %a105
|
|
ret %S.gen.Val %t106
|
|
endif5205:
|
|
%t107 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1
|
|
%t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i32 0, i32 0
|
|
%t109 = load { ptr, i64, i64 }, ptr %t108
|
|
store { ptr, i64, i64 } %t109, ptr %a110
|
|
store { ptr, i64, i64 } { ptr @.str.3420, i64 4, i64 0 }, ptr %a111
|
|
%t112 = call i32 @finch_str_eq(ptr %a110, ptr %a111)
|
|
%t113 = icmp ne i32 %t112, 0
|
|
br i1 %t113, label %then5230, label %endif5232
|
|
then5230:
|
|
%t114 = load ptr, ptr %a1
|
|
%t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t116 = load { ptr, i64, i64 }, ptr %t115
|
|
%t117 = extractvalue { ptr, i64, i64 } %t116, 1
|
|
%t118 = icmp uge i64 1, %t117
|
|
br i1 %t118, label %range5233, label %inrange5234
|
|
range5233:
|
|
call void @finch_panic_index(ptr @.str.3421, i64 2788, i64 1, i64 %t117)
|
|
unreachable
|
|
inrange5234:
|
|
%t119 = extractvalue { ptr, i64, i64 } %t116, 0
|
|
%t120 = getelementptr inbounds %S.ast.Node, ptr %t119, i64 1
|
|
%t121 = load %S.ast.Node, ptr %t120
|
|
call void @finch.gen.fail(ptr %t114, %S.ast.Node %t121, { ptr, i64, i64 } { ptr @.str.3422, i64 98, i64 0 })
|
|
br label %endif5232
|
|
endif5232:
|
|
%t122 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t122)
|
|
%t123 = load ptr, ptr %a1
|
|
%t124 = load %S.ast.Node, ptr %a2
|
|
%t125 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3424, i64 3, i64 0 })
|
|
%t126 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2
|
|
%t127 = load { ptr, i64, i64 }, ptr %t126
|
|
%t128 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t123, %S.ast.Node %t124, { ptr, i64, i64 } { ptr @.str.3423, i64 3, i64 0 }, %S.ast.Type %t125, { ptr, i64, i64 } %t127, i1 true)
|
|
%t129 = load ptr, ptr %a1
|
|
%t130 = load ptr, ptr %a1
|
|
%t131 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t132 = load { ptr, i64, i64 }, ptr %t131
|
|
%t133 = extractvalue { ptr, i64, i64 } %t132, 1
|
|
%t134 = icmp uge i64 1, %t133
|
|
br i1 %t134, label %range5235, label %inrange5236
|
|
range5235:
|
|
call void @finch_panic_index(ptr @.str.3425, i64 2792, i64 1, i64 %t133)
|
|
unreachable
|
|
inrange5236:
|
|
%t135 = extractvalue { ptr, i64, i64 } %t132, 0
|
|
%t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1
|
|
%t137 = load %S.ast.Node, ptr %t136
|
|
%t138 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1
|
|
%t139 = load %S.ast.Type, ptr %t138
|
|
%t140 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t139)
|
|
%t141 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1
|
|
%t142 = load %S.ast.Type, ptr %t141
|
|
%t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t144 = load { ptr, i64, i64 }, ptr %t143
|
|
%t145 = extractvalue { ptr, i64, i64 } %t144, 1
|
|
%t146 = icmp uge i64 1, %t145
|
|
br i1 %t146, label %range5237, label %inrange5238
|
|
range5237:
|
|
call void @finch_panic_index(ptr @.str.3426, i64 2792, i64 1, i64 %t145)
|
|
unreachable
|
|
inrange5238:
|
|
%t147 = extractvalue { ptr, i64, i64 } %t144, 0
|
|
%t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 1
|
|
%t149 = load %S.ast.Node, ptr %t148
|
|
%t150 = call %S.gen.Val @finch.gen.coerce(ptr %t129, %S.gen.Val %t140, %S.ast.Type %t142, %S.ast.Node %t149, { ptr, i64, i64 } { ptr @.str.3427, i64 20, i64 0 })
|
|
store %S.gen.Val %t150, ptr %a151
|
|
%t152 = load ptr, ptr %a1
|
|
%t153 = load %S.gen.Val, ptr %a151
|
|
%t154 = call { ptr, i64, i64 } @finch.gen.own(ptr %t152, %S.gen.Val %t153)
|
|
store { ptr, i64, i64 } %t154, ptr %a155
|
|
%t156 = load ptr, ptr %a1
|
|
call void @finch.gen.popScope(ptr %t156)
|
|
%t157 = load ptr, ptr %a1
|
|
%t158 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t157, { ptr, i64, i64 } { ptr @.str.3428, i64 7, i64 0 })
|
|
store { ptr, i64, i64 } %t158, ptr %a159
|
|
%t160 = load ptr, ptr %a1
|
|
%t161 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t160, { ptr, i64, i64 } { ptr @.str.3429, i64 6, i64 0 })
|
|
store { ptr, i64, i64 } %t161, ptr %a162
|
|
%t163 = load ptr, ptr %a1
|
|
%t164 = load { ptr, i64, i64 }, ptr %a159
|
|
call void @finch.gen.br(ptr %t163, { ptr, i64, i64 } %t164)
|
|
%t165 = load ptr, ptr %a1
|
|
%t166 = load { ptr, i64, i64 }, ptr %a159
|
|
call void @finch.gen.label(ptr %t165, { ptr, i64, i64 } %t166)
|
|
%t167 = load ptr, ptr %a1
|
|
%t168 = load { ptr, i64, i64 }, ptr %a162
|
|
call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168)
|
|
%t169 = load ptr, ptr %a1
|
|
%t170 = load { ptr, i64, i64 }, ptr %a25
|
|
call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170)
|
|
%t171 = load ptr, ptr %a1
|
|
%t172 = load { ptr, i64, i64 }, ptr %a162
|
|
call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172)
|
|
%t173 = load ptr, ptr %a1
|
|
%t174 = load { ptr, i64, i64 }, ptr %a162
|
|
call void @finch.gen.label(ptr %t173, { ptr, i64, i64 } %t174)
|
|
%t175 = load ptr, ptr %a1
|
|
%t176 = load ptr, ptr %a1
|
|
%t177 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1
|
|
%t178 = load %S.ast.Type, ptr %t177
|
|
%t179 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t176, %S.ast.Type %t178)
|
|
store { ptr, i64, i64 } { ptr @.str.3430, i64 4, i64 0 }, ptr %a181
|
|
store { ptr, i64, i64 } %t179, ptr %a182
|
|
call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182)
|
|
%t183 = load { ptr, i64, i64 }, ptr %a180
|
|
store { ptr, i64, i64 } %t183, ptr %a185
|
|
store { ptr, i64, i64 } { ptr @.str.3431, i64 3, i64 0 }, ptr %a186
|
|
call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186)
|
|
%t187 = load { ptr, i64, i64 }, ptr %a184
|
|
%t188 = load { ptr, i64, i64 }, ptr %a155
|
|
store { ptr, i64, i64 } %t187, ptr %a190
|
|
store { ptr, i64, i64 } %t188, ptr %a191
|
|
call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191)
|
|
%t192 = load { ptr, i64, i64 }, ptr %a189
|
|
store { ptr, i64, i64 } %t192, ptr %a194
|
|
store { ptr, i64, i64 } { ptr @.str.3432, i64 3, i64 0 }, ptr %a195
|
|
call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195)
|
|
%t196 = load { ptr, i64, i64 }, ptr %a193
|
|
%t197 = load { ptr, i64, i64 }, ptr %a159
|
|
store { ptr, i64, i64 } %t196, ptr %a199
|
|
store { ptr, i64, i64 } %t197, ptr %a200
|
|
call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200)
|
|
%t201 = load { ptr, i64, i64 }, ptr %a198
|
|
store { ptr, i64, i64 } %t201, ptr %a203
|
|
store { ptr, i64, i64 } { ptr @.str.3433, i64 6, i64 0 }, ptr %a204
|
|
call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204)
|
|
%t205 = load { ptr, i64, i64 }, ptr %a202
|
|
%t206 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0
|
|
%t207 = load { ptr, i64, i64 }, ptr %t206
|
|
store { ptr, i64, i64 } %t205, ptr %a209
|
|
store { ptr, i64, i64 } %t207, ptr %a210
|
|
call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210)
|
|
%t211 = load { ptr, i64, i64 }, ptr %a208
|
|
store { ptr, i64, i64 } %t211, ptr %a213
|
|
store { ptr, i64, i64 } { ptr @.str.3434, i64 3, i64 0 }, ptr %a214
|
|
call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214)
|
|
%t215 = load { ptr, i64, i64 }, ptr %a212
|
|
%t216 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t215, ptr %a218
|
|
store { ptr, i64, i64 } %t216, ptr %a219
|
|
call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219)
|
|
%t220 = load { ptr, i64, i64 }, ptr %a217
|
|
store { ptr, i64, i64 } %t220, ptr %a222
|
|
store { ptr, i64, i64 } { ptr @.str.3435, i64 2, i64 0 }, ptr %a223
|
|
call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223)
|
|
%t224 = load { ptr, i64, i64 }, ptr %a221
|
|
%t225 = call { ptr, i64, i64 } @finch.gen.op(ptr %t175, { ptr, i64, i64 } %t224)
|
|
%t226 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t225, 0
|
|
%t227 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1
|
|
%t228 = load %S.ast.Type, ptr %t227
|
|
store %S.ast.Type %t228, ptr %a229
|
|
call void @finch.copy.S_ast_Type(ptr %a230, ptr %a229)
|
|
%t231 = load %S.ast.Type, ptr %a230
|
|
%t232 = insertvalue %S.gen.Val %t226, %S.ast.Type %t231, 1
|
|
%t233 = load ptr, ptr %a1
|
|
%t234 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1
|
|
%t235 = load %S.ast.Type, ptr %t234
|
|
%t236 = call i1 @finch.gen.owning(ptr %t233, %S.ast.Type %t235)
|
|
%t237 = insertvalue %S.gen.Val %t232, i1 %t236, 2
|
|
ret %S.gen.Val %t237
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.3436, i64 5, i64 0 }, ptr %a7
|
|
%t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7)
|
|
%t9 = icmp ne i32 %t8, 0
|
|
br i1 %t9, label %then5239, label %endif5241
|
|
then5239:
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = load %S.ast.Node, ptr %a2
|
|
%t12 = load %S.ast.Type, ptr %a3
|
|
%t13 = call %S.gen.Val @finch.gen.arrayLit(ptr %t10, %S.ast.Node %t11, %S.ast.Type %t12)
|
|
ret %S.gen.Val %t13
|
|
endif5241:
|
|
%t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t15 = load { ptr, i64, i64 }, ptr %t14
|
|
store { ptr, i64, i64 } %t15, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.3437, i64 3, i64 0 }, ptr %a17
|
|
%t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17)
|
|
%t19 = icmp ne i32 %t18, 0
|
|
br i1 %t19, label %then5242, label %endif5244
|
|
then5242:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = load %S.ast.Node, ptr %a2
|
|
%t22 = load %S.ast.Type, ptr %a3
|
|
%t23 = call %S.gen.Val @finch.gen.mapLit(ptr %t20, %S.ast.Node %t21, %S.ast.Type %t22)
|
|
ret %S.gen.Val %t23
|
|
endif5244:
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = load %S.ast.Node, ptr %a2
|
|
%t26 = call %S.gen.Val @finch.gen.expr(ptr %t24, %S.ast.Node %t25)
|
|
ret %S.gen.Val %t26
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.expr(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca i64, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca i64, align 16
|
|
%a47 = alloca i8, align 16
|
|
%a52 = alloca i64, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca i64, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca %S.gen.Ref, align 16
|
|
%a186 = alloca %S.gen.Val, align 16
|
|
%a187 = alloca %S.gen.Val, align 16
|
|
%a203 = alloca %S.ast.Type, align 16
|
|
%a204 = alloca %S.ast.Type, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
call void @finch_str_copy(ptr %a6, ptr %a5)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
%t9 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.3438, i64 3, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br i1 %t13, label %then5245, label %endif5247
|
|
then5245:
|
|
%t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t15 = load { ptr, i64, i64 }, ptr %t14
|
|
store { ptr, i64, i64 } %t15, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.3440, i64 2, i64 0 }, ptr %a18
|
|
%t19 = call i32 @finch_str_starts(ptr %a16, ptr %a18)
|
|
%t20 = icmp ne i32 %t19, 0
|
|
br label %logic.from5248
|
|
logic.from5248:
|
|
br i1 %t20, label %logic.end5250, label %logic.rhs5249
|
|
logic.rhs5249:
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.3442, i64 2, i64 0 }, ptr %a25
|
|
%t26 = call i32 @finch_str_starts(ptr %a23, ptr %a25)
|
|
%t27 = icmp ne i32 %t26, 0
|
|
br label %logic.rend5251
|
|
logic.rend5251:
|
|
br label %logic.end5250
|
|
logic.end5250:
|
|
%t28 = phi i1 [ true, %logic.from5248 ], [ %t27, %logic.rend5251 ]
|
|
br i1 %t28, label %then5252, label %endif5254
|
|
then5252:
|
|
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.3443, i64 2821)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } %t37, ptr %a38
|
|
store i64 0, ptr %a39
|
|
br label %each.cond5255
|
|
each.cond5255:
|
|
%t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %a38, i32 0, i32 1
|
|
%t41 = load i64, ptr %t40
|
|
%t42 = load i64, ptr %a39
|
|
%t43 = icmp slt i64 %t42, %t41
|
|
br i1 %t43, label %each.body5256, label %each.end5258
|
|
each.body5256:
|
|
%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.from5259
|
|
logic.from5259:
|
|
br i1 %t54, label %logic.rhs5260, label %logic.end5261
|
|
logic.rhs5260:
|
|
%t55 = load i8, ptr %a47
|
|
%t56 = icmp ule i8 %t55, 102
|
|
br label %logic.rend5262
|
|
logic.rend5262:
|
|
br label %logic.end5261
|
|
logic.end5261:
|
|
%t57 = phi i1 [ false, %logic.from5259 ], [ %t56, %logic.rend5262 ]
|
|
br i1 %t57, label %then5263, label %endif5265
|
|
then5263:
|
|
%t58 = load i8, ptr %a47
|
|
%t59 = zext i8 %t58 to i64
|
|
%t60 = zext i8 97 to i64
|
|
%t61 = sub i64 %t59, %t60
|
|
%t62 = add i64 %t61, 10
|
|
store i64 %t62, ptr %a52
|
|
br label %endif5265
|
|
endif5265:
|
|
%t63 = load i8, ptr %a47
|
|
%t64 = icmp uge i8 %t63, 65
|
|
br label %logic.from5266
|
|
logic.from5266:
|
|
br i1 %t64, label %logic.rhs5267, label %logic.end5268
|
|
logic.rhs5267:
|
|
%t65 = load i8, ptr %a47
|
|
%t66 = icmp ule i8 %t65, 70
|
|
br label %logic.rend5269
|
|
logic.rend5269:
|
|
br label %logic.end5268
|
|
logic.end5268:
|
|
%t67 = phi i1 [ false, %logic.from5266 ], [ %t66, %logic.rend5269 ]
|
|
br i1 %t67, label %then5270, label %endif5272
|
|
then5270:
|
|
%t68 = load i8, ptr %a47
|
|
%t69 = zext i8 %t68 to i64
|
|
%t70 = zext i8 65 to i64
|
|
%t71 = sub i64 %t69, %t70
|
|
%t72 = add i64 %t71, 10
|
|
store i64 %t72, ptr %a52
|
|
br label %endif5272
|
|
endif5272:
|
|
%t73 = load i64, ptr %a29
|
|
%t74 = mul i64 %t73, 16
|
|
%t75 = load i64, ptr %a52
|
|
%t76 = add i64 %t74, %t75
|
|
store i64 %t76, ptr %a29
|
|
br label %each.step5257
|
|
each.step5257:
|
|
%t77 = load i64, ptr %a39
|
|
%t78 = add i64 %t77, 1
|
|
store i64 %t78, ptr %a39
|
|
br label %each.cond5255
|
|
each.end5258:
|
|
%t79 = load i64, ptr %a29
|
|
call void @finch_str_from_int(ptr %a80, i64 %t79)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a80
|
|
%t82 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t81, 0
|
|
%t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3444, i64 3, i64 0 })
|
|
%t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1
|
|
%t85 = insertvalue %S.gen.Val %t84, i1 true, 3
|
|
ret %S.gen.Val %t85
|
|
endif5254:
|
|
%t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t87 = load { ptr, i64, i64 }, ptr %t86
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
%t89 = call i64 @finch_str_to_int(ptr %a88, ptr @.str.3445, i64 2833)
|
|
call void @finch_str_from_int(ptr %a90, i64 %t89)
|
|
%t91 = load { ptr, i64, i64 }, ptr %a90
|
|
%t92 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t91, 0
|
|
%t93 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3446, i64 3, i64 0 })
|
|
%t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1
|
|
%t95 = insertvalue %S.gen.Val %t94, i1 true, 3
|
|
ret %S.gen.Val %t95
|
|
endif5247:
|
|
%t96 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t96, ptr %a97
|
|
store { ptr, i64, i64 } { ptr @.str.3447, i64 5, i64 0 }, ptr %a98
|
|
%t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98)
|
|
%t100 = icmp ne i32 %t99, 0
|
|
br i1 %t100, label %then5273, label %endif5275
|
|
then5273:
|
|
%t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t102 = load { ptr, i64, i64 }, ptr %t101
|
|
store { ptr, i64, i64 } %t102, ptr %a103
|
|
call void @finch_str_copy(ptr %a104, ptr %a103)
|
|
%t105 = load { ptr, i64, i64 }, ptr %a104
|
|
%t106 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t105, 0
|
|
%t107 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3448, i64 5, i64 0 })
|
|
%t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1
|
|
%t109 = insertvalue %S.gen.Val %t108, i1 true, 3
|
|
ret %S.gen.Val %t109
|
|
endif5275:
|
|
%t110 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t110, ptr %a111
|
|
store { ptr, i64, i64 } { ptr @.str.3449, i64 4, i64 0 }, ptr %a112
|
|
%t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112)
|
|
%t114 = icmp ne i32 %t113, 0
|
|
br i1 %t114, label %then5276, label %endif5278
|
|
then5276:
|
|
%t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t116 = load { ptr, i64, i64 }, ptr %t115
|
|
store { ptr, i64, i64 } %t116, ptr %a117
|
|
call void @finch_str_copy(ptr %a118, ptr %a117)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a118
|
|
%t120 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t119, 0
|
|
%t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3450, i64 4, i64 0 })
|
|
%t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1
|
|
ret %S.gen.Val %t122
|
|
endif5278:
|
|
%t123 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t123, ptr %a124
|
|
store { ptr, i64, i64 } { ptr @.str.3451, i64 4, i64 0 }, ptr %a125
|
|
%t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125)
|
|
%t127 = icmp ne i32 %t126, 0
|
|
br i1 %t127, label %then5279, label %endif5281
|
|
then5279:
|
|
%t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t129 = load { ptr, i64, i64 }, ptr %t128
|
|
%t130 = extractvalue { ptr, i64, i64 } %t129, 1
|
|
%t131 = icmp uge i64 0, %t130
|
|
br i1 %t131, label %range5282, label %inrange5283
|
|
range5282:
|
|
call void @finch_panic_index(ptr @.str.3452, i64 2842, i64 0, i64 %t130)
|
|
unreachable
|
|
inrange5283:
|
|
%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.3453, i64 4, i64 0 })
|
|
%t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1
|
|
ret %S.gen.Val %t142
|
|
endif5281:
|
|
%t143 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t143, ptr %a144
|
|
store { ptr, i64, i64 } { ptr @.str.3454, i64 3, i64 0 }, ptr %a145
|
|
%t146 = call i32 @finch_str_eq(ptr %a144, ptr %a145)
|
|
%t147 = icmp ne i32 %t146, 0
|
|
br i1 %t147, label %then5284, label %endif5286
|
|
then5284:
|
|
%t148 = load ptr, ptr %a1
|
|
%t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4
|
|
%t150 = load { ptr, i64, i64 }, ptr %t149
|
|
%t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150)
|
|
ret %S.gen.Val %t151
|
|
endif5286:
|
|
%t152 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t152, ptr %a153
|
|
store { ptr, i64, i64 } { ptr @.str.3455, i64 4, i64 0 }, ptr %a154
|
|
%t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154)
|
|
%t156 = icmp ne i32 %t155, 0
|
|
br i1 %t156, label %then5287, label %endif5289
|
|
then5287:
|
|
%t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3456, i64 4, i64 0 }, 0
|
|
%t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3457, i64 4, i64 0 })
|
|
%t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1
|
|
ret %S.gen.Val %t159
|
|
endif5289:
|
|
%t160 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t160, ptr %a161
|
|
store { ptr, i64, i64 } { ptr @.str.3458, i64 3, i64 0 }, ptr %a162
|
|
%t163 = call i32 @finch_str_eq(ptr %a161, ptr %a162)
|
|
%t164 = icmp ne i32 %t163, 0
|
|
br label %logic.from5290
|
|
logic.from5290:
|
|
br i1 %t164, label %logic.end5292, label %logic.rhs5291
|
|
logic.rhs5291:
|
|
%t165 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t165, ptr %a166
|
|
store { ptr, i64, i64 } { ptr @.str.3459, i64 6, i64 0 }, ptr %a167
|
|
%t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167)
|
|
%t169 = icmp ne i32 %t168, 0
|
|
br label %logic.rend5293
|
|
logic.rend5293:
|
|
br label %logic.end5292
|
|
logic.end5292:
|
|
%t170 = phi i1 [ true, %logic.from5290 ], [ %t169, %logic.rend5293 ]
|
|
br label %logic.from5294
|
|
logic.from5294:
|
|
br i1 %t170, label %logic.end5296, label %logic.rhs5295
|
|
logic.rhs5295:
|
|
%t171 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t171, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.3460, i64 5, i64 0 }, ptr %a173
|
|
%t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173)
|
|
%t175 = icmp ne i32 %t174, 0
|
|
br label %logic.rend5297
|
|
logic.rend5297:
|
|
br label %logic.end5296
|
|
logic.end5296:
|
|
%t176 = phi i1 [ true, %logic.from5294 ], [ %t175, %logic.rend5297 ]
|
|
br i1 %t176, label %then5298, label %endif5300
|
|
then5298:
|
|
%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 %then5301, label %endif5303
|
|
then5301:
|
|
%t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2
|
|
%t185 = load %S.gen.Val, ptr %t184
|
|
store %S.gen.Val %t185, ptr %a186
|
|
call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186)
|
|
%t188 = load %S.gen.Val, ptr %a187
|
|
ret %S.gen.Val %t188
|
|
endif5303:
|
|
%t189 = load ptr, ptr %a1
|
|
%t190 = load ptr, ptr %a1
|
|
%t191 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1
|
|
%t192 = getelementptr inbounds %S.gen.Place, ptr %t191, i32 0, i32 1
|
|
%t193 = load %S.ast.Type, ptr %t192
|
|
%t194 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t190, %S.ast.Type %t193)
|
|
%t195 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1
|
|
%t196 = getelementptr inbounds %S.gen.Place, ptr %t195, i32 0, i32 0
|
|
%t197 = load { ptr, i64, i64 }, ptr %t196
|
|
%t198 = call { ptr, i64, i64 } @finch.gen.load(ptr %t189, { ptr, i64, i64 } %t194, { ptr, i64, i64 } %t197)
|
|
%t199 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0
|
|
%t200 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1
|
|
%t201 = getelementptr inbounds %S.gen.Place, ptr %t200, i32 0, i32 1
|
|
%t202 = load %S.ast.Type, ptr %t201
|
|
store %S.ast.Type %t202, ptr %a203
|
|
call void @finch.copy.S_ast_Type(ptr %a204, ptr %a203)
|
|
%t205 = load %S.ast.Type, ptr %a204
|
|
%t206 = insertvalue %S.gen.Val %t199, %S.ast.Type %t205, 1
|
|
ret %S.gen.Val %t206
|
|
endif5300:
|
|
%t207 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t207, ptr %a208
|
|
store { ptr, i64, i64 } { ptr @.str.3461, i64 5, i64 0 }, ptr %a209
|
|
%t210 = call i32 @finch_str_eq(ptr %a208, ptr %a209)
|
|
%t211 = icmp ne i32 %t210, 0
|
|
br i1 %t211, label %then5304, label %endif5306
|
|
then5304:
|
|
%t212 = load ptr, ptr %a1
|
|
%t213 = load %S.ast.Node, ptr %a2
|
|
%t214 = call %S.gen.Val @finch.gen.matchGen(ptr %t212, %S.ast.Node %t213, i1 true)
|
|
ret %S.gen.Val %t214
|
|
endif5306:
|
|
%t215 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t215, ptr %a216
|
|
store { ptr, i64, i64 } { ptr @.str.3462, i64 3, i64 0 }, ptr %a217
|
|
%t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217)
|
|
%t219 = icmp ne i32 %t218, 0
|
|
br i1 %t219, label %then5307, label %endif5309
|
|
then5307:
|
|
%t220 = load ptr, ptr %a1
|
|
%t221 = load %S.ast.Node, ptr %a2
|
|
%t222 = call %S.gen.Val @finch.gen.tryExpr(ptr %t220, %S.ast.Node %t221)
|
|
ret %S.gen.Val %t222
|
|
endif5309:
|
|
%t223 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t223, ptr %a224
|
|
store { ptr, i64, i64 } { ptr @.str.3463, i64 2, i64 0 }, ptr %a225
|
|
%t226 = call i32 @finch_str_eq(ptr %a224, ptr %a225)
|
|
%t227 = icmp ne i32 %t226, 0
|
|
br i1 %t227, label %then5310, label %endif5312
|
|
then5310:
|
|
%t228 = load ptr, ptr %a1
|
|
%t229 = load %S.ast.Node, ptr %a2
|
|
%t230 = call %S.gen.Val @finch.gen.orElse(ptr %t228, %S.ast.Node %t229, i1 false)
|
|
ret %S.gen.Val %t230
|
|
endif5312:
|
|
%t231 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t231, ptr %a232
|
|
store { ptr, i64, i64 } { ptr @.str.3464, i64 5, i64 0 }, ptr %a233
|
|
%t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233)
|
|
%t235 = icmp ne i32 %t234, 0
|
|
br i1 %t235, label %then5313, label %endif5315
|
|
then5313:
|
|
%t236 = load ptr, ptr %a1
|
|
%t237 = load %S.ast.Node, ptr %a2
|
|
%t238 = call %S.gen.Val @finch.gen.unary(ptr %t236, %S.ast.Node %t237)
|
|
ret %S.gen.Val %t238
|
|
endif5315:
|
|
%t239 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t239, ptr %a240
|
|
store { ptr, i64, i64 } { ptr @.str.3465, i64 6, i64 0 }, ptr %a241
|
|
%t242 = call i32 @finch_str_eq(ptr %a240, ptr %a241)
|
|
%t243 = icmp ne i32 %t242, 0
|
|
br i1 %t243, label %then5316, label %endif5318
|
|
then5316:
|
|
%t244 = load ptr, ptr %a1
|
|
%t245 = load %S.ast.Node, ptr %a2
|
|
%t246 = call %S.gen.Val @finch.gen.binary(ptr %t244, %S.ast.Node %t245)
|
|
ret %S.gen.Val %t246
|
|
endif5318:
|
|
%t247 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t247, ptr %a248
|
|
store { ptr, i64, i64 } { ptr @.str.3466, i64 4, i64 0 }, ptr %a249
|
|
%t250 = call i32 @finch_str_eq(ptr %a248, ptr %a249)
|
|
%t251 = icmp ne i32 %t250, 0
|
|
br i1 %t251, label %then5319, label %endif5321
|
|
then5319:
|
|
%t252 = load ptr, ptr %a1
|
|
%t253 = load %S.ast.Node, ptr %a2
|
|
%t254 = call %S.gen.Val @finch.gen.call(ptr %t252, %S.ast.Node %t253)
|
|
ret %S.gen.Val %t254
|
|
endif5321:
|
|
%t255 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t255, ptr %a256
|
|
store { ptr, i64, i64 } { ptr @.str.3467, i64 6, i64 0 }, ptr %a257
|
|
%t258 = call i32 @finch_str_eq(ptr %a256, ptr %a257)
|
|
%t259 = icmp ne i32 %t258, 0
|
|
br i1 %t259, label %then5322, label %endif5324
|
|
then5322:
|
|
%t260 = load ptr, ptr %a1
|
|
%t261 = load %S.ast.Node, ptr %a2
|
|
%t262 = call %S.gen.Val @finch.gen.method(ptr %t260, %S.ast.Node %t261)
|
|
ret %S.gen.Val %t262
|
|
endif5324:
|
|
%t263 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t263, ptr %a264
|
|
store { ptr, i64, i64 } { ptr @.str.3468, i64 5, i64 0 }, ptr %a265
|
|
%t266 = call i32 @finch_str_eq(ptr %a264, ptr %a265)
|
|
%t267 = icmp ne i32 %t266, 0
|
|
br i1 %t267, label %then5325, label %endif5327
|
|
then5325:
|
|
%t268 = load ptr, ptr %a1
|
|
%t269 = load %S.ast.Node, ptr %a2
|
|
%t270 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3469, i64 4, i64 0 })
|
|
%t271 = call %S.gen.Val @finch.gen.arrayLit(ptr %t268, %S.ast.Node %t269, %S.ast.Type %t270)
|
|
ret %S.gen.Val %t271
|
|
endif5327:
|
|
%t272 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t272, ptr %a273
|
|
store { ptr, i64, i64 } { ptr @.str.3470, i64 3, i64 0 }, ptr %a274
|
|
%t275 = call i32 @finch_str_eq(ptr %a273, ptr %a274)
|
|
%t276 = icmp ne i32 %t275, 0
|
|
br i1 %t276, label %then5328, label %endif5330
|
|
then5328:
|
|
%t277 = load ptr, ptr %a1
|
|
%t278 = load %S.ast.Node, ptr %a2
|
|
%t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3471, i64 4, i64 0 })
|
|
%t280 = call %S.gen.Val @finch.gen.mapLit(ptr %t277, %S.ast.Node %t278, %S.ast.Type %t279)
|
|
ret %S.gen.Val %t280
|
|
endif5330:
|
|
%t281 = load ptr, ptr %a1
|
|
%t282 = load %S.ast.Node, ptr %a2
|
|
%t283 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.3472, i64 19, i64 0 }, ptr %a285
|
|
store { ptr, i64, i64 } %t283, ptr %a286
|
|
call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286)
|
|
%t287 = load { ptr, i64, i64 }, ptr %a284
|
|
call void @finch.gen.fail(ptr %t281, %S.ast.Node %t282, { ptr, i64, i64 } %t287)
|
|
ret %S.gen.Val zeroinitializer
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.unary(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a12 = alloca %S.gen.Val, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca %S.gen.Val, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca %S.ast.Type, align 16
|
|
%a93 = alloca %S.ast.Type, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca %S.ast.Type, align 16
|
|
%a132 = alloca %S.ast.Type, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca %S.ast.Type, align 16
|
|
%a146 = alloca %S.ast.Type, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca %S.ast.Type, align 16
|
|
%a174 = alloca %S.ast.Type, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca %S.ast.Type, align 16
|
|
%a204 = alloca %S.ast.Type, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca %S.gen.Val, align 16
|
|
%a218 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
%t6 = extractvalue { ptr, i64, i64 } %t5, 1
|
|
%t7 = icmp uge i64 0, %t6
|
|
br i1 %t7, label %range5331, label %inrange5332
|
|
range5331:
|
|
call void @finch_panic_index(ptr @.str.3473, i64 2890, i64 0, i64 %t6)
|
|
unreachable
|
|
inrange5332:
|
|
%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.3474, i64 1, i64 0 }, ptr %a16
|
|
%t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16)
|
|
%t18 = icmp ne i32 %t17, 0
|
|
br i1 %t18, label %then5333, label %endif5335
|
|
then5333:
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = load %S.gen.Val, ptr %a12
|
|
%t21 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3475, i64 4, i64 0 })
|
|
%t22 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t23 = load { ptr, i64, i64 }, ptr %t22
|
|
%t24 = extractvalue { ptr, i64, i64 } %t23, 1
|
|
%t25 = icmp uge i64 0, %t24
|
|
br i1 %t25, label %range5336, label %inrange5337
|
|
range5336:
|
|
call void @finch_panic_index(ptr @.str.3476, i64 2892, i64 0, i64 %t24)
|
|
unreachable
|
|
inrange5337:
|
|
%t26 = extractvalue { ptr, i64, i64 } %t23, 0
|
|
%t27 = getelementptr inbounds %S.ast.Node, ptr %t26, i64 0
|
|
%t28 = load %S.ast.Node, ptr %t27
|
|
%t29 = call %S.gen.Val @finch.gen.coerce(ptr %t19, %S.gen.Val %t20, %S.ast.Type %t21, %S.ast.Node %t28, { ptr, i64, i64 } { ptr @.str.3477, i64 19, i64 0 })
|
|
store %S.gen.Val %t29, ptr %a30
|
|
%t31 = load ptr, ptr %a1
|
|
%t32 = getelementptr inbounds %S.gen.Val, ptr %a30, i32 0, i32 0
|
|
%t33 = load { ptr, i64, i64 }, ptr %t32
|
|
store { ptr, i64, i64 } { ptr @.str.3478, i64 7, i64 0 }, ptr %a35
|
|
store { ptr, i64, i64 } %t33, ptr %a36
|
|
call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } %t37, ptr %a39
|
|
store { ptr, i64, i64 } { ptr @.str.3479, i64 6, i64 0 }, ptr %a40
|
|
call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a38
|
|
%t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t31, { ptr, i64, i64 } %t41)
|
|
%t43 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t42, 0
|
|
%t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3480, i64 4, i64 0 })
|
|
%t45 = insertvalue %S.gen.Val %t43, %S.ast.Type %t44, 1
|
|
ret %S.gen.Val %t45
|
|
endif5335:
|
|
%t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t47 = load { ptr, i64, i64 }, ptr %t46
|
|
store { ptr, i64, i64 } %t47, ptr %a48
|
|
store { ptr, i64, i64 } { ptr @.str.3481, i64 1, i64 0 }, ptr %a49
|
|
%t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49)
|
|
%t51 = icmp ne i32 %t50, 0
|
|
br i1 %t51, label %then5338, label %endif5340
|
|
then5338:
|
|
%t52 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t53 = load %S.ast.Type, ptr %t52
|
|
%t54 = call i1 @finch.gen.isInt(%S.ast.Type %t53)
|
|
%t55 = xor i1 %t54, true
|
|
br i1 %t55, label %then5341, label %endif5343
|
|
then5341:
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = load %S.ast.Node, ptr %a2
|
|
%t58 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t59 = load %S.ast.Type, ptr %t58
|
|
%t60 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t59)
|
|
store { ptr, i64, i64 } { ptr @.str.3482, i64 45, i64 0 }, ptr %a62
|
|
store { ptr, i64, i64 } %t60, ptr %a63
|
|
call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a61
|
|
call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t64)
|
|
br label %endif5343
|
|
endif5343:
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t68 = load %S.ast.Type, ptr %t67
|
|
%t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t66, %S.ast.Type %t68)
|
|
store { ptr, i64, i64 } { ptr @.str.3483, i64 4, i64 0 }, ptr %a71
|
|
store { ptr, i64, i64 } %t69, ptr %a72
|
|
call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72)
|
|
%t73 = load { ptr, i64, i64 }, ptr %a70
|
|
store { ptr, i64, i64 } %t73, ptr %a75
|
|
store { ptr, i64, i64 } { ptr @.str.3484, i64 1, i64 0 }, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
%t78 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0
|
|
%t79 = load { ptr, i64, i64 }, ptr %t78
|
|
store { ptr, i64, i64 } %t77, ptr %a81
|
|
store { ptr, i64, i64 } %t79, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t83, ptr %a85
|
|
store { ptr, i64, i64 } { ptr @.str.3485, i64 4, i64 0 }, ptr %a86
|
|
call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a84
|
|
%t88 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t87)
|
|
%t89 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t88, 0
|
|
%t90 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t91 = load %S.ast.Type, ptr %t90
|
|
store %S.ast.Type %t91, ptr %a92
|
|
call void @finch.copy.S_ast_Type(ptr %a93, ptr %a92)
|
|
%t94 = load %S.ast.Type, ptr %a93
|
|
%t95 = insertvalue %S.gen.Val %t89, %S.ast.Type %t94, 1
|
|
ret %S.gen.Val %t95
|
|
endif5340:
|
|
%t96 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t97 = load %S.ast.Type, ptr %t96
|
|
%t98 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t97)
|
|
br i1 %t98, label %then5344, label %endif5346
|
|
then5344:
|
|
%t99 = load ptr, ptr %a1
|
|
%t100 = load %S.ast.Node, ptr %a2
|
|
%t101 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t102 = load %S.ast.Type, ptr %t101
|
|
%t103 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t102)
|
|
store { ptr, i64, i64 } %t103, ptr %a105
|
|
store { ptr, i64, i64 } { ptr @.str.3486, i64 34, i64 0 }, ptr %a106
|
|
call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106)
|
|
%t107 = load { ptr, i64, i64 }, ptr %a104
|
|
call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t107)
|
|
br label %endif5346
|
|
endif5346:
|
|
%t108 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t109 = load %S.ast.Type, ptr %t108
|
|
%t110 = call i1 @finch.gen.isSigned(%S.ast.Type %t109)
|
|
br i1 %t110, label %then5347, label %endif5349
|
|
then5347:
|
|
%t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3
|
|
%t112 = load i1, ptr %t111
|
|
br i1 %t112, label %then5350, label %endif5352
|
|
then5350:
|
|
%t113 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0
|
|
%t114 = load { ptr, i64, i64 }, ptr %t113
|
|
store { ptr, i64, i64 } %t114, ptr %a115
|
|
store { ptr, i64, i64 } { ptr @.str.3488, i64 1, i64 0 }, ptr %a117
|
|
%t118 = call i32 @finch_str_starts(ptr %a115, ptr %a117)
|
|
%t119 = icmp ne i32 %t118, 0
|
|
br i1 %t119, label %then5353, label %endif5355
|
|
then5353:
|
|
%t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0
|
|
%t121 = load { ptr, i64, i64 }, ptr %t120
|
|
store { ptr, i64, i64 } %t121, ptr %a122
|
|
%t124 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0
|
|
%t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i32 0, i32 1
|
|
%t126 = load i64, ptr %t125
|
|
call void @finch_str_sub(ptr %a123, ptr %a122, i64 1, i64 %t126, ptr @.str.3489, i64 2907)
|
|
%t127 = load { ptr, i64, i64 }, ptr %a123
|
|
%t128 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t127, 0
|
|
%t129 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t130 = load %S.ast.Type, ptr %t129
|
|
store %S.ast.Type %t130, ptr %a131
|
|
call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131)
|
|
%t133 = load %S.ast.Type, ptr %a132
|
|
%t134 = insertvalue %S.gen.Val %t128, %S.ast.Type %t133, 1
|
|
%t135 = insertvalue %S.gen.Val %t134, i1 true, 3
|
|
ret %S.gen.Val %t135
|
|
endif5355:
|
|
%t136 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0
|
|
%t137 = load { ptr, i64, i64 }, ptr %t136
|
|
store { ptr, i64, i64 } { ptr @.str.3490, i64 1, i64 0 }, ptr %a139
|
|
store { ptr, i64, i64 } %t137, ptr %a140
|
|
call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140)
|
|
%t141 = load { ptr, i64, i64 }, ptr %a138
|
|
%t142 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t141, 0
|
|
%t143 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t144 = load %S.ast.Type, ptr %t143
|
|
store %S.ast.Type %t144, ptr %a145
|
|
call void @finch.copy.S_ast_Type(ptr %a146, ptr %a145)
|
|
%t147 = load %S.ast.Type, ptr %a146
|
|
%t148 = insertvalue %S.gen.Val %t142, %S.ast.Type %t147, 1
|
|
%t149 = insertvalue %S.gen.Val %t148, i1 true, 3
|
|
ret %S.gen.Val %t149
|
|
endif5352:
|
|
%t150 = load ptr, ptr %a1
|
|
%t151 = load ptr, ptr %a1
|
|
%t152 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t153 = load %S.ast.Type, ptr %t152
|
|
%t154 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t151, %S.ast.Type %t153)
|
|
store { ptr, i64, i64 } { ptr @.str.3491, i64 4, i64 0 }, ptr %a156
|
|
store { ptr, i64, i64 } %t154, ptr %a157
|
|
call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157)
|
|
%t158 = load { ptr, i64, i64 }, ptr %a155
|
|
store { ptr, i64, i64 } %t158, ptr %a160
|
|
store { ptr, i64, i64 } { ptr @.str.3492, i64 4, i64 0 }, ptr %a161
|
|
call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161)
|
|
%t162 = load { ptr, i64, i64 }, ptr %a159
|
|
%t163 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0
|
|
%t164 = load { ptr, i64, i64 }, ptr %t163
|
|
store { ptr, i64, i64 } %t162, ptr %a166
|
|
store { ptr, i64, i64 } %t164, ptr %a167
|
|
call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167)
|
|
%t168 = load { ptr, i64, i64 }, ptr %a165
|
|
%t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t150, { ptr, i64, i64 } %t168)
|
|
%t170 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t169, 0
|
|
%t171 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t172 = load %S.ast.Type, ptr %t171
|
|
store %S.ast.Type %t172, ptr %a173
|
|
call void @finch.copy.S_ast_Type(ptr %a174, ptr %a173)
|
|
%t175 = load %S.ast.Type, ptr %a174
|
|
%t176 = insertvalue %S.gen.Val %t170, %S.ast.Type %t175, 1
|
|
ret %S.gen.Val %t176
|
|
endif5349:
|
|
%t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t178 = load %S.ast.Type, ptr %t177
|
|
%t179 = call i1 @finch.gen.isFloat(%S.ast.Type %t178)
|
|
br i1 %t179, label %then5356, label %endif5358
|
|
then5356:
|
|
%t180 = load ptr, ptr %a1
|
|
%t181 = load ptr, ptr %a1
|
|
%t182 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t183 = load %S.ast.Type, ptr %t182
|
|
%t184 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t181, %S.ast.Type %t183)
|
|
store { ptr, i64, i64 } { ptr @.str.3493, i64 5, i64 0 }, ptr %a186
|
|
store { ptr, i64, i64 } %t184, ptr %a187
|
|
call void @finch_str_concat(ptr %a185, ptr %a186, ptr %a187)
|
|
%t188 = load { ptr, i64, i64 }, ptr %a185
|
|
store { ptr, i64, i64 } %t188, ptr %a190
|
|
store { ptr, i64, i64 } { ptr @.str.3494, i64 1, i64 0 }, ptr %a191
|
|
call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191)
|
|
%t192 = load { ptr, i64, i64 }, ptr %a189
|
|
%t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0
|
|
%t194 = load { ptr, i64, i64 }, ptr %t193
|
|
store { ptr, i64, i64 } %t192, ptr %a196
|
|
store { ptr, i64, i64 } %t194, ptr %a197
|
|
call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197)
|
|
%t198 = load { ptr, i64, i64 }, ptr %a195
|
|
%t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t180, { ptr, i64, i64 } %t198)
|
|
%t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0
|
|
%t201 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t202 = load %S.ast.Type, ptr %t201
|
|
store %S.ast.Type %t202, ptr %a203
|
|
call void @finch.copy.S_ast_Type(ptr %a204, ptr %a203)
|
|
%t205 = load %S.ast.Type, ptr %a204
|
|
%t206 = insertvalue %S.gen.Val %t200, %S.ast.Type %t205, 1
|
|
ret %S.gen.Val %t206
|
|
endif5358:
|
|
%t207 = load ptr, ptr %a1
|
|
%t208 = load %S.ast.Node, ptr %a2
|
|
%t209 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1
|
|
%t210 = load %S.ast.Type, ptr %t209
|
|
%t211 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t210)
|
|
store { ptr, i64, i64 } { ptr @.str.3495, i64 26, i64 0 }, ptr %a213
|
|
store { ptr, i64, i64 } %t211, ptr %a214
|
|
call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214)
|
|
%t215 = load { ptr, i64, i64 }, ptr %a212
|
|
call void @finch.gen.fail(ptr %t207, %S.ast.Node %t208, { ptr, i64, i64 } %t215)
|
|
%t216 = load %S.gen.Val, ptr %a12
|
|
store %S.gen.Val %t216, ptr %a217
|
|
call void @finch.copy.S_gen_Val(ptr %a218, ptr %a217)
|
|
%t219 = load %S.gen.Val, ptr %a218
|
|
ret %S.gen.Val %t219
|
|
}
|
|
|
|
define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.gen.Val, align 16
|
|
%a4 = alloca %S.gen.Val, align 16
|
|
%a5 = alloca %S.ast.Node, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.gen.Val %p2, ptr %a3
|
|
store %S.gen.Val %p3, ptr %a4
|
|
store %S.ast.Node %p4, ptr %a5
|
|
%t6 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.3496, i64 11, i64 0 }, ptr %a8
|
|
store { ptr, i64, i64 } %t6, ptr %a9
|
|
call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9)
|
|
%t10 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t10, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.3497, i64 5, i64 0 }, ptr %a13
|
|
call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a11
|
|
%t15 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1
|
|
%t16 = load %S.ast.Type, ptr %t15
|
|
%t17 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t16)
|
|
store { ptr, i64, i64 } %t14, ptr %a19
|
|
store { ptr, i64, i64 } %t17, ptr %a20
|
|
call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
%t23 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1
|
|
%t24 = load %S.ast.Type, ptr %t23
|
|
%t25 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1
|
|
%t26 = load %S.ast.Type, ptr %t25
|
|
%t27 = call i1 @finch.ast.same(%S.ast.Type %t24, %S.ast.Type %t26)
|
|
%t28 = xor i1 %t27, true
|
|
br i1 %t28, label %then5359, label %endif5361
|
|
then5359:
|
|
%t29 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t29, ptr %a31
|
|
store { ptr, i64, i64 } { ptr @.str.3498, i64 5, i64 0 }, ptr %a32
|
|
call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32)
|
|
%t33 = load { ptr, i64, i64 }, ptr %a30
|
|
%t34 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1
|
|
%t35 = load %S.ast.Type, ptr %t34
|
|
%t36 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t35)
|
|
store { ptr, i64, i64 } %t33, ptr %a38
|
|
store { ptr, i64, i64 } %t36, ptr %a39
|
|
call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a37
|
|
store { ptr, i64, i64 } %t40, ptr %a22
|
|
br label %endif5361
|
|
endif5361:
|
|
%t41 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t41, ptr %a42
|
|
store { ptr, i64, i64 } { ptr @.str.3499, i64 1, i64 0 }, ptr %a43
|
|
%t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43)
|
|
%t45 = icmp ne i32 %t44, 0
|
|
br label %logic.from5362
|
|
logic.from5362:
|
|
br i1 %t45, label %logic.rhs5363, label %logic.end5364
|
|
logic.rhs5363:
|
|
%t46 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1
|
|
%t47 = getelementptr inbounds %S.ast.Type, ptr %t46, i32 0, i32 0
|
|
%t48 = load { ptr, i64, i64 }, ptr %t47
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
store { ptr, i64, i64 } { ptr @.str.3500, i64 3, i64 0 }, ptr %a50
|
|
%t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50)
|
|
%t52 = icmp ne i32 %t51, 0
|
|
br label %logic.from5365
|
|
logic.from5365:
|
|
br i1 %t52, label %logic.end5367, label %logic.rhs5366
|
|
logic.rhs5366:
|
|
%t53 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1
|
|
%t54 = getelementptr inbounds %S.ast.Type, ptr %t53, i32 0, i32 0
|
|
%t55 = load { ptr, i64, i64 }, ptr %t54
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
store { ptr, i64, i64 } { ptr @.str.3501, i64 3, i64 0 }, ptr %a57
|
|
%t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57)
|
|
%t59 = icmp ne i32 %t58, 0
|
|
br label %logic.rend5368
|
|
logic.rend5368:
|
|
br label %logic.end5367
|
|
logic.end5367:
|
|
%t60 = phi i1 [ true, %logic.from5365 ], [ %t59, %logic.rend5368 ]
|
|
br label %logic.rend5369
|
|
logic.rend5369:
|
|
br label %logic.end5364
|
|
logic.end5364:
|
|
%t61 = phi i1 [ false, %logic.from5362 ], [ %t60, %logic.rend5369 ]
|
|
br i1 %t61, label %then5370, label %endif5372
|
|
then5370:
|
|
%t62 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t62, ptr %a64
|
|
store { ptr, i64, i64 } { ptr @.str.3502, i64 48, i64 0 }, ptr %a65
|
|
call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65)
|
|
%t66 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t66, ptr %a22
|
|
br label %endif5372
|
|
endif5372:
|
|
%t67 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.3503, i64 1, i64 0 }, ptr %a69
|
|
%t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69)
|
|
%t71 = icmp ne i32 %t70, 0
|
|
br label %logic.from5373
|
|
logic.from5373:
|
|
br i1 %t71, label %logic.end5375, label %logic.rhs5374
|
|
logic.rhs5374:
|
|
%t72 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t72, ptr %a73
|
|
store { ptr, i64, i64 } { ptr @.str.3504, i64 1, i64 0 }, ptr %a74
|
|
%t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74)
|
|
%t76 = icmp ne i32 %t75, 0
|
|
br label %logic.rend5376
|
|
logic.rend5376:
|
|
br label %logic.end5375
|
|
logic.end5375:
|
|
%t77 = phi i1 [ true, %logic.from5373 ], [ %t76, %logic.rend5376 ]
|
|
br label %logic.from5377
|
|
logic.from5377:
|
|
br i1 %t77, label %logic.rhs5378, label %logic.end5379
|
|
logic.rhs5378:
|
|
%t78 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1
|
|
%t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i32 0, i32 0
|
|
%t80 = load { ptr, i64, i64 }, ptr %t79
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.3505, i64 4, i64 0 }, ptr %a82
|
|
%t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82)
|
|
%t84 = icmp ne i32 %t83, 0
|
|
br label %logic.rend5380
|
|
logic.rend5380:
|
|
br label %logic.end5379
|
|
logic.end5379:
|
|
%t85 = phi i1 [ false, %logic.from5377 ], [ %t84, %logic.rend5380 ]
|
|
br i1 %t85, label %then5381, label %else5382
|
|
then5381:
|
|
%t86 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t86, ptr %a87
|
|
store { ptr, i64, i64 } { ptr @.str.3506, i64 1, i64 0 }, ptr %a88
|
|
%t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88)
|
|
%t90 = icmp ne i32 %t89, 0
|
|
br i1 %t90, label %then5384, label %else5385
|
|
then5384:
|
|
%t91 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t91, ptr %a93
|
|
store { ptr, i64, i64 } { ptr @.str.3507, i64 26, i64 0 }, ptr %a94
|
|
call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94)
|
|
%t95 = load { ptr, i64, i64 }, ptr %a92
|
|
store { ptr, i64, i64 } %t95, ptr %a22
|
|
br label %endif5386
|
|
else5385:
|
|
%t96 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t96, ptr %a98
|
|
store { ptr, i64, i64 } { ptr @.str.3508, i64 26, i64 0 }, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
store { ptr, i64, i64 } %t100, ptr %a22
|
|
br label %endif5386
|
|
endif5386:
|
|
br label %endif5383
|
|
else5382:
|
|
%t101 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t101, ptr %a102
|
|
store { ptr, i64, i64 } { ptr @.str.3509, i64 1, i64 0 }, ptr %a103
|
|
%t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103)
|
|
%t105 = icmp ne i32 %t104, 0
|
|
br label %logic.from5387
|
|
logic.from5387:
|
|
br i1 %t105, label %logic.end5389, label %logic.rhs5388
|
|
logic.rhs5388:
|
|
%t106 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t106, ptr %a107
|
|
store { ptr, i64, i64 } { ptr @.str.3510, i64 1, i64 0 }, ptr %a108
|
|
%t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108)
|
|
%t110 = icmp ne i32 %t109, 0
|
|
br label %logic.rend5390
|
|
logic.rend5390:
|
|
br label %logic.end5389
|
|
logic.end5389:
|
|
%t111 = phi i1 [ true, %logic.from5387 ], [ %t110, %logic.rend5390 ]
|
|
br label %logic.from5391
|
|
logic.from5391:
|
|
br i1 %t111, label %logic.end5393, label %logic.rhs5392
|
|
logic.rhs5392:
|
|
%t112 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t112, ptr %a113
|
|
store { ptr, i64, i64 } { ptr @.str.3511, i64 1, i64 0 }, ptr %a114
|
|
%t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114)
|
|
%t116 = icmp ne i32 %t115, 0
|
|
br label %logic.rend5394
|
|
logic.rend5394:
|
|
br label %logic.end5393
|
|
logic.end5393:
|
|
%t117 = phi i1 [ true, %logic.from5391 ], [ %t116, %logic.rend5394 ]
|
|
br label %logic.from5395
|
|
logic.from5395:
|
|
br i1 %t117, label %logic.end5397, label %logic.rhs5396
|
|
logic.rhs5396:
|
|
%t118 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t118, ptr %a119
|
|
store { ptr, i64, i64 } { ptr @.str.3512, i64 2, i64 0 }, ptr %a120
|
|
%t121 = call i32 @finch_str_eq(ptr %a119, ptr %a120)
|
|
%t122 = icmp ne i32 %t121, 0
|
|
br label %logic.rend5398
|
|
logic.rend5398:
|
|
br label %logic.end5397
|
|
logic.end5397:
|
|
%t123 = phi i1 [ true, %logic.from5395 ], [ %t122, %logic.rend5398 ]
|
|
br label %logic.from5399
|
|
logic.from5399:
|
|
br i1 %t123, label %logic.end5401, label %logic.rhs5400
|
|
logic.rhs5400:
|
|
%t124 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t124, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.3513, i64 2, i64 0 }, ptr %a126
|
|
%t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126)
|
|
%t128 = icmp ne i32 %t127, 0
|
|
br label %logic.rend5402
|
|
logic.rend5402:
|
|
br label %logic.end5401
|
|
logic.end5401:
|
|
%t129 = phi i1 [ true, %logic.from5399 ], [ %t128, %logic.rend5402 ]
|
|
br i1 %t129, label %then5403, label %endif5405
|
|
then5403:
|
|
%t130 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t130, ptr %a132
|
|
store { ptr, i64, i64 } { ptr @.str.3514, i64 43, i64 0 }, ptr %a133
|
|
call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133)
|
|
%t134 = load { ptr, i64, i64 }, ptr %a131
|
|
store { ptr, i64, i64 } %t134, ptr %a22
|
|
br label %endif5405
|
|
endif5405:
|
|
br label %endif5383
|
|
endif5383:
|
|
%t135 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1
|
|
%t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i32 0, i32 0
|
|
%t137 = load { ptr, i64, i64 }, ptr %t136
|
|
store { ptr, i64, i64 } %t137, ptr %a138
|
|
store { ptr, i64, i64 } { ptr @.str.3515, i64 6, i64 0 }, ptr %a139
|
|
%t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139)
|
|
%t141 = icmp ne i32 %t140, 0
|
|
br label %logic.from5406
|
|
logic.from5406:
|
|
br i1 %t141, label %logic.end5408, label %logic.rhs5407
|
|
logic.rhs5407:
|
|
%t142 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1
|
|
%t143 = getelementptr inbounds %S.ast.Type, ptr %t142, i32 0, i32 0
|
|
%t144 = load { ptr, i64, i64 }, ptr %t143
|
|
store { ptr, i64, i64 } %t144, ptr %a145
|
|
store { ptr, i64, i64 } { ptr @.str.3516, i64 5, i64 0 }, ptr %a146
|
|
%t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146)
|
|
%t148 = icmp ne i32 %t147, 0
|
|
br label %logic.rend5409
|
|
logic.rend5409:
|
|
br label %logic.end5408
|
|
logic.end5408:
|
|
%t149 = phi i1 [ true, %logic.from5406 ], [ %t148, %logic.rend5409 ]
|
|
br label %logic.from5410
|
|
logic.from5410:
|
|
br i1 %t149, label %logic.rhs5411, label %logic.end5412
|
|
logic.rhs5411:
|
|
%t150 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t150, ptr %a151
|
|
store { ptr, i64, i64 } { ptr @.str.3517, i64 2, i64 0 }, ptr %a152
|
|
%t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152)
|
|
%t154 = icmp ne i32 %t153, 0
|
|
br label %logic.from5413
|
|
logic.from5413:
|
|
br i1 %t154, label %logic.end5415, label %logic.rhs5414
|
|
logic.rhs5414:
|
|
%t155 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t155, ptr %a156
|
|
store { ptr, i64, i64 } { ptr @.str.3518, i64 2, i64 0 }, ptr %a157
|
|
%t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157)
|
|
%t159 = icmp ne i32 %t158, 0
|
|
br label %logic.rend5416
|
|
logic.rend5416:
|
|
br label %logic.end5415
|
|
logic.end5415:
|
|
%t160 = phi i1 [ true, %logic.from5413 ], [ %t159, %logic.rend5416 ]
|
|
br label %logic.rend5417
|
|
logic.rend5417:
|
|
br label %logic.end5412
|
|
logic.end5412:
|
|
%t161 = phi i1 [ false, %logic.from5410 ], [ %t160, %logic.rend5417 ]
|
|
br i1 %t161, label %then5418, label %endif5420
|
|
then5418:
|
|
%t162 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t162, ptr %a164
|
|
store { ptr, i64, i64 } { ptr @.str.3519, i64 31, i64 0 }, ptr %a165
|
|
call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165)
|
|
%t166 = load { ptr, i64, i64 }, ptr %a163
|
|
store { ptr, i64, i64 } %t166, ptr %a22
|
|
br label %endif5420
|
|
endif5420:
|
|
%t167 = load ptr, ptr %a1
|
|
%t168 = load %S.ast.Node, ptr %a5
|
|
%t169 = load { ptr, i64, i64 }, ptr %a22
|
|
call void @finch.gen.fail(ptr %t167, %S.ast.Node %t168, { ptr, i64, i64 } %t169)
|
|
ret void
|
|
}
|
|
|
|
define internal i1 @finch.gen.unify(ptr %p0, ptr %p1, ptr %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca ptr, align 16
|
|
%a3 = alloca ptr, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca %S.ast.Type, align 16
|
|
%a61 = alloca %S.ast.Type, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca %S.ast.Type, align 16
|
|
%a104 = alloca %S.ast.Type, align 16
|
|
%a138 = alloca %S.ast.Type, align 16
|
|
%a139 = alloca %S.ast.Type, align 16
|
|
%a172 = alloca %S.ast.Type, align 16
|
|
%a173 = alloca %S.ast.Type, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store ptr %p1, ptr %a2
|
|
store ptr %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a2
|
|
%t5 = icmp eq ptr %t4, null
|
|
br i1 %t5, label %panic5421, label %ok5422
|
|
panic5421:
|
|
call void @finch_panic(ptr @.str.3520, i64 2944, ptr @.str.3521)
|
|
unreachable
|
|
ok5422:
|
|
%t6 = getelementptr inbounds %S.gen.Val, ptr %t4, i32 0, i32 1
|
|
%t7 = load %S.ast.Type, ptr %t6
|
|
%t8 = load ptr, ptr %a3
|
|
%t9 = icmp eq ptr %t8, null
|
|
br i1 %t9, label %panic5423, label %ok5424
|
|
panic5423:
|
|
call void @finch_panic(ptr @.str.3522, i64 2944, ptr @.str.3523)
|
|
unreachable
|
|
ok5424:
|
|
%t10 = getelementptr inbounds %S.gen.Val, ptr %t8, i32 0, i32 1
|
|
%t11 = load %S.ast.Type, ptr %t10
|
|
%t12 = call i1 @finch.ast.same(%S.ast.Type %t7, %S.ast.Type %t11)
|
|
br i1 %t12, label %then5425, label %endif5427
|
|
then5425:
|
|
ret i1 true
|
|
endif5427:
|
|
%t13 = load ptr, ptr %a2
|
|
%t14 = icmp eq ptr %t13, null
|
|
br i1 %t14, label %panic5428, label %ok5429
|
|
panic5428:
|
|
call void @finch_panic(ptr @.str.3524, i64 2947, ptr @.str.3525)
|
|
unreachable
|
|
ok5429:
|
|
%t15 = getelementptr inbounds %S.gen.Val, ptr %t13, i32 0, i32 1
|
|
%t16 = load %S.ast.Type, ptr %t15
|
|
%t17 = call i1 @finch.gen.isInt(%S.ast.Type %t16)
|
|
br label %logic.from5430
|
|
logic.from5430:
|
|
br i1 %t17, label %logic.rhs5431, label %logic.end5432
|
|
logic.rhs5431:
|
|
%t18 = load ptr, ptr %a3
|
|
%t19 = icmp eq ptr %t18, null
|
|
br i1 %t19, label %panic5433, label %ok5434
|
|
panic5433:
|
|
call void @finch_panic(ptr @.str.3526, i64 2947, ptr @.str.3527)
|
|
unreachable
|
|
ok5434:
|
|
%t20 = getelementptr inbounds %S.gen.Val, ptr %t18, i32 0, i32 1
|
|
%t21 = load %S.ast.Type, ptr %t20
|
|
%t22 = call i1 @finch.gen.isInt(%S.ast.Type %t21)
|
|
br label %logic.rend5435
|
|
logic.rend5435:
|
|
br label %logic.end5432
|
|
logic.end5432:
|
|
%t23 = phi i1 [ false, %logic.from5430 ], [ %t22, %logic.rend5435 ]
|
|
br i1 %t23, label %then5436, label %endif5438
|
|
then5436:
|
|
%t24 = load ptr, ptr %a2
|
|
%t25 = icmp eq ptr %t24, null
|
|
br i1 %t25, label %panic5439, label %ok5440
|
|
panic5439:
|
|
call void @finch_panic(ptr @.str.3528, i64 2950, ptr @.str.3529)
|
|
unreachable
|
|
ok5440:
|
|
%t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3
|
|
%t27 = load i1, ptr %t26
|
|
br label %logic.from5441
|
|
logic.from5441:
|
|
br i1 %t27, label %logic.rhs5442, label %logic.end5443
|
|
logic.rhs5442:
|
|
%t28 = load ptr, ptr %a3
|
|
%t29 = icmp eq ptr %t28, null
|
|
br i1 %t29, label %panic5444, label %ok5445
|
|
panic5444:
|
|
call void @finch_panic(ptr @.str.3530, i64 2950, ptr @.str.3531)
|
|
unreachable
|
|
ok5445:
|
|
%t30 = getelementptr inbounds %S.gen.Val, ptr %t28, i32 0, i32 3
|
|
%t31 = load i1, ptr %t30
|
|
%t32 = xor i1 %t31, true
|
|
br label %logic.rend5446
|
|
logic.rend5446:
|
|
br label %logic.end5443
|
|
logic.end5443:
|
|
%t33 = phi i1 [ false, %logic.from5441 ], [ %t32, %logic.rend5446 ]
|
|
br label %logic.from5447
|
|
logic.from5447:
|
|
br i1 %t33, label %logic.rhs5448, label %logic.end5449
|
|
logic.rhs5448:
|
|
%t34 = load ptr, ptr %a2
|
|
%t35 = icmp eq ptr %t34, null
|
|
br i1 %t35, label %panic5450, label %ok5451
|
|
panic5450:
|
|
call void @finch_panic(ptr @.str.3532, i64 2950, ptr @.str.3533)
|
|
unreachable
|
|
ok5451:
|
|
%t36 = getelementptr inbounds %S.gen.Val, ptr %t34, i32 0, i32 0
|
|
%t37 = load { ptr, i64, i64 }, ptr %t36
|
|
%t38 = load ptr, ptr %a2
|
|
%t39 = icmp eq ptr %t38, null
|
|
br i1 %t39, label %panic5452, label %ok5453
|
|
panic5452:
|
|
call void @finch_panic(ptr @.str.3534, i64 2950, ptr @.str.3535)
|
|
unreachable
|
|
ok5453:
|
|
%t40 = getelementptr inbounds %S.gen.Val, ptr %t38, i32 0, i32 1
|
|
%t41 = load %S.ast.Type, ptr %t40
|
|
%t42 = load ptr, ptr %a3
|
|
%t43 = icmp eq ptr %t42, null
|
|
br i1 %t43, label %panic5454, label %ok5455
|
|
panic5454:
|
|
call void @finch_panic(ptr @.str.3536, i64 2950, ptr @.str.3537)
|
|
unreachable
|
|
ok5455:
|
|
%t44 = getelementptr inbounds %S.gen.Val, ptr %t42, i32 0, i32 1
|
|
%t45 = load %S.ast.Type, ptr %t44
|
|
%t46 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t37, %S.ast.Type %t41, %S.ast.Type %t45)
|
|
br label %logic.rend5456
|
|
logic.rend5456:
|
|
br label %logic.end5449
|
|
logic.end5449:
|
|
%t47 = phi i1 [ false, %logic.from5447 ], [ %t46, %logic.rend5456 ]
|
|
br i1 %t47, label %then5457, label %endif5459
|
|
then5457:
|
|
%t48 = load ptr, ptr %a2
|
|
%t49 = icmp eq ptr %t48, null
|
|
br i1 %t49, label %panic5460, label %ok5461
|
|
panic5460:
|
|
call void @finch_panic(ptr @.str.3538, i64 2951, ptr @.str.3539)
|
|
unreachable
|
|
ok5461:
|
|
%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 %panic5462, label %ok5463
|
|
panic5462:
|
|
call void @finch_panic(ptr @.str.3540, i64 2951, ptr @.str.3541)
|
|
unreachable
|
|
ok5463:
|
|
%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 %panic5464, label %ok5465
|
|
panic5464:
|
|
call void @finch_panic(ptr @.str.3542, i64 2951, ptr @.str.3543)
|
|
unreachable
|
|
ok5465:
|
|
store %S.gen.Val %t64, ptr %t65
|
|
ret i1 true
|
|
endif5459:
|
|
%t67 = load ptr, ptr %a3
|
|
%t68 = icmp eq ptr %t67, null
|
|
br i1 %t68, label %panic5466, label %ok5467
|
|
panic5466:
|
|
call void @finch_panic(ptr @.str.3544, i64 2954, ptr @.str.3545)
|
|
unreachable
|
|
ok5467:
|
|
%t69 = getelementptr inbounds %S.gen.Val, ptr %t67, i32 0, i32 3
|
|
%t70 = load i1, ptr %t69
|
|
br label %logic.from5468
|
|
logic.from5468:
|
|
br i1 %t70, label %logic.rhs5469, label %logic.end5470
|
|
logic.rhs5469:
|
|
%t71 = load ptr, ptr %a2
|
|
%t72 = icmp eq ptr %t71, null
|
|
br i1 %t72, label %panic5471, label %ok5472
|
|
panic5471:
|
|
call void @finch_panic(ptr @.str.3546, i64 2954, ptr @.str.3547)
|
|
unreachable
|
|
ok5472:
|
|
%t73 = getelementptr inbounds %S.gen.Val, ptr %t71, i32 0, i32 3
|
|
%t74 = load i1, ptr %t73
|
|
%t75 = xor i1 %t74, true
|
|
br label %logic.rend5473
|
|
logic.rend5473:
|
|
br label %logic.end5470
|
|
logic.end5470:
|
|
%t76 = phi i1 [ false, %logic.from5468 ], [ %t75, %logic.rend5473 ]
|
|
br label %logic.from5474
|
|
logic.from5474:
|
|
br i1 %t76, label %logic.rhs5475, label %logic.end5476
|
|
logic.rhs5475:
|
|
%t77 = load ptr, ptr %a3
|
|
%t78 = icmp eq ptr %t77, null
|
|
br i1 %t78, label %panic5477, label %ok5478
|
|
panic5477:
|
|
call void @finch_panic(ptr @.str.3548, i64 2954, ptr @.str.3549)
|
|
unreachable
|
|
ok5478:
|
|
%t79 = getelementptr inbounds %S.gen.Val, ptr %t77, i32 0, i32 0
|
|
%t80 = load { ptr, i64, i64 }, ptr %t79
|
|
%t81 = load ptr, ptr %a3
|
|
%t82 = icmp eq ptr %t81, null
|
|
br i1 %t82, label %panic5479, label %ok5480
|
|
panic5479:
|
|
call void @finch_panic(ptr @.str.3550, i64 2954, ptr @.str.3551)
|
|
unreachable
|
|
ok5480:
|
|
%t83 = getelementptr inbounds %S.gen.Val, ptr %t81, i32 0, i32 1
|
|
%t84 = load %S.ast.Type, ptr %t83
|
|
%t85 = load ptr, ptr %a2
|
|
%t86 = icmp eq ptr %t85, null
|
|
br i1 %t86, label %panic5481, label %ok5482
|
|
panic5481:
|
|
call void @finch_panic(ptr @.str.3552, i64 2954, ptr @.str.3553)
|
|
unreachable
|
|
ok5482:
|
|
%t87 = getelementptr inbounds %S.gen.Val, ptr %t85, i32 0, i32 1
|
|
%t88 = load %S.ast.Type, ptr %t87
|
|
%t89 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t80, %S.ast.Type %t84, %S.ast.Type %t88)
|
|
br label %logic.rend5483
|
|
logic.rend5483:
|
|
br label %logic.end5476
|
|
logic.end5476:
|
|
%t90 = phi i1 [ false, %logic.from5474 ], [ %t89, %logic.rend5483 ]
|
|
br i1 %t90, label %then5484, label %endif5486
|
|
then5484:
|
|
%t91 = load ptr, ptr %a3
|
|
%t92 = icmp eq ptr %t91, null
|
|
br i1 %t92, label %panic5487, label %ok5488
|
|
panic5487:
|
|
call void @finch_panic(ptr @.str.3554, i64 2955, ptr @.str.3555)
|
|
unreachable
|
|
ok5488:
|
|
%t93 = getelementptr inbounds %S.gen.Val, ptr %t91, i32 0, i32 0
|
|
%t94 = load { ptr, i64, i64 }, ptr %t93
|
|
store { ptr, i64, i64 } %t94, ptr %a95
|
|
call void @finch_str_copy(ptr %a96, ptr %a95)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a96
|
|
%t98 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0
|
|
%t99 = load ptr, ptr %a2
|
|
%t100 = icmp eq ptr %t99, null
|
|
br i1 %t100, label %panic5489, label %ok5490
|
|
panic5489:
|
|
call void @finch_panic(ptr @.str.3556, i64 2955, ptr @.str.3557)
|
|
unreachable
|
|
ok5490:
|
|
%t101 = getelementptr inbounds %S.gen.Val, ptr %t99, i32 0, i32 1
|
|
%t102 = load %S.ast.Type, ptr %t101
|
|
store %S.ast.Type %t102, ptr %a103
|
|
call void @finch.copy.S_ast_Type(ptr %a104, ptr %a103)
|
|
%t105 = load %S.ast.Type, ptr %a104
|
|
%t106 = insertvalue %S.gen.Val %t98, %S.ast.Type %t105, 1
|
|
%t107 = insertvalue %S.gen.Val %t106, i1 true, 3
|
|
%t108 = load ptr, ptr %a3
|
|
%t109 = icmp eq ptr %t108, null
|
|
br i1 %t109, label %panic5491, label %ok5492
|
|
panic5491:
|
|
call void @finch_panic(ptr @.str.3558, i64 2955, ptr @.str.3559)
|
|
unreachable
|
|
ok5492:
|
|
store %S.gen.Val %t107, ptr %t108
|
|
ret i1 true
|
|
endif5486:
|
|
%t110 = load ptr, ptr %a2
|
|
%t111 = icmp eq ptr %t110, null
|
|
br i1 %t111, label %panic5493, label %ok5494
|
|
panic5493:
|
|
call void @finch_panic(ptr @.str.3560, i64 2958, ptr @.str.3561)
|
|
unreachable
|
|
ok5494:
|
|
%t112 = getelementptr inbounds %S.gen.Val, ptr %t110, i32 0, i32 1
|
|
%t113 = load %S.ast.Type, ptr %t112
|
|
%t114 = load ptr, ptr %a3
|
|
%t115 = icmp eq ptr %t114, null
|
|
br i1 %t115, label %panic5495, label %ok5496
|
|
panic5495:
|
|
call void @finch_panic(ptr @.str.3562, i64 2958, ptr @.str.3563)
|
|
unreachable
|
|
ok5496:
|
|
%t116 = getelementptr inbounds %S.gen.Val, ptr %t114, i32 0, i32 1
|
|
%t117 = load %S.ast.Type, ptr %t116
|
|
%t118 = call i1 @finch.gen.widens(%S.ast.Type %t113, %S.ast.Type %t117)
|
|
br i1 %t118, label %then5497, label %endif5499
|
|
then5497:
|
|
%t119 = load ptr, ptr %a1
|
|
%t120 = load ptr, ptr %a2
|
|
%t121 = icmp eq ptr %t120, null
|
|
br i1 %t121, label %panic5500, label %ok5501
|
|
panic5500:
|
|
call void @finch_panic(ptr @.str.3564, i64 2959, ptr @.str.3565)
|
|
unreachable
|
|
ok5501:
|
|
%t122 = getelementptr inbounds %S.gen.Val, ptr %t120, i32 0, i32 0
|
|
%t123 = load { ptr, i64, i64 }, ptr %t122
|
|
%t124 = load ptr, ptr %a2
|
|
%t125 = icmp eq ptr %t124, null
|
|
br i1 %t125, label %panic5502, label %ok5503
|
|
panic5502:
|
|
call void @finch_panic(ptr @.str.3566, i64 2959, ptr @.str.3567)
|
|
unreachable
|
|
ok5503:
|
|
%t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 1
|
|
%t127 = load %S.ast.Type, ptr %t126
|
|
%t128 = load ptr, ptr %a3
|
|
%t129 = icmp eq ptr %t128, null
|
|
br i1 %t129, label %panic5504, label %ok5505
|
|
panic5504:
|
|
call void @finch_panic(ptr @.str.3568, i64 2959, ptr @.str.3569)
|
|
unreachable
|
|
ok5505:
|
|
%t130 = getelementptr inbounds %S.gen.Val, ptr %t128, i32 0, i32 1
|
|
%t131 = load %S.ast.Type, ptr %t130
|
|
%t132 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t119, { ptr, i64, i64 } %t123, %S.ast.Type %t127, %S.ast.Type %t131)
|
|
%t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t132, 0
|
|
%t134 = load ptr, ptr %a3
|
|
%t135 = icmp eq ptr %t134, null
|
|
br i1 %t135, label %panic5506, label %ok5507
|
|
panic5506:
|
|
call void @finch_panic(ptr @.str.3570, i64 2959, ptr @.str.3571)
|
|
unreachable
|
|
ok5507:
|
|
%t136 = getelementptr inbounds %S.gen.Val, ptr %t134, i32 0, i32 1
|
|
%t137 = load %S.ast.Type, ptr %t136
|
|
store %S.ast.Type %t137, ptr %a138
|
|
call void @finch.copy.S_ast_Type(ptr %a139, ptr %a138)
|
|
%t140 = load %S.ast.Type, ptr %a139
|
|
%t141 = insertvalue %S.gen.Val %t133, %S.ast.Type %t140, 1
|
|
%t142 = load ptr, ptr %a2
|
|
%t143 = icmp eq ptr %t142, null
|
|
br i1 %t143, label %panic5508, label %ok5509
|
|
panic5508:
|
|
call void @finch_panic(ptr @.str.3572, i64 2959, ptr @.str.3573)
|
|
unreachable
|
|
ok5509:
|
|
store %S.gen.Val %t141, ptr %t142
|
|
ret i1 true
|
|
endif5499:
|
|
%t144 = load ptr, ptr %a3
|
|
%t145 = icmp eq ptr %t144, null
|
|
br i1 %t145, label %panic5510, label %ok5511
|
|
panic5510:
|
|
call void @finch_panic(ptr @.str.3574, i64 2962, ptr @.str.3575)
|
|
unreachable
|
|
ok5511:
|
|
%t146 = getelementptr inbounds %S.gen.Val, ptr %t144, i32 0, i32 1
|
|
%t147 = load %S.ast.Type, ptr %t146
|
|
%t148 = load ptr, ptr %a2
|
|
%t149 = icmp eq ptr %t148, null
|
|
br i1 %t149, label %panic5512, label %ok5513
|
|
panic5512:
|
|
call void @finch_panic(ptr @.str.3576, i64 2962, ptr @.str.3577)
|
|
unreachable
|
|
ok5513:
|
|
%t150 = getelementptr inbounds %S.gen.Val, ptr %t148, i32 0, i32 1
|
|
%t151 = load %S.ast.Type, ptr %t150
|
|
%t152 = call i1 @finch.gen.widens(%S.ast.Type %t147, %S.ast.Type %t151)
|
|
br i1 %t152, label %then5514, label %endif5516
|
|
then5514:
|
|
%t153 = load ptr, ptr %a1
|
|
%t154 = load ptr, ptr %a3
|
|
%t155 = icmp eq ptr %t154, null
|
|
br i1 %t155, label %panic5517, label %ok5518
|
|
panic5517:
|
|
call void @finch_panic(ptr @.str.3578, i64 2963, ptr @.str.3579)
|
|
unreachable
|
|
ok5518:
|
|
%t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 0
|
|
%t157 = load { ptr, i64, i64 }, ptr %t156
|
|
%t158 = load ptr, ptr %a3
|
|
%t159 = icmp eq ptr %t158, null
|
|
br i1 %t159, label %panic5519, label %ok5520
|
|
panic5519:
|
|
call void @finch_panic(ptr @.str.3580, i64 2963, ptr @.str.3581)
|
|
unreachable
|
|
ok5520:
|
|
%t160 = getelementptr inbounds %S.gen.Val, ptr %t158, i32 0, i32 1
|
|
%t161 = load %S.ast.Type, ptr %t160
|
|
%t162 = load ptr, ptr %a2
|
|
%t163 = icmp eq ptr %t162, null
|
|
br i1 %t163, label %panic5521, label %ok5522
|
|
panic5521:
|
|
call void @finch_panic(ptr @.str.3582, i64 2963, ptr @.str.3583)
|
|
unreachable
|
|
ok5522:
|
|
%t164 = getelementptr inbounds %S.gen.Val, ptr %t162, i32 0, i32 1
|
|
%t165 = load %S.ast.Type, ptr %t164
|
|
%t166 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t153, { ptr, i64, i64 } %t157, %S.ast.Type %t161, %S.ast.Type %t165)
|
|
%t167 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t166, 0
|
|
%t168 = load ptr, ptr %a2
|
|
%t169 = icmp eq ptr %t168, null
|
|
br i1 %t169, label %panic5523, label %ok5524
|
|
panic5523:
|
|
call void @finch_panic(ptr @.str.3584, i64 2963, ptr @.str.3585)
|
|
unreachable
|
|
ok5524:
|
|
%t170 = getelementptr inbounds %S.gen.Val, ptr %t168, i32 0, i32 1
|
|
%t171 = load %S.ast.Type, ptr %t170
|
|
store %S.ast.Type %t171, ptr %a172
|
|
call void @finch.copy.S_ast_Type(ptr %a173, ptr %a172)
|
|
%t174 = load %S.ast.Type, ptr %a173
|
|
%t175 = insertvalue %S.gen.Val %t167, %S.ast.Type %t174, 1
|
|
%t176 = load ptr, ptr %a3
|
|
%t177 = icmp eq ptr %t176, null
|
|
br i1 %t177, label %panic5525, label %ok5526
|
|
panic5525:
|
|
call void @finch_panic(ptr @.str.3586, i64 2963, ptr @.str.3587)
|
|
unreachable
|
|
ok5526:
|
|
store %S.gen.Val %t175, ptr %t176
|
|
ret i1 true
|
|
endif5516:
|
|
ret i1 false
|
|
endif5438:
|
|
%t178 = load ptr, ptr %a2
|
|
%t179 = icmp eq ptr %t178, null
|
|
br i1 %t179, label %panic5527, label %ok5528
|
|
panic5527:
|
|
call void @finch_panic(ptr @.str.3588, i64 2968, ptr @.str.3589)
|
|
unreachable
|
|
ok5528:
|
|
%t180 = getelementptr inbounds %S.gen.Val, ptr %t178, i32 0, i32 1
|
|
%t181 = load %S.ast.Type, ptr %t180
|
|
%t182 = call i1 @finch.gen.isInt(%S.ast.Type %t181)
|
|
br label %logic.from5529
|
|
logic.from5529:
|
|
br i1 %t182, label %logic.rhs5530, label %logic.end5531
|
|
logic.rhs5530:
|
|
%t183 = load ptr, ptr %a3
|
|
%t184 = icmp eq ptr %t183, null
|
|
br i1 %t184, label %panic5532, label %ok5533
|
|
panic5532:
|
|
call void @finch_panic(ptr @.str.3590, i64 2968, ptr @.str.3591)
|
|
unreachable
|
|
ok5533:
|
|
%t185 = getelementptr inbounds %S.gen.Val, ptr %t183, i32 0, i32 1
|
|
%t186 = load %S.ast.Type, ptr %t185
|
|
%t187 = call i1 @finch.gen.isFloat(%S.ast.Type %t186)
|
|
br label %logic.rend5534
|
|
logic.rend5534:
|
|
br label %logic.end5531
|
|
logic.end5531:
|
|
%t188 = phi i1 [ false, %logic.from5529 ], [ %t187, %logic.rend5534 ]
|
|
br i1 %t188, label %then5535, label %endif5537
|
|
then5535:
|
|
%t189 = load ptr, ptr %a1
|
|
%t190 = load ptr, ptr %a2
|
|
%t191 = icmp eq ptr %t190, null
|
|
br i1 %t191, label %panic5538, label %ok5539
|
|
panic5538:
|
|
call void @finch_panic(ptr @.str.3592, i64 2969, ptr @.str.3593)
|
|
unreachable
|
|
ok5539:
|
|
%t192 = load %S.gen.Val, ptr %t190
|
|
%t193 = load ptr, ptr %a3
|
|
%t194 = icmp eq ptr %t193, null
|
|
br i1 %t194, label %panic5540, label %ok5541
|
|
panic5540:
|
|
call void @finch_panic(ptr @.str.3594, i64 2969, ptr @.str.3595)
|
|
unreachable
|
|
ok5541:
|
|
%t195 = getelementptr inbounds %S.gen.Val, ptr %t193, i32 0, i32 1
|
|
%t196 = load %S.ast.Type, ptr %t195
|
|
%t197 = call %S.ast.Node @finch.gen.Node0()
|
|
%t198 = call %S.gen.Val @finch.gen.coerce(ptr %t189, %S.gen.Val %t192, %S.ast.Type %t196, %S.ast.Node %t197, { ptr, i64, i64 } { ptr @.str.3596, i64 0, i64 0 })
|
|
%t199 = load ptr, ptr %a2
|
|
%t200 = icmp eq ptr %t199, null
|
|
br i1 %t200, label %panic5542, label %ok5543
|
|
panic5542:
|
|
call void @finch_panic(ptr @.str.3597, i64 2969, ptr @.str.3598)
|
|
unreachable
|
|
ok5543:
|
|
store %S.gen.Val %t198, ptr %t199
|
|
ret i1 true
|
|
endif5537:
|
|
%t201 = load ptr, ptr %a2
|
|
%t202 = icmp eq ptr %t201, null
|
|
br i1 %t202, label %panic5544, label %ok5545
|
|
panic5544:
|
|
call void @finch_panic(ptr @.str.3599, i64 2972, ptr @.str.3600)
|
|
unreachable
|
|
ok5545:
|
|
%t203 = getelementptr inbounds %S.gen.Val, ptr %t201, i32 0, i32 1
|
|
%t204 = load %S.ast.Type, ptr %t203
|
|
%t205 = call i1 @finch.gen.isFloat(%S.ast.Type %t204)
|
|
br label %logic.from5546
|
|
logic.from5546:
|
|
br i1 %t205, label %logic.rhs5547, label %logic.end5548
|
|
logic.rhs5547:
|
|
%t206 = load ptr, ptr %a3
|
|
%t207 = icmp eq ptr %t206, null
|
|
br i1 %t207, label %panic5549, label %ok5550
|
|
panic5549:
|
|
call void @finch_panic(ptr @.str.3601, i64 2972, ptr @.str.3602)
|
|
unreachable
|
|
ok5550:
|
|
%t208 = getelementptr inbounds %S.gen.Val, ptr %t206, i32 0, i32 1
|
|
%t209 = load %S.ast.Type, ptr %t208
|
|
%t210 = call i1 @finch.gen.isInt(%S.ast.Type %t209)
|
|
br label %logic.rend5551
|
|
logic.rend5551:
|
|
br label %logic.end5548
|
|
logic.end5548:
|
|
%t211 = phi i1 [ false, %logic.from5546 ], [ %t210, %logic.rend5551 ]
|
|
br i1 %t211, label %then5552, label %endif5554
|
|
then5552:
|
|
%t212 = load ptr, ptr %a1
|
|
%t213 = load ptr, ptr %a3
|
|
%t214 = icmp eq ptr %t213, null
|
|
br i1 %t214, label %panic5555, label %ok5556
|
|
panic5555:
|
|
call void @finch_panic(ptr @.str.3603, i64 2973, ptr @.str.3604)
|
|
unreachable
|
|
ok5556:
|
|
%t215 = load %S.gen.Val, ptr %t213
|
|
%t216 = load ptr, ptr %a2
|
|
%t217 = icmp eq ptr %t216, null
|
|
br i1 %t217, label %panic5557, label %ok5558
|
|
panic5557:
|
|
call void @finch_panic(ptr @.str.3605, i64 2973, ptr @.str.3606)
|
|
unreachable
|
|
ok5558:
|
|
%t218 = getelementptr inbounds %S.gen.Val, ptr %t216, i32 0, i32 1
|
|
%t219 = load %S.ast.Type, ptr %t218
|
|
%t220 = call %S.ast.Node @finch.gen.Node0()
|
|
%t221 = call %S.gen.Val @finch.gen.coerce(ptr %t212, %S.gen.Val %t215, %S.ast.Type %t219, %S.ast.Node %t220, { ptr, i64, i64 } { ptr @.str.3607, i64 0, i64 0 })
|
|
%t222 = load ptr, ptr %a3
|
|
%t223 = icmp eq ptr %t222, null
|
|
br i1 %t223, label %panic5559, label %ok5560
|
|
panic5559:
|
|
call void @finch_panic(ptr @.str.3608, i64 2973, ptr @.str.3609)
|
|
unreachable
|
|
ok5560:
|
|
store %S.gen.Val %t221, ptr %t222
|
|
ret i1 true
|
|
endif5554:
|
|
%t224 = load ptr, ptr %a2
|
|
%t225 = icmp eq ptr %t224, null
|
|
br i1 %t225, label %panic5561, label %ok5562
|
|
panic5561:
|
|
call void @finch_panic(ptr @.str.3610, i64 2976, ptr @.str.3611)
|
|
unreachable
|
|
ok5562:
|
|
%t226 = getelementptr inbounds %S.gen.Val, ptr %t224, i32 0, i32 1
|
|
%t227 = load %S.ast.Type, ptr %t226
|
|
%t228 = call i1 @finch.gen.isFloat(%S.ast.Type %t227)
|
|
br label %logic.from5563
|
|
logic.from5563:
|
|
br i1 %t228, label %logic.rhs5564, label %logic.end5565
|
|
logic.rhs5564:
|
|
%t229 = load ptr, ptr %a3
|
|
%t230 = icmp eq ptr %t229, null
|
|
br i1 %t230, label %panic5566, label %ok5567
|
|
panic5566:
|
|
call void @finch_panic(ptr @.str.3612, i64 2976, ptr @.str.3613)
|
|
unreachable
|
|
ok5567:
|
|
%t231 = getelementptr inbounds %S.gen.Val, ptr %t229, i32 0, i32 1
|
|
%t232 = load %S.ast.Type, ptr %t231
|
|
%t233 = call i1 @finch.gen.isFloat(%S.ast.Type %t232)
|
|
br label %logic.rend5568
|
|
logic.rend5568:
|
|
br label %logic.end5565
|
|
logic.end5565:
|
|
%t234 = phi i1 [ false, %logic.from5563 ], [ %t233, %logic.rend5568 ]
|
|
br i1 %t234, label %then5569, label %endif5571
|
|
then5569:
|
|
%t235 = load ptr, ptr %a2
|
|
%t236 = icmp eq ptr %t235, null
|
|
br i1 %t236, label %panic5572, label %ok5573
|
|
panic5572:
|
|
call void @finch_panic(ptr @.str.3614, i64 2977, ptr @.str.3615)
|
|
unreachable
|
|
ok5573:
|
|
%t237 = getelementptr inbounds %S.gen.Val, ptr %t235, i32 0, i32 1
|
|
%t238 = getelementptr inbounds %S.ast.Type, ptr %t237, i32 0, i32 0
|
|
%t239 = load { ptr, i64, i64 }, ptr %t238
|
|
store { ptr, i64, i64 } %t239, ptr %a240
|
|
store { ptr, i64, i64 } { ptr @.str.3616, i64 3, i64 0 }, ptr %a241
|
|
%t242 = call i32 @finch_str_eq(ptr %a240, ptr %a241)
|
|
%t243 = icmp ne i32 %t242, 0
|
|
br i1 %t243, label %then5574, label %endif5576
|
|
then5574:
|
|
%t244 = load ptr, ptr %a1
|
|
%t245 = load ptr, ptr %a2
|
|
%t246 = icmp eq ptr %t245, null
|
|
br i1 %t246, label %panic5577, label %ok5578
|
|
panic5577:
|
|
call void @finch_panic(ptr @.str.3617, i64 2978, ptr @.str.3618)
|
|
unreachable
|
|
ok5578:
|
|
%t247 = getelementptr inbounds %S.gen.Val, ptr %t245, i32 0, i32 0
|
|
%t248 = load { ptr, i64, i64 }, ptr %t247
|
|
%t249 = load ptr, ptr %a2
|
|
%t250 = icmp eq ptr %t249, null
|
|
br i1 %t250, label %panic5579, label %ok5580
|
|
panic5579:
|
|
call void @finch_panic(ptr @.str.3619, i64 2978, ptr @.str.3620)
|
|
unreachable
|
|
ok5580:
|
|
%t251 = getelementptr inbounds %S.gen.Val, ptr %t249, i32 0, i32 1
|
|
%t252 = load %S.ast.Type, ptr %t251
|
|
%t253 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3621, i64 5, i64 0 })
|
|
%t254 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t244, { ptr, i64, i64 } %t248, %S.ast.Type %t252, %S.ast.Type %t253)
|
|
%t255 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t254, 0
|
|
%t256 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3622, i64 5, i64 0 })
|
|
%t257 = insertvalue %S.gen.Val %t255, %S.ast.Type %t256, 1
|
|
%t258 = load ptr, ptr %a2
|
|
%t259 = icmp eq ptr %t258, null
|
|
br i1 %t259, label %panic5581, label %ok5582
|
|
panic5581:
|
|
call void @finch_panic(ptr @.str.3623, i64 2978, ptr @.str.3624)
|
|
unreachable
|
|
ok5582:
|
|
store %S.gen.Val %t257, ptr %t258
|
|
br label %endif5576
|
|
endif5576:
|
|
%t260 = load ptr, ptr %a3
|
|
%t261 = icmp eq ptr %t260, null
|
|
br i1 %t261, label %panic5583, label %ok5584
|
|
panic5583:
|
|
call void @finch_panic(ptr @.str.3625, i64 2980, ptr @.str.3626)
|
|
unreachable
|
|
ok5584:
|
|
%t262 = getelementptr inbounds %S.gen.Val, ptr %t260, i32 0, i32 1
|
|
%t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i32 0, i32 0
|
|
%t264 = load { ptr, i64, i64 }, ptr %t263
|
|
store { ptr, i64, i64 } %t264, ptr %a265
|
|
store { ptr, i64, i64 } { ptr @.str.3627, i64 3, i64 0 }, ptr %a266
|
|
%t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266)
|
|
%t268 = icmp ne i32 %t267, 0
|
|
br i1 %t268, label %then5585, label %endif5587
|
|
then5585:
|
|
%t269 = load ptr, ptr %a1
|
|
%t270 = load ptr, ptr %a3
|
|
%t271 = icmp eq ptr %t270, null
|
|
br i1 %t271, label %panic5588, label %ok5589
|
|
panic5588:
|
|
call void @finch_panic(ptr @.str.3628, i64 2981, ptr @.str.3629)
|
|
unreachable
|
|
ok5589:
|
|
%t272 = getelementptr inbounds %S.gen.Val, ptr %t270, i32 0, i32 0
|
|
%t273 = load { ptr, i64, i64 }, ptr %t272
|
|
%t274 = load ptr, ptr %a3
|
|
%t275 = icmp eq ptr %t274, null
|
|
br i1 %t275, label %panic5590, label %ok5591
|
|
panic5590:
|
|
call void @finch_panic(ptr @.str.3630, i64 2981, ptr @.str.3631)
|
|
unreachable
|
|
ok5591:
|
|
%t276 = getelementptr inbounds %S.gen.Val, ptr %t274, i32 0, i32 1
|
|
%t277 = load %S.ast.Type, ptr %t276
|
|
%t278 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3632, i64 5, i64 0 })
|
|
%t279 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t269, { ptr, i64, i64 } %t273, %S.ast.Type %t277, %S.ast.Type %t278)
|
|
%t280 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t279, 0
|
|
%t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3633, i64 5, i64 0 })
|
|
%t282 = insertvalue %S.gen.Val %t280, %S.ast.Type %t281, 1
|
|
%t283 = load ptr, ptr %a3
|
|
%t284 = icmp eq ptr %t283, null
|
|
br i1 %t284, label %panic5592, label %ok5593
|
|
panic5592:
|
|
call void @finch_panic(ptr @.str.3634, i64 2981, ptr @.str.3635)
|
|
unreachable
|
|
ok5593:
|
|
store %S.gen.Val %t282, ptr %t283
|
|
br label %endif5587
|
|
endif5587:
|
|
ret i1 true
|
|
endif5571:
|
|
ret i1 false
|
|
}
|
|
|
|
define internal %S.ast.Node @finch.gen.Node0() {
|
|
entry:
|
|
|
|
ret %S.ast.Node zeroinitializer
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.arith(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.gen.Val, align 16
|
|
%a4 = alloca %S.gen.Val, align 16
|
|
%a6 = alloca %S.gen.Val, align 16
|
|
%a7 = alloca %S.gen.Val, align 16
|
|
%a8 = alloca %S.gen.Val, align 16
|
|
%a10 = alloca %S.gen.Val, align 16
|
|
%a11 = alloca %S.ast.Node, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca i64, align 16
|
|
%a141 = alloca i64, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca i64, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a231 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a237 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a242 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a247 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca %S.ast.Type, align 16
|
|
%a255 = alloca %S.ast.Type, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca i64, align 16
|
|
%a288 = alloca i64, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca i64, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a316 = alloca { ptr, i64, i64 }, align 16
|
|
%a317 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a328 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a335 = alloca { ptr, i64, i64 }, align 16
|
|
%a337 = alloca { ptr, i64, i64 }, align 16
|
|
%a338 = alloca { ptr, i64, i64 }, align 16
|
|
%a339 = alloca { ptr, i64, i64 }, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a344 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca { ptr, i64, i64 }, align 16
|
|
%a351 = alloca %S.ast.Type, align 16
|
|
%a352 = alloca %S.ast.Type, align 16
|
|
%a361 = alloca %S.gen.Val, align 16
|
|
%a362 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.gen.Val %p2, ptr %a3
|
|
call void @finch.copy.S_gen_Val(ptr %a4, ptr %a3)
|
|
%t5 = load %S.gen.Val, ptr %a4
|
|
store %S.gen.Val %t5, ptr %a6
|
|
store %S.gen.Val %p3, ptr %a7
|
|
call void @finch.copy.S_gen_Val(ptr %a8, ptr %a7)
|
|
%t9 = load %S.gen.Val, ptr %a8
|
|
store %S.gen.Val %t9, ptr %a10
|
|
store %S.ast.Node %p4, ptr %a11
|
|
%t12 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.3636, i64 1, i64 0 }, ptr %a14
|
|
%t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14)
|
|
%t16 = icmp ne i32 %t15, 0
|
|
br label %logic.from5594
|
|
logic.from5594:
|
|
br i1 %t16, label %logic.rhs5595, label %logic.end5596
|
|
logic.rhs5595:
|
|
%t17 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t18 = getelementptr inbounds %S.ast.Type, ptr %t17, i32 0, i32 0
|
|
%t19 = load { ptr, i64, i64 }, ptr %t18
|
|
store { ptr, i64, i64 } %t19, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.3637, i64 3, i64 0 }, ptr %a21
|
|
%t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21)
|
|
%t23 = icmp ne i32 %t22, 0
|
|
br label %logic.rend5597
|
|
logic.rend5597:
|
|
br label %logic.end5596
|
|
logic.end5596:
|
|
%t24 = phi i1 [ false, %logic.from5594 ], [ %t23, %logic.rend5597 ]
|
|
br label %logic.from5598
|
|
logic.from5598:
|
|
br i1 %t24, label %logic.rhs5599, label %logic.end5600
|
|
logic.rhs5599:
|
|
%t25 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1
|
|
%t26 = getelementptr inbounds %S.ast.Type, ptr %t25, i32 0, i32 0
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
store { ptr, i64, i64 } { ptr @.str.3638, i64 3, i64 0 }, ptr %a29
|
|
%t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29)
|
|
%t31 = icmp ne i32 %t30, 0
|
|
br label %logic.rend5601
|
|
logic.rend5601:
|
|
br label %logic.end5600
|
|
logic.end5600:
|
|
%t32 = phi i1 [ false, %logic.from5598 ], [ %t31, %logic.rend5601 ]
|
|
br i1 %t32, label %then5602, label %endif5604
|
|
then5602:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.3639, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t34, ptr %a35
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.3640, i64 32, i64 0 }, ptr %a39
|
|
store { ptr, i64, i64 } %t37, ptr %a40
|
|
call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a38
|
|
store { ptr, i64, i64 } %t41, ptr %a43
|
|
store { ptr, i64, i64 } { ptr @.str.3641, i64 6, i64 0 }, ptr %a44
|
|
call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44)
|
|
%t45 = load { ptr, i64, i64 }, ptr %a42
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = load %S.gen.Val, ptr %a6
|
|
%t48 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t46, %S.gen.Val %t47)
|
|
store { ptr, i64, i64 } %t45, ptr %a50
|
|
store { ptr, i64, i64 } %t48, ptr %a51
|
|
call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51)
|
|
%t52 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t52, ptr %a54
|
|
store { ptr, i64, i64 } { ptr @.str.3642, i64 6, i64 0 }, ptr %a55
|
|
call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a53
|
|
%t57 = load ptr, ptr %a1
|
|
%t58 = load %S.gen.Val, ptr %a10
|
|
%t59 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t57, %S.gen.Val %t58)
|
|
store { ptr, i64, i64 } %t56, ptr %a61
|
|
store { ptr, i64, i64 } %t59, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
store { ptr, i64, i64 } %t63, ptr %a65
|
|
store { ptr, i64, i64 } { ptr @.str.3643, i64 1, i64 0 }, ptr %a66
|
|
call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a64
|
|
call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t67)
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = load { ptr, i64, i64 }, ptr %a35
|
|
%t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.3644, i64 17, i64 0 }, { ptr, i64, i64 } %t69)
|
|
%t71 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t70, 0
|
|
%t72 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3645, i64 3, i64 0 })
|
|
%t73 = insertvalue %S.gen.Val %t71, %S.ast.Type %t72, 1
|
|
%t74 = insertvalue %S.gen.Val %t73, i1 true, 2
|
|
ret %S.gen.Val %t74
|
|
endif5604:
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = call i1 @finch.gen.unify(ptr %t75, ptr %a6, ptr %a10)
|
|
%t77 = xor i1 %t76, true
|
|
br i1 %t77, label %then5605, label %endif5607
|
|
then5605:
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = load { ptr, i64, i64 }, ptr %a2
|
|
%t80 = load %S.gen.Val, ptr %a6
|
|
%t81 = load %S.gen.Val, ptr %a10
|
|
%t82 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.badOperands(ptr %t78, { ptr, i64, i64 } %t79, %S.gen.Val %t80, %S.gen.Val %t81, %S.ast.Node %t82)
|
|
br label %endif5607
|
|
endif5607:
|
|
%t83 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t84 = load %S.ast.Type, ptr %t83
|
|
%t85 = call i1 @finch.gen.isInt(%S.ast.Type %t84)
|
|
br i1 %t85, label %then5608, label %endif5610
|
|
then5608:
|
|
%t86 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t87 = call ptr @finch_alloc(i64 %t86)
|
|
%t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3646, i64 1, i64 0 }, ptr %t88
|
|
%t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3647, i64 1, i64 0 }, ptr %t89
|
|
%t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3648, i64 1, i64 0 }, ptr %t90
|
|
%t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3649, i64 1, i64 0 }, ptr %t91
|
|
%t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3650, i64 1, i64 0 }, ptr %t92
|
|
%t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.3651, i64 1, i64 0 }, ptr %t93
|
|
%t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.3652, i64 1, i64 0 }, ptr %t94
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.3653, i64 1, i64 0 }, ptr %t95
|
|
%t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.3654, i64 2, i64 0 }, ptr %t96
|
|
%t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.3655, i64 2, i64 0 }, ptr %t97
|
|
%t98 = insertvalue { ptr, i64, i64 } undef, ptr %t87, 0
|
|
%t99 = insertvalue { ptr, i64, i64 } %t98, i64 10, 1
|
|
%t100 = insertvalue { ptr, i64, i64 } %t99, i64 10, 2
|
|
store { ptr, i64, i64 } %t100, ptr %a101
|
|
%t102 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t103 = call ptr @finch_alloc(i64 %t102)
|
|
%t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3656, i64 3, i64 0 }, ptr %t104
|
|
%t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3657, i64 3, i64 0 }, ptr %t105
|
|
%t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3658, i64 3, i64 0 }, ptr %t106
|
|
%t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3659, i64 4, i64 0 }, ptr %t107
|
|
%t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3660, i64 4, i64 0 }, ptr %t108
|
|
%t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.3661, i64 3, i64 0 }, ptr %t109
|
|
%t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.3662, i64 2, i64 0 }, ptr %t110
|
|
%t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.3663, i64 3, i64 0 }, ptr %t111
|
|
%t112 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.3664, i64 3, i64 0 }, ptr %t112
|
|
%t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.3665, i64 4, i64 0 }, ptr %t113
|
|
%t114 = insertvalue { ptr, i64, i64 } undef, ptr %t103, 0
|
|
%t115 = insertvalue { ptr, i64, i64 } %t114, i64 10, 1
|
|
%t116 = insertvalue { ptr, i64, i64 } %t115, i64 10, 2
|
|
store { ptr, i64, i64 } %t116, ptr %a117
|
|
%t118 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t119 = load %S.ast.Type, ptr %t118
|
|
%t120 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t119)
|
|
br i1 %t120, label %then5611, label %endif5613
|
|
then5611:
|
|
%t121 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t122 = call ptr @finch_alloc(i64 %t121)
|
|
%t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3666, i64 3, i64 0 }, ptr %t123
|
|
%t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3667, i64 3, i64 0 }, ptr %t124
|
|
%t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3668, i64 3, i64 0 }, ptr %t125
|
|
%t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3669, i64 4, i64 0 }, ptr %t126
|
|
%t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3670, i64 4, i64 0 }, ptr %t127
|
|
%t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.3671, i64 3, i64 0 }, ptr %t128
|
|
%t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.3672, i64 2, i64 0 }, ptr %t129
|
|
%t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.3673, i64 3, i64 0 }, ptr %t130
|
|
%t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.3674, i64 3, i64 0 }, ptr %t131
|
|
%t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.3675, i64 4, i64 0 }, ptr %t132
|
|
%t133 = insertvalue { ptr, i64, i64 } undef, ptr %t122, 0
|
|
%t134 = insertvalue { ptr, i64, i64 } %t133, i64 10, 1
|
|
%t135 = insertvalue { ptr, i64, i64 } %t134, i64 10, 2
|
|
store { ptr, i64, i64 } %t135, ptr %a117
|
|
br label %endif5613
|
|
endif5613:
|
|
%t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %a101, i32 0, i32 1
|
|
%t137 = load { ptr, i64, i64 }, ptr %a2
|
|
store i64 -1, ptr %a138
|
|
%t139 = load i64, ptr %t136
|
|
%t140 = load ptr, ptr %a101
|
|
store i64 0, ptr %a141
|
|
br label %find.cond5614
|
|
find.cond5614:
|
|
%t142 = load i64, ptr %a141
|
|
%t143 = icmp slt i64 %t142, %t139
|
|
br i1 %t143, label %find.body5615, label %find.end5618
|
|
find.body5615:
|
|
%t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t140, i64 %t142
|
|
%t145 = load { ptr, i64, i64 }, ptr %t144
|
|
store { ptr, i64, i64 } %t145, ptr %a146
|
|
store { ptr, i64, i64 } %t137, ptr %a147
|
|
%t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147)
|
|
%t149 = icmp ne i32 %t148, 0
|
|
br i1 %t149, label %find.hit5616, label %find.next5617
|
|
find.hit5616:
|
|
store i64 %t142, ptr %a138
|
|
br label %find.end5618
|
|
find.next5617:
|
|
%t150 = add i64 %t142, 1
|
|
store i64 %t150, ptr %a141
|
|
br label %find.cond5614
|
|
find.end5618:
|
|
%t151 = load i64, ptr %a138
|
|
store i64 %t151, ptr %a152
|
|
%t153 = load i64, ptr %a152
|
|
%t154 = icmp slt i64 %t153, 0
|
|
br i1 %t154, label %then5619, label %endif5621
|
|
then5619:
|
|
%t155 = load ptr, ptr %a1
|
|
%t156 = load { ptr, i64, i64 }, ptr %a2
|
|
%t157 = load %S.gen.Val, ptr %a6
|
|
%t158 = load %S.gen.Val, ptr %a10
|
|
%t159 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.badOperands(ptr %t155, { ptr, i64, i64 } %t156, %S.gen.Val %t157, %S.gen.Val %t158, %S.ast.Node %t159)
|
|
br label %endif5621
|
|
endif5621:
|
|
%t160 = load ptr, ptr %a1
|
|
%t161 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t162 = load %S.ast.Type, ptr %t161
|
|
%t163 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t160, %S.ast.Type %t162)
|
|
store { ptr, i64, i64 } %t163, ptr %a164
|
|
%t165 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t165, ptr %a166
|
|
store { ptr, i64, i64 } { ptr @.str.3676, i64 1, i64 0 }, ptr %a167
|
|
%t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167)
|
|
%t169 = icmp ne i32 %t168, 0
|
|
br label %logic.from5622
|
|
logic.from5622:
|
|
br i1 %t169, label %logic.end5624, label %logic.rhs5623
|
|
logic.rhs5623:
|
|
%t170 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t170, ptr %a171
|
|
store { ptr, i64, i64 } { ptr @.str.3677, i64 1, i64 0 }, ptr %a172
|
|
%t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172)
|
|
%t174 = icmp ne i32 %t173, 0
|
|
br label %logic.rend5625
|
|
logic.rend5625:
|
|
br label %logic.end5624
|
|
logic.end5624:
|
|
%t175 = phi i1 [ true, %logic.from5622 ], [ %t174, %logic.rend5625 ]
|
|
br i1 %t175, label %then5626, label %endif5628
|
|
then5626:
|
|
%t176 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3
|
|
%t177 = load i1, ptr %t176
|
|
br label %logic.from5629
|
|
logic.from5629:
|
|
br i1 %t177, label %logic.rhs5630, label %logic.end5631
|
|
logic.rhs5630:
|
|
%t178 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0
|
|
%t179 = load { ptr, i64, i64 }, ptr %t178
|
|
store { ptr, i64, i64 } %t179, ptr %a180
|
|
store { ptr, i64, i64 } { ptr @.str.3678, i64 1, i64 0 }, ptr %a181
|
|
%t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181)
|
|
%t183 = icmp ne i32 %t182, 0
|
|
br label %logic.rend5632
|
|
logic.rend5632:
|
|
br label %logic.end5631
|
|
logic.end5631:
|
|
%t184 = phi i1 [ false, %logic.from5629 ], [ %t183, %logic.rend5632 ]
|
|
br i1 %t184, label %then5633, label %endif5635
|
|
then5633:
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.fail(ptr %t185, %S.ast.Node %t186, { ptr, i64, i64 } { ptr @.str.3679, i64 16, i64 0 })
|
|
br label %endif5635
|
|
endif5635:
|
|
%t187 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3
|
|
%t188 = load i1, ptr %t187
|
|
%t189 = xor i1 %t188, true
|
|
br i1 %t189, label %then5636, label %endif5638
|
|
then5636:
|
|
%t190 = load ptr, ptr %a1
|
|
%t191 = load ptr, ptr %a1
|
|
%t192 = load { ptr, i64, i64 }, ptr %a164
|
|
store { ptr, i64, i64 } { ptr @.str.3680, i64 8, i64 0 }, ptr %a194
|
|
store { ptr, i64, i64 } %t192, ptr %a195
|
|
call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195)
|
|
%t196 = load { ptr, i64, i64 }, ptr %a193
|
|
store { ptr, i64, i64 } %t196, ptr %a198
|
|
store { ptr, i64, i64 } { ptr @.str.3681, i64 1, i64 0 }, ptr %a199
|
|
call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199)
|
|
%t200 = load { ptr, i64, i64 }, ptr %a197
|
|
%t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0
|
|
%t202 = load { ptr, i64, i64 }, ptr %t201
|
|
store { ptr, i64, i64 } %t200, ptr %a204
|
|
store { ptr, i64, i64 } %t202, ptr %a205
|
|
call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205)
|
|
%t206 = load { ptr, i64, i64 }, ptr %a203
|
|
store { ptr, i64, i64 } %t206, ptr %a208
|
|
store { ptr, i64, i64 } { ptr @.str.3682, i64 3, i64 0 }, ptr %a209
|
|
call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209)
|
|
%t210 = load { ptr, i64, i64 }, ptr %a207
|
|
%t211 = call { ptr, i64, i64 } @finch.gen.op(ptr %t191, { ptr, i64, i64 } %t210)
|
|
%t212 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.panicIf(ptr %t190, { ptr, i64, i64 } %t211, { ptr, i64, i64 } { ptr @.str.3683, i64 16, i64 0 }, %S.ast.Node %t212)
|
|
br label %endif5638
|
|
endif5638:
|
|
br label %endif5628
|
|
endif5628:
|
|
%t213 = load ptr, ptr %a1
|
|
%t214 = load i64, ptr %a152
|
|
%t215 = load { ptr, i64, i64 }, ptr %a117
|
|
%t216 = extractvalue { ptr, i64, i64 } %t215, 1
|
|
%t217 = icmp uge i64 %t214, %t216
|
|
br i1 %t217, label %range5639, label %inrange5640
|
|
range5639:
|
|
call void @finch_panic_index(ptr @.str.3684, i64 3020, i64 %t214, i64 %t216)
|
|
unreachable
|
|
inrange5640:
|
|
%t218 = extractvalue { ptr, i64, i64 } %t215, 0
|
|
%t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t214
|
|
%t220 = load { ptr, i64, i64 }, ptr %t219
|
|
store { ptr, i64, i64 } %t220, ptr %a222
|
|
store { ptr, i64, i64 } { ptr @.str.3685, i64 1, i64 0 }, ptr %a223
|
|
call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223)
|
|
%t224 = load { ptr, i64, i64 }, ptr %a221
|
|
%t225 = load { ptr, i64, i64 }, ptr %a164
|
|
store { ptr, i64, i64 } %t224, ptr %a227
|
|
store { ptr, i64, i64 } %t225, ptr %a228
|
|
call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228)
|
|
%t229 = load { ptr, i64, i64 }, ptr %a226
|
|
store { ptr, i64, i64 } %t229, ptr %a231
|
|
store { ptr, i64, i64 } { ptr @.str.3686, i64 1, i64 0 }, ptr %a232
|
|
call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232)
|
|
%t233 = load { ptr, i64, i64 }, ptr %a230
|
|
%t234 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0
|
|
%t235 = load { ptr, i64, i64 }, ptr %t234
|
|
store { ptr, i64, i64 } %t233, ptr %a237
|
|
store { ptr, i64, i64 } %t235, ptr %a238
|
|
call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238)
|
|
%t239 = load { ptr, i64, i64 }, ptr %a236
|
|
store { ptr, i64, i64 } %t239, ptr %a241
|
|
store { ptr, i64, i64 } { ptr @.str.3687, i64 2, i64 0 }, ptr %a242
|
|
call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242)
|
|
%t243 = load { ptr, i64, i64 }, ptr %a240
|
|
%t244 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0
|
|
%t245 = load { ptr, i64, i64 }, ptr %t244
|
|
store { ptr, i64, i64 } %t243, ptr %a247
|
|
store { ptr, i64, i64 } %t245, ptr %a248
|
|
call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248)
|
|
%t249 = load { ptr, i64, i64 }, ptr %a246
|
|
%t250 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t249)
|
|
%t251 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t250, 0
|
|
%t252 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t253 = load %S.ast.Type, ptr %t252
|
|
store %S.ast.Type %t253, ptr %a254
|
|
call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254)
|
|
%t256 = load %S.ast.Type, ptr %a255
|
|
%t257 = insertvalue %S.gen.Val %t251, %S.ast.Type %t256, 1
|
|
ret %S.gen.Val %t257
|
|
endif5610:
|
|
%t258 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t259 = load %S.ast.Type, ptr %t258
|
|
%t260 = call i1 @finch.gen.isFloat(%S.ast.Type %t259)
|
|
br i1 %t260, label %then5641, label %endif5643
|
|
then5641:
|
|
%t261 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t262 = call ptr @finch_alloc(i64 %t261)
|
|
%t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3688, i64 1, i64 0 }, ptr %t263
|
|
%t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3689, i64 1, i64 0 }, ptr %t264
|
|
%t265 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3690, i64 1, i64 0 }, ptr %t265
|
|
%t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3691, i64 1, i64 0 }, ptr %t266
|
|
%t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3692, i64 1, i64 0 }, ptr %t267
|
|
%t268 = insertvalue { ptr, i64, i64 } undef, ptr %t262, 0
|
|
%t269 = insertvalue { ptr, i64, i64 } %t268, i64 5, 1
|
|
%t270 = insertvalue { ptr, i64, i64 } %t269, i64 5, 2
|
|
store { ptr, i64, i64 } %t270, ptr %a271
|
|
%t272 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t273 = call ptr @finch_alloc(i64 %t272)
|
|
%t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3693, i64 4, i64 0 }, ptr %t274
|
|
%t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3694, i64 4, i64 0 }, ptr %t275
|
|
%t276 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3695, i64 4, i64 0 }, ptr %t276
|
|
%t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3696, i64 4, i64 0 }, ptr %t277
|
|
%t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3697, i64 4, i64 0 }, ptr %t278
|
|
%t279 = insertvalue { ptr, i64, i64 } undef, ptr %t273, 0
|
|
%t280 = insertvalue { ptr, i64, i64 } %t279, i64 5, 1
|
|
%t281 = insertvalue { ptr, i64, i64 } %t280, i64 5, 2
|
|
store { ptr, i64, i64 } %t281, ptr %a282
|
|
%t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1
|
|
%t284 = load { ptr, i64, i64 }, ptr %a2
|
|
store i64 -1, ptr %a285
|
|
%t286 = load i64, ptr %t283
|
|
%t287 = load ptr, ptr %a271
|
|
store i64 0, ptr %a288
|
|
br label %find.cond5644
|
|
find.cond5644:
|
|
%t289 = load i64, ptr %a288
|
|
%t290 = icmp slt i64 %t289, %t286
|
|
br i1 %t290, label %find.body5645, label %find.end5648
|
|
find.body5645:
|
|
%t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t289
|
|
%t292 = load { ptr, i64, i64 }, ptr %t291
|
|
store { ptr, i64, i64 } %t292, ptr %a293
|
|
store { ptr, i64, i64 } %t284, ptr %a294
|
|
%t295 = call i32 @finch_str_eq(ptr %a293, ptr %a294)
|
|
%t296 = icmp ne i32 %t295, 0
|
|
br i1 %t296, label %find.hit5646, label %find.next5647
|
|
find.hit5646:
|
|
store i64 %t289, ptr %a285
|
|
br label %find.end5648
|
|
find.next5647:
|
|
%t297 = add i64 %t289, 1
|
|
store i64 %t297, ptr %a288
|
|
br label %find.cond5644
|
|
find.end5648:
|
|
%t298 = load i64, ptr %a285
|
|
store i64 %t298, ptr %a299
|
|
%t300 = load i64, ptr %a299
|
|
%t301 = icmp slt i64 %t300, 0
|
|
br i1 %t301, label %then5649, label %endif5651
|
|
then5649:
|
|
%t302 = load ptr, ptr %a1
|
|
%t303 = load { ptr, i64, i64 }, ptr %a2
|
|
%t304 = load %S.gen.Val, ptr %a6
|
|
%t305 = load %S.gen.Val, ptr %a10
|
|
%t306 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.badOperands(ptr %t302, { ptr, i64, i64 } %t303, %S.gen.Val %t304, %S.gen.Val %t305, %S.ast.Node %t306)
|
|
br label %endif5651
|
|
endif5651:
|
|
%t307 = load ptr, ptr %a1
|
|
%t308 = load i64, ptr %a299
|
|
%t309 = load { ptr, i64, i64 }, ptr %a282
|
|
%t310 = extractvalue { ptr, i64, i64 } %t309, 1
|
|
%t311 = icmp uge i64 %t308, %t310
|
|
br i1 %t311, label %range5652, label %inrange5653
|
|
range5652:
|
|
call void @finch_panic_index(ptr @.str.3698, i64 3029, i64 %t308, i64 %t310)
|
|
unreachable
|
|
inrange5653:
|
|
%t312 = extractvalue { ptr, i64, i64 } %t309, 0
|
|
%t313 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t308
|
|
%t314 = load { ptr, i64, i64 }, ptr %t313
|
|
store { ptr, i64, i64 } %t314, ptr %a316
|
|
store { ptr, i64, i64 } { ptr @.str.3699, i64 1, i64 0 }, ptr %a317
|
|
call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317)
|
|
%t318 = load { ptr, i64, i64 }, ptr %a315
|
|
%t319 = load ptr, ptr %a1
|
|
%t320 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t321 = load %S.ast.Type, ptr %t320
|
|
%t322 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t319, %S.ast.Type %t321)
|
|
store { ptr, i64, i64 } %t318, ptr %a324
|
|
store { ptr, i64, i64 } %t322, ptr %a325
|
|
call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325)
|
|
%t326 = load { ptr, i64, i64 }, ptr %a323
|
|
store { ptr, i64, i64 } %t326, ptr %a328
|
|
store { ptr, i64, i64 } { ptr @.str.3700, i64 1, i64 0 }, ptr %a329
|
|
call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329)
|
|
%t330 = load { ptr, i64, i64 }, ptr %a327
|
|
%t331 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0
|
|
%t332 = load { ptr, i64, i64 }, ptr %t331
|
|
store { ptr, i64, i64 } %t330, ptr %a334
|
|
store { ptr, i64, i64 } %t332, ptr %a335
|
|
call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335)
|
|
%t336 = load { ptr, i64, i64 }, ptr %a333
|
|
store { ptr, i64, i64 } %t336, ptr %a338
|
|
store { ptr, i64, i64 } { ptr @.str.3701, i64 2, i64 0 }, ptr %a339
|
|
call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339)
|
|
%t340 = load { ptr, i64, i64 }, ptr %a337
|
|
%t341 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0
|
|
%t342 = load { ptr, i64, i64 }, ptr %t341
|
|
store { ptr, i64, i64 } %t340, ptr %a344
|
|
store { ptr, i64, i64 } %t342, ptr %a345
|
|
call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345)
|
|
%t346 = load { ptr, i64, i64 }, ptr %a343
|
|
%t347 = call { ptr, i64, i64 } @finch.gen.op(ptr %t307, { ptr, i64, i64 } %t346)
|
|
%t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t347, 0
|
|
%t349 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t350 = load %S.ast.Type, ptr %t349
|
|
store %S.ast.Type %t350, ptr %a351
|
|
call void @finch.copy.S_ast_Type(ptr %a352, ptr %a351)
|
|
%t353 = load %S.ast.Type, ptr %a352
|
|
%t354 = insertvalue %S.gen.Val %t348, %S.ast.Type %t353, 1
|
|
ret %S.gen.Val %t354
|
|
endif5643:
|
|
%t355 = load ptr, ptr %a1
|
|
%t356 = load { ptr, i64, i64 }, ptr %a2
|
|
%t357 = load %S.gen.Val, ptr %a6
|
|
%t358 = load %S.gen.Val, ptr %a10
|
|
%t359 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.badOperands(ptr %t355, { ptr, i64, i64 } %t356, %S.gen.Val %t357, %S.gen.Val %t358, %S.ast.Node %t359)
|
|
%t360 = load %S.gen.Val, ptr %a6
|
|
store %S.gen.Val %t360, ptr %a361
|
|
call void @finch.copy.S_gen_Val(ptr %a362, ptr %a361)
|
|
%t363 = load %S.gen.Val, ptr %a362
|
|
ret %S.gen.Val %t363
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.compare(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.gen.Val, align 16
|
|
%a4 = alloca %S.gen.Val, align 16
|
|
%a6 = alloca %S.gen.Val, align 16
|
|
%a7 = alloca %S.gen.Val, align 16
|
|
%a8 = alloca %S.gen.Val, align 16
|
|
%a10 = alloca %S.gen.Val, align 16
|
|
%a11 = alloca %S.ast.Node, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca i1, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca i64, align 16
|
|
%a282 = alloca i64, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca { ptr, i64, i64 }, align 16
|
|
%a301 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca { ptr, i64, i64 }, align 16
|
|
%a304 = alloca { ptr, i64, i64 }, align 16
|
|
%a305 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a316 = alloca { ptr, i64, i64 }, align 16
|
|
%a317 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a348 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a351 = alloca { ptr, i64, i64 }, align 16
|
|
%a356 = alloca { ptr, i64, i64 }, align 16
|
|
%a357 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = alloca { ptr, i64, i64 }, align 16
|
|
%a360 = alloca { ptr, i64, i64 }, align 16
|
|
%a361 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a367 = alloca { ptr, i64, i64 }, align 16
|
|
%a368 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a372 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a377 = alloca { ptr, i64, i64 }, align 16
|
|
%a378 = alloca { ptr, i64, i64 }, align 16
|
|
%a385 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a403 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a428 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a437 = alloca { ptr, i64, i64 }, align 16
|
|
%a438 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a441 = alloca { ptr, i64, i64 }, align 16
|
|
%a442 = alloca { ptr, i64, i64 }, align 16
|
|
%a446 = alloca { ptr, i64, i64 }, align 16
|
|
%a447 = alloca { ptr, i64, i64 }, align 16
|
|
%a448 = alloca { ptr, i64, i64 }, align 16
|
|
%a450 = alloca { ptr, i64, i64 }, align 16
|
|
%a451 = alloca { ptr, i64, i64 }, align 16
|
|
%a452 = alloca { ptr, i64, i64 }, align 16
|
|
%a456 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a458 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.gen.Val %p2, ptr %a3
|
|
call void @finch.copy.S_gen_Val(ptr %a4, ptr %a3)
|
|
%t5 = load %S.gen.Val, ptr %a4
|
|
store %S.gen.Val %t5, ptr %a6
|
|
store %S.gen.Val %p3, ptr %a7
|
|
call void @finch.copy.S_gen_Val(ptr %a8, ptr %a7)
|
|
%t9 = load %S.gen.Val, ptr %a8
|
|
store %S.gen.Val %t9, ptr %a10
|
|
store %S.ast.Node %p4, ptr %a11
|
|
%t12 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.3702, i64 2, i64 0 }, ptr %a14
|
|
%t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14)
|
|
%t16 = icmp ne i32 %t15, 0
|
|
br label %logic.from5654
|
|
logic.from5654:
|
|
br i1 %t16, label %logic.end5656, label %logic.rhs5655
|
|
logic.rhs5655:
|
|
%t17 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.3703, i64 2, i64 0 }, ptr %a19
|
|
%t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19)
|
|
%t21 = icmp ne i32 %t20, 0
|
|
br label %logic.rend5657
|
|
logic.rend5657:
|
|
br label %logic.end5656
|
|
logic.end5656:
|
|
%t22 = phi i1 [ true, %logic.from5654 ], [ %t21, %logic.rend5657 ]
|
|
store i1 %t22, ptr %a23
|
|
%t24 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t25 = getelementptr inbounds %S.ast.Type, ptr %t24, i32 0, i32 0
|
|
%t26 = load { ptr, i64, i64 }, ptr %t25
|
|
store { ptr, i64, i64 } %t26, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.3704, i64 3, i64 0 }, ptr %a28
|
|
%t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28)
|
|
%t30 = icmp ne i32 %t29, 0
|
|
br label %logic.from5658
|
|
logic.from5658:
|
|
br i1 %t30, label %logic.end5660, label %logic.rhs5659
|
|
logic.rhs5659:
|
|
%t31 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1
|
|
%t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i32 0, i32 0
|
|
%t33 = load { ptr, i64, i64 }, ptr %t32
|
|
store { ptr, i64, i64 } %t33, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.3705, i64 3, i64 0 }, ptr %a35
|
|
%t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35)
|
|
%t37 = icmp ne i32 %t36, 0
|
|
br label %logic.rend5661
|
|
logic.rend5661:
|
|
br label %logic.end5660
|
|
logic.end5660:
|
|
%t38 = phi i1 [ true, %logic.from5658 ], [ %t37, %logic.rend5661 ]
|
|
br label %logic.from5662
|
|
logic.from5662:
|
|
br i1 %t38, label %logic.end5664, label %logic.rhs5663
|
|
logic.rhs5663:
|
|
%t39 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t40 = getelementptr inbounds %S.ast.Type, ptr %t39, i32 0, i32 0
|
|
%t41 = load { ptr, i64, i64 }, ptr %t40
|
|
store { ptr, i64, i64 } %t41, ptr %a42
|
|
store { ptr, i64, i64 } { ptr @.str.3706, i64 4, i64 0 }, ptr %a43
|
|
%t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43)
|
|
%t45 = icmp ne i32 %t44, 0
|
|
br label %logic.rend5665
|
|
logic.rend5665:
|
|
br label %logic.end5664
|
|
logic.end5664:
|
|
%t46 = phi i1 [ true, %logic.from5662 ], [ %t45, %logic.rend5665 ]
|
|
br label %logic.from5666
|
|
logic.from5666:
|
|
br i1 %t46, label %logic.end5668, label %logic.rhs5667
|
|
logic.rhs5667:
|
|
%t47 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1
|
|
%t48 = getelementptr inbounds %S.ast.Type, ptr %t47, i32 0, i32 0
|
|
%t49 = load { ptr, i64, i64 }, ptr %t48
|
|
store { ptr, i64, i64 } %t49, ptr %a50
|
|
store { ptr, i64, i64 } { ptr @.str.3707, i64 4, i64 0 }, ptr %a51
|
|
%t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51)
|
|
%t53 = icmp ne i32 %t52, 0
|
|
br label %logic.rend5669
|
|
logic.rend5669:
|
|
br label %logic.end5668
|
|
logic.end5668:
|
|
%t54 = phi i1 [ true, %logic.from5666 ], [ %t53, %logic.rend5669 ]
|
|
br i1 %t54, label %then5670, label %endif5672
|
|
then5670:
|
|
%t55 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t56 = getelementptr inbounds %S.ast.Type, ptr %t55, i32 0, i32 0
|
|
%t57 = load { ptr, i64, i64 }, ptr %t56
|
|
store { ptr, i64, i64 } %t57, ptr %a58
|
|
store { ptr, i64, i64 } { ptr @.str.3708, i64 3, i64 0 }, ptr %a59
|
|
%t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59)
|
|
%t61 = icmp ne i32 %t60, 0
|
|
br label %logic.from5673
|
|
logic.from5673:
|
|
br i1 %t61, label %logic.end5675, label %logic.rhs5674
|
|
logic.rhs5674:
|
|
%t62 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1
|
|
%t63 = getelementptr inbounds %S.ast.Type, ptr %t62, i32 0, i32 0
|
|
%t64 = load { ptr, i64, i64 }, ptr %t63
|
|
store { ptr, i64, i64 } %t64, ptr %a65
|
|
store { ptr, i64, i64 } { ptr @.str.3709, i64 3, i64 0 }, ptr %a66
|
|
%t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66)
|
|
%t68 = icmp ne i32 %t67, 0
|
|
br label %logic.rend5676
|
|
logic.rend5676:
|
|
br label %logic.end5675
|
|
logic.end5675:
|
|
%t69 = phi i1 [ true, %logic.from5673 ], [ %t68, %logic.rend5676 ]
|
|
br i1 %t69, label %then5677, label %endif5679
|
|
then5677:
|
|
%t70 = load ptr, ptr %a1
|
|
%t71 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } { ptr @.str.3710, i64 59, i64 0 })
|
|
br label %endif5679
|
|
endif5679:
|
|
%t72 = load i1, ptr %a23
|
|
%t73 = xor i1 %t72, true
|
|
br i1 %t73, label %then5680, label %endif5682
|
|
then5680:
|
|
%t74 = load ptr, ptr %a1
|
|
%t75 = load { ptr, i64, i64 }, ptr %a2
|
|
%t76 = load %S.gen.Val, ptr %a6
|
|
%t77 = load %S.gen.Val, ptr %a10
|
|
%t78 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.badOperands(ptr %t74, { ptr, i64, i64 } %t75, %S.gen.Val %t76, %S.gen.Val %t77, %S.ast.Node %t78)
|
|
br label %endif5682
|
|
endif5682:
|
|
store { ptr, i64, i64 } { ptr @.str.3711, i64 2, i64 0 }, ptr %a79
|
|
%t80 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.3712, i64 2, i64 0 }, ptr %a82
|
|
%t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82)
|
|
%t84 = icmp ne i32 %t83, 0
|
|
br i1 %t84, label %then5683, label %endif5685
|
|
then5683:
|
|
store { ptr, i64, i64 } { ptr @.str.3713, i64 2, i64 0 }, ptr %a79
|
|
br label %endif5685
|
|
endif5685:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.3714, i64 5, i64 0 }, ptr %a88
|
|
store { ptr, i64, i64 } %t86, ptr %a89
|
|
call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t90, ptr %a92
|
|
store { ptr, i64, i64 } { ptr @.str.3715, i64 5, i64 0 }, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
%t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0
|
|
%t96 = load { ptr, i64, i64 }, ptr %t95
|
|
store { ptr, i64, i64 } %t94, ptr %a98
|
|
store { ptr, i64, i64 } %t96, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
store { ptr, i64, i64 } %t100, ptr %a102
|
|
store { ptr, i64, i64 } { ptr @.str.3716, i64 2, i64 0 }, ptr %a103
|
|
call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103)
|
|
%t104 = load { ptr, i64, i64 }, ptr %a101
|
|
%t105 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0
|
|
%t106 = load { ptr, i64, i64 }, ptr %t105
|
|
store { ptr, i64, i64 } %t104, ptr %a108
|
|
store { ptr, i64, i64 } %t106, ptr %a109
|
|
call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109)
|
|
%t110 = load { ptr, i64, i64 }, ptr %a107
|
|
%t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t85, { ptr, i64, i64 } %t110)
|
|
%t112 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t111, 0
|
|
%t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3717, i64 4, i64 0 })
|
|
%t114 = insertvalue %S.gen.Val %t112, %S.ast.Type %t113, 1
|
|
ret %S.gen.Val %t114
|
|
endif5672:
|
|
%t115 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0
|
|
%t117 = load { ptr, i64, i64 }, ptr %t116
|
|
store { ptr, i64, i64 } %t117, ptr %a118
|
|
store { ptr, i64, i64 } { ptr @.str.3718, i64 3, i64 0 }, ptr %a119
|
|
%t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119)
|
|
%t121 = icmp ne i32 %t120, 0
|
|
br label %logic.from5686
|
|
logic.from5686:
|
|
br i1 %t121, label %logic.rhs5687, label %logic.end5688
|
|
logic.rhs5687:
|
|
%t122 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1
|
|
%t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i32 0, i32 0
|
|
%t124 = load { ptr, i64, i64 }, ptr %t123
|
|
store { ptr, i64, i64 } %t124, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.3719, i64 3, i64 0 }, ptr %a126
|
|
%t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126)
|
|
%t128 = icmp ne i32 %t127, 0
|
|
br label %logic.rend5689
|
|
logic.rend5689:
|
|
br label %logic.end5688
|
|
logic.end5688:
|
|
%t129 = phi i1 [ false, %logic.from5686 ], [ %t128, %logic.rend5689 ]
|
|
br i1 %t129, label %then5690, label %endif5692
|
|
then5690:
|
|
%t130 = load i1, ptr %a23
|
|
br i1 %t130, label %then5693, label %endif5695
|
|
then5693:
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = load ptr, ptr %a1
|
|
%t133 = load %S.gen.Val, ptr %a6
|
|
%t134 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t132, %S.gen.Val %t133)
|
|
store { ptr, i64, i64 } { ptr @.str.3720, i64 27, i64 0 }, ptr %a136
|
|
store { ptr, i64, i64 } %t134, ptr %a137
|
|
call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137)
|
|
%t138 = load { ptr, i64, i64 }, ptr %a135
|
|
store { ptr, i64, i64 } %t138, ptr %a140
|
|
store { ptr, i64, i64 } { ptr @.str.3721, i64 6, i64 0 }, ptr %a141
|
|
call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141)
|
|
%t142 = load { ptr, i64, i64 }, ptr %a139
|
|
%t143 = load ptr, ptr %a1
|
|
%t144 = load %S.gen.Val, ptr %a10
|
|
%t145 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t143, %S.gen.Val %t144)
|
|
store { ptr, i64, i64 } %t142, ptr %a147
|
|
store { ptr, i64, i64 } %t145, ptr %a148
|
|
call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148)
|
|
%t149 = load { ptr, i64, i64 }, ptr %a146
|
|
store { ptr, i64, i64 } %t149, ptr %a151
|
|
store { ptr, i64, i64 } { ptr @.str.3722, i64 1, i64 0 }, ptr %a152
|
|
call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152)
|
|
%t153 = load { ptr, i64, i64 }, ptr %a150
|
|
%t154 = call { ptr, i64, i64 } @finch.gen.op(ptr %t131, { ptr, i64, i64 } %t153)
|
|
store { ptr, i64, i64 } %t154, ptr %a155
|
|
store { ptr, i64, i64 } { ptr @.str.3723, i64 2, i64 0 }, ptr %a156
|
|
%t157 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t157, ptr %a158
|
|
store { ptr, i64, i64 } { ptr @.str.3724, i64 2, i64 0 }, ptr %a159
|
|
%t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159)
|
|
%t161 = icmp ne i32 %t160, 0
|
|
br i1 %t161, label %then5696, label %endif5698
|
|
then5696:
|
|
store { ptr, i64, i64 } { ptr @.str.3725, i64 2, i64 0 }, ptr %a156
|
|
br label %endif5698
|
|
endif5698:
|
|
%t162 = load ptr, ptr %a1
|
|
%t163 = load { ptr, i64, i64 }, ptr %a156
|
|
store { ptr, i64, i64 } { ptr @.str.3726, i64 5, i64 0 }, ptr %a165
|
|
store { ptr, i64, i64 } %t163, ptr %a166
|
|
call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166)
|
|
%t167 = load { ptr, i64, i64 }, ptr %a164
|
|
store { ptr, i64, i64 } %t167, ptr %a169
|
|
store { ptr, i64, i64 } { ptr @.str.3727, i64 5, i64 0 }, ptr %a170
|
|
call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170)
|
|
%t171 = load { ptr, i64, i64 }, ptr %a168
|
|
%t172 = load { ptr, i64, i64 }, ptr %a155
|
|
store { ptr, i64, i64 } %t171, ptr %a174
|
|
store { ptr, i64, i64 } %t172, ptr %a175
|
|
call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175)
|
|
%t176 = load { ptr, i64, i64 }, ptr %a173
|
|
store { ptr, i64, i64 } %t176, ptr %a178
|
|
store { ptr, i64, i64 } { ptr @.str.3728, i64 3, i64 0 }, ptr %a179
|
|
call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179)
|
|
%t180 = load { ptr, i64, i64 }, ptr %a177
|
|
%t181 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t180)
|
|
%t182 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t181, 0
|
|
%t183 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3729, i64 4, i64 0 })
|
|
%t184 = insertvalue %S.gen.Val %t182, %S.ast.Type %t183, 1
|
|
ret %S.gen.Val %t184
|
|
endif5695:
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = load ptr, ptr %a1
|
|
%t187 = load %S.gen.Val, ptr %a6
|
|
%t188 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t186, %S.gen.Val %t187)
|
|
store { ptr, i64, i64 } { ptr @.str.3730, i64 28, i64 0 }, ptr %a190
|
|
store { ptr, i64, i64 } %t188, ptr %a191
|
|
call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191)
|
|
%t192 = load { ptr, i64, i64 }, ptr %a189
|
|
store { ptr, i64, i64 } %t192, ptr %a194
|
|
store { ptr, i64, i64 } { ptr @.str.3731, i64 6, i64 0 }, ptr %a195
|
|
call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195)
|
|
%t196 = load { ptr, i64, i64 }, ptr %a193
|
|
%t197 = load ptr, ptr %a1
|
|
%t198 = load %S.gen.Val, ptr %a10
|
|
%t199 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t197, %S.gen.Val %t198)
|
|
store { ptr, i64, i64 } %t196, ptr %a201
|
|
store { ptr, i64, i64 } %t199, ptr %a202
|
|
call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202)
|
|
%t203 = load { ptr, i64, i64 }, ptr %a200
|
|
store { ptr, i64, i64 } %t203, ptr %a205
|
|
store { ptr, i64, i64 } { ptr @.str.3732, i64 1, i64 0 }, ptr %a206
|
|
call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206)
|
|
%t207 = load { ptr, i64, i64 }, ptr %a204
|
|
%t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t185, { ptr, i64, i64 } %t207)
|
|
store { ptr, i64, i64 } %t208, ptr %a209
|
|
%t210 = load ptr, ptr %a1
|
|
%t211 = load { ptr, i64, i64 }, ptr %a2
|
|
%t212 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t211, i1 true)
|
|
store { ptr, i64, i64 } { ptr @.str.3733, i64 5, i64 0 }, ptr %a214
|
|
store { ptr, i64, i64 } %t212, ptr %a215
|
|
call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215)
|
|
%t216 = load { ptr, i64, i64 }, ptr %a213
|
|
store { ptr, i64, i64 } %t216, ptr %a218
|
|
store { ptr, i64, i64 } { ptr @.str.3734, i64 5, i64 0 }, ptr %a219
|
|
call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219)
|
|
%t220 = load { ptr, i64, i64 }, ptr %a217
|
|
%t221 = load { ptr, i64, i64 }, ptr %a209
|
|
store { ptr, i64, i64 } %t220, ptr %a223
|
|
store { ptr, i64, i64 } %t221, ptr %a224
|
|
call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224)
|
|
%t225 = load { ptr, i64, i64 }, ptr %a222
|
|
store { ptr, i64, i64 } %t225, ptr %a227
|
|
store { ptr, i64, i64 } { ptr @.str.3735, i64 3, i64 0 }, ptr %a228
|
|
call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228)
|
|
%t229 = load { ptr, i64, i64 }, ptr %a226
|
|
%t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t229)
|
|
%t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t230, 0
|
|
%t232 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3736, i64 4, i64 0 })
|
|
%t233 = insertvalue %S.gen.Val %t231, %S.ast.Type %t232, 1
|
|
ret %S.gen.Val %t233
|
|
endif5692:
|
|
%t234 = load ptr, ptr %a1
|
|
%t235 = call i1 @finch.gen.unify(ptr %t234, ptr %a6, ptr %a10)
|
|
%t236 = xor i1 %t235, true
|
|
br i1 %t236, label %then5699, label %endif5701
|
|
then5699:
|
|
%t237 = load ptr, ptr %a1
|
|
%t238 = load { ptr, i64, i64 }, ptr %a2
|
|
%t239 = load %S.gen.Val, ptr %a6
|
|
%t240 = load %S.gen.Val, ptr %a10
|
|
%t241 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.badOperands(ptr %t237, { ptr, i64, i64 } %t238, %S.gen.Val %t239, %S.gen.Val %t240, %S.ast.Node %t241)
|
|
br label %endif5701
|
|
endif5701:
|
|
%t242 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t243 = getelementptr inbounds %S.ast.Type, ptr %t242, i32 0, i32 0
|
|
%t244 = load { ptr, i64, i64 }, ptr %t243
|
|
store { ptr, i64, i64 } %t244, ptr %a245
|
|
call void @finch_str_copy(ptr %a246, ptr %a245)
|
|
%t247 = load { ptr, i64, i64 }, ptr %a246
|
|
store { ptr, i64, i64 } %t247, ptr %a248
|
|
%t249 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t250 = load %S.ast.Type, ptr %t249
|
|
%t251 = call i1 @finch.gen.isFloat(%S.ast.Type %t250)
|
|
br i1 %t251, label %then5702, label %endif5704
|
|
then5702:
|
|
%t252 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t253 = call ptr @finch_alloc(i64 %t252)
|
|
%t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3737, i64 2, i64 0 }, ptr %t254
|
|
%t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3738, i64 2, i64 0 }, ptr %t255
|
|
%t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3739, i64 1, i64 0 }, ptr %t256
|
|
%t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3740, i64 2, i64 0 }, ptr %t257
|
|
%t258 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3741, i64 1, i64 0 }, ptr %t258
|
|
%t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.3742, i64 2, i64 0 }, ptr %t259
|
|
%t260 = insertvalue { ptr, i64, i64 } undef, ptr %t253, 0
|
|
%t261 = insertvalue { ptr, i64, i64 } %t260, i64 6, 1
|
|
%t262 = insertvalue { ptr, i64, i64 } %t261, i64 6, 2
|
|
store { ptr, i64, i64 } %t262, ptr %a263
|
|
%t264 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t265 = call ptr @finch_alloc(i64 %t264)
|
|
%t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3743, i64 3, i64 0 }, ptr %t266
|
|
%t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3744, i64 3, i64 0 }, ptr %t267
|
|
%t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3745, i64 3, i64 0 }, ptr %t268
|
|
%t269 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3746, i64 3, i64 0 }, ptr %t269
|
|
%t270 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3747, i64 3, i64 0 }, ptr %t270
|
|
%t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.3748, i64 3, i64 0 }, ptr %t271
|
|
%t272 = insertvalue { ptr, i64, i64 } undef, ptr %t265, 0
|
|
%t273 = insertvalue { ptr, i64, i64 } %t272, i64 6, 1
|
|
%t274 = insertvalue { ptr, i64, i64 } %t273, i64 6, 2
|
|
store { ptr, i64, i64 } %t274, ptr %a275
|
|
%t276 = load ptr, ptr %a1
|
|
%t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1
|
|
%t278 = load { ptr, i64, i64 }, ptr %a2
|
|
store i64 -1, ptr %a279
|
|
%t280 = load i64, ptr %t277
|
|
%t281 = load ptr, ptr %a263
|
|
store i64 0, ptr %a282
|
|
br label %find.cond5705
|
|
find.cond5705:
|
|
%t283 = load i64, ptr %a282
|
|
%t284 = icmp slt i64 %t283, %t280
|
|
br i1 %t284, label %find.body5706, label %find.end5709
|
|
find.body5706:
|
|
%t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i64 %t283
|
|
%t286 = load { ptr, i64, i64 }, ptr %t285
|
|
store { ptr, i64, i64 } %t286, ptr %a287
|
|
store { ptr, i64, i64 } %t278, ptr %a288
|
|
%t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288)
|
|
%t290 = icmp ne i32 %t289, 0
|
|
br i1 %t290, label %find.hit5707, label %find.next5708
|
|
find.hit5707:
|
|
store i64 %t283, ptr %a279
|
|
br label %find.end5709
|
|
find.next5708:
|
|
%t291 = add i64 %t283, 1
|
|
store i64 %t291, ptr %a282
|
|
br label %find.cond5705
|
|
find.end5709:
|
|
%t292 = load i64, ptr %a279
|
|
%t293 = load { ptr, i64, i64 }, ptr %a275
|
|
%t294 = extractvalue { ptr, i64, i64 } %t293, 1
|
|
%t295 = icmp uge i64 %t292, %t294
|
|
br i1 %t295, label %range5710, label %inrange5711
|
|
range5710:
|
|
call void @finch_panic_index(ptr @.str.3750, i64 3069, i64 %t292, i64 %t294)
|
|
unreachable
|
|
inrange5711:
|
|
%t296 = extractvalue { ptr, i64, i64 } %t293, 0
|
|
%t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i64 %t292
|
|
%t298 = load { ptr, i64, i64 }, ptr %t297
|
|
store { ptr, i64, i64 } { ptr @.str.3749, i64 5, i64 0 }, ptr %a300
|
|
store { ptr, i64, i64 } %t298, ptr %a301
|
|
call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301)
|
|
%t302 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } %t302, ptr %a304
|
|
store { ptr, i64, i64 } { ptr @.str.3751, i64 1, i64 0 }, ptr %a305
|
|
call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305)
|
|
%t306 = load { ptr, i64, i64 }, ptr %a303
|
|
%t307 = load ptr, ptr %a1
|
|
%t308 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t309 = load %S.ast.Type, ptr %t308
|
|
%t310 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t307, %S.ast.Type %t309)
|
|
store { ptr, i64, i64 } %t306, ptr %a312
|
|
store { ptr, i64, i64 } %t310, ptr %a313
|
|
call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313)
|
|
%t314 = load { ptr, i64, i64 }, ptr %a311
|
|
store { ptr, i64, i64 } %t314, ptr %a316
|
|
store { ptr, i64, i64 } { ptr @.str.3752, i64 1, i64 0 }, ptr %a317
|
|
call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317)
|
|
%t318 = load { ptr, i64, i64 }, ptr %a315
|
|
%t319 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0
|
|
%t320 = load { ptr, i64, i64 }, ptr %t319
|
|
store { ptr, i64, i64 } %t318, ptr %a322
|
|
store { ptr, i64, i64 } %t320, ptr %a323
|
|
call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323)
|
|
%t324 = load { ptr, i64, i64 }, ptr %a321
|
|
store { ptr, i64, i64 } %t324, ptr %a326
|
|
store { ptr, i64, i64 } { ptr @.str.3753, i64 2, i64 0 }, ptr %a327
|
|
call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327)
|
|
%t328 = load { ptr, i64, i64 }, ptr %a325
|
|
%t329 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0
|
|
%t330 = load { ptr, i64, i64 }, ptr %t329
|
|
store { ptr, i64, i64 } %t328, ptr %a332
|
|
store { ptr, i64, i64 } %t330, ptr %a333
|
|
call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333)
|
|
%t334 = load { ptr, i64, i64 }, ptr %a331
|
|
%t335 = call { ptr, i64, i64 } @finch.gen.op(ptr %t276, { ptr, i64, i64 } %t334)
|
|
%t336 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t335, 0
|
|
%t337 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3754, i64 4, i64 0 })
|
|
%t338 = insertvalue %S.gen.Val %t336, %S.ast.Type %t337, 1
|
|
ret %S.gen.Val %t338
|
|
endif5704:
|
|
%t339 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t339, ptr %a340
|
|
store { ptr, i64, i64 } { ptr @.str.3755, i64 4, i64 0 }, ptr %a341
|
|
%t342 = call i32 @finch_str_eq(ptr %a340, ptr %a341)
|
|
%t343 = icmp ne i32 %t342, 0
|
|
br i1 %t343, label %then5712, label %endif5714
|
|
then5712:
|
|
%t344 = load i1, ptr %a23
|
|
%t345 = xor i1 %t344, true
|
|
br i1 %t345, label %then5715, label %endif5717
|
|
then5715:
|
|
%t346 = load ptr, ptr %a1
|
|
%t347 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.fail(ptr %t346, %S.ast.Node %t347, { ptr, i64, i64 } { ptr @.str.3756, i64 115, i64 0 })
|
|
br label %endif5717
|
|
endif5717:
|
|
store { ptr, i64, i64 } { ptr @.str.3757, i64 2, i64 0 }, ptr %a348
|
|
%t349 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t349, ptr %a350
|
|
store { ptr, i64, i64 } { ptr @.str.3758, i64 2, i64 0 }, ptr %a351
|
|
%t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351)
|
|
%t353 = icmp ne i32 %t352, 0
|
|
br i1 %t353, label %then5718, label %endif5720
|
|
then5718:
|
|
store { ptr, i64, i64 } { ptr @.str.3759, i64 2, i64 0 }, ptr %a348
|
|
br label %endif5720
|
|
endif5720:
|
|
%t354 = load ptr, ptr %a1
|
|
%t355 = load { ptr, i64, i64 }, ptr %a348
|
|
store { ptr, i64, i64 } { ptr @.str.3760, i64 5, i64 0 }, ptr %a357
|
|
store { ptr, i64, i64 } %t355, ptr %a358
|
|
call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358)
|
|
%t359 = load { ptr, i64, i64 }, ptr %a356
|
|
store { ptr, i64, i64 } %t359, ptr %a361
|
|
store { ptr, i64, i64 } { ptr @.str.3761, i64 5, i64 0 }, ptr %a362
|
|
call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362)
|
|
%t363 = load { ptr, i64, i64 }, ptr %a360
|
|
%t364 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0
|
|
%t365 = load { ptr, i64, i64 }, ptr %t364
|
|
store { ptr, i64, i64 } %t363, ptr %a367
|
|
store { ptr, i64, i64 } %t365, ptr %a368
|
|
call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368)
|
|
%t369 = load { ptr, i64, i64 }, ptr %a366
|
|
store { ptr, i64, i64 } %t369, ptr %a371
|
|
store { ptr, i64, i64 } { ptr @.str.3762, i64 2, i64 0 }, ptr %a372
|
|
call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372)
|
|
%t373 = load { ptr, i64, i64 }, ptr %a370
|
|
%t374 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0
|
|
%t375 = load { ptr, i64, i64 }, ptr %t374
|
|
store { ptr, i64, i64 } %t373, ptr %a377
|
|
store { ptr, i64, i64 } %t375, ptr %a378
|
|
call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378)
|
|
%t379 = load { ptr, i64, i64 }, ptr %a376
|
|
%t380 = call { ptr, i64, i64 } @finch.gen.op(ptr %t354, { ptr, i64, i64 } %t379)
|
|
%t381 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t380, 0
|
|
%t382 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3763, i64 4, i64 0 })
|
|
%t383 = insertvalue %S.gen.Val %t381, %S.ast.Type %t382, 1
|
|
ret %S.gen.Val %t383
|
|
endif5714:
|
|
%t384 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t384, ptr %a385
|
|
store { ptr, i64, i64 } { ptr @.str.3764, i64 4, i64 0 }, ptr %a386
|
|
%t387 = call i32 @finch_str_eq(ptr %a385, ptr %a386)
|
|
%t388 = icmp ne i32 %t387, 0
|
|
br label %logic.from5721
|
|
logic.from5721:
|
|
br i1 %t388, label %logic.rhs5722, label %logic.end5723
|
|
logic.rhs5722:
|
|
%t389 = load i1, ptr %a23
|
|
%t390 = xor i1 %t389, true
|
|
br label %logic.rend5724
|
|
logic.rend5724:
|
|
br label %logic.end5723
|
|
logic.end5723:
|
|
%t391 = phi i1 [ false, %logic.from5721 ], [ %t390, %logic.rend5724 ]
|
|
br i1 %t391, label %then5725, label %endif5727
|
|
then5725:
|
|
%t392 = load ptr, ptr %a1
|
|
%t393 = load { ptr, i64, i64 }, ptr %a2
|
|
%t394 = load %S.gen.Val, ptr %a6
|
|
%t395 = load %S.gen.Val, ptr %a10
|
|
%t396 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.badOperands(ptr %t392, { ptr, i64, i64 } %t393, %S.gen.Val %t394, %S.gen.Val %t395, %S.ast.Node %t396)
|
|
br label %endif5727
|
|
endif5727:
|
|
%t397 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t398 = load %S.ast.Type, ptr %t397
|
|
%t399 = call i1 @finch.gen.isInt(%S.ast.Type %t398)
|
|
%t400 = xor i1 %t399, true
|
|
br label %logic.from5728
|
|
logic.from5728:
|
|
br i1 %t400, label %logic.rhs5729, label %logic.end5730
|
|
logic.rhs5729:
|
|
%t401 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t401, ptr %a402
|
|
store { ptr, i64, i64 } { ptr @.str.3765, i64 4, i64 0 }, ptr %a403
|
|
%t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403)
|
|
%t405 = icmp eq i32 %t404, 0
|
|
br label %logic.rend5731
|
|
logic.rend5731:
|
|
br label %logic.end5730
|
|
logic.end5730:
|
|
%t406 = phi i1 [ false, %logic.from5728 ], [ %t405, %logic.rend5731 ]
|
|
br label %logic.from5732
|
|
logic.from5732:
|
|
br i1 %t406, label %logic.rhs5733, label %logic.end5734
|
|
logic.rhs5733:
|
|
%t407 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t407, ptr %a408
|
|
store { ptr, i64, i64 } { ptr @.str.3766, i64 4, i64 0 }, ptr %a409
|
|
%t410 = call i32 @finch_str_eq(ptr %a408, ptr %a409)
|
|
%t411 = icmp eq i32 %t410, 0
|
|
br label %logic.rend5735
|
|
logic.rend5735:
|
|
br label %logic.end5734
|
|
logic.end5734:
|
|
%t412 = phi i1 [ false, %logic.from5732 ], [ %t411, %logic.rend5735 ]
|
|
br i1 %t412, label %then5736, label %endif5738
|
|
then5736:
|
|
%t413 = load ptr, ptr %a1
|
|
%t414 = load { ptr, i64, i64 }, ptr %a2
|
|
%t415 = load %S.gen.Val, ptr %a6
|
|
%t416 = load %S.gen.Val, ptr %a10
|
|
%t417 = load %S.ast.Node, ptr %a11
|
|
call void @finch.gen.badOperands(ptr %t413, { ptr, i64, i64 } %t414, %S.gen.Val %t415, %S.gen.Val %t416, %S.ast.Node %t417)
|
|
br label %endif5738
|
|
endif5738:
|
|
%t418 = load ptr, ptr %a1
|
|
%t419 = load { ptr, i64, i64 }, ptr %a2
|
|
%t420 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t421 = load %S.ast.Type, ptr %t420
|
|
%t422 = call i1 @finch.gen.isSigned(%S.ast.Type %t421)
|
|
%t423 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t419, i1 %t422)
|
|
store { ptr, i64, i64 } { ptr @.str.3767, i64 5, i64 0 }, ptr %a425
|
|
store { ptr, i64, i64 } %t423, ptr %a426
|
|
call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426)
|
|
%t427 = load { ptr, i64, i64 }, ptr %a424
|
|
store { ptr, i64, i64 } %t427, ptr %a429
|
|
store { ptr, i64, i64 } { ptr @.str.3768, i64 1, i64 0 }, ptr %a430
|
|
call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430)
|
|
%t431 = load { ptr, i64, i64 }, ptr %a428
|
|
%t432 = load ptr, ptr %a1
|
|
%t433 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1
|
|
%t434 = load %S.ast.Type, ptr %t433
|
|
%t435 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t432, %S.ast.Type %t434)
|
|
store { ptr, i64, i64 } %t431, ptr %a437
|
|
store { ptr, i64, i64 } %t435, ptr %a438
|
|
call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438)
|
|
%t439 = load { ptr, i64, i64 }, ptr %a436
|
|
store { ptr, i64, i64 } %t439, ptr %a441
|
|
store { ptr, i64, i64 } { ptr @.str.3769, i64 1, i64 0 }, ptr %a442
|
|
call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442)
|
|
%t443 = load { ptr, i64, i64 }, ptr %a440
|
|
%t444 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0
|
|
%t445 = load { ptr, i64, i64 }, ptr %t444
|
|
store { ptr, i64, i64 } %t443, ptr %a447
|
|
store { ptr, i64, i64 } %t445, ptr %a448
|
|
call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448)
|
|
%t449 = load { ptr, i64, i64 }, ptr %a446
|
|
store { ptr, i64, i64 } %t449, ptr %a451
|
|
store { ptr, i64, i64 } { ptr @.str.3770, i64 2, i64 0 }, ptr %a452
|
|
call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452)
|
|
%t453 = load { ptr, i64, i64 }, ptr %a450
|
|
%t454 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0
|
|
%t455 = load { ptr, i64, i64 }, ptr %t454
|
|
store { ptr, i64, i64 } %t453, ptr %a457
|
|
store { ptr, i64, i64 } %t455, ptr %a458
|
|
call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458)
|
|
%t459 = load { ptr, i64, i64 }, ptr %a456
|
|
%t460 = call { ptr, i64, i64 } @finch.gen.op(ptr %t418, { ptr, i64, i64 } %t459)
|
|
%t461 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t460, 0
|
|
%t462 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3771, i64 4, i64 0 })
|
|
%t463 = insertvalue %S.gen.Val %t461, %S.ast.Type %t462, 1
|
|
ret %S.gen.Val %t463
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca i1, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca i64, align 16
|
|
%a44 = alloca i64, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store i1 %p1, ptr %a2
|
|
%t3 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t4 = call ptr @finch_alloc(i64 %t3)
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3772, i64 2, i64 0 }, ptr %t5
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3773, i64 2, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3774, i64 1, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3775, i64 2, i64 0 }, ptr %t8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3776, i64 1, i64 0 }, ptr %t9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.3777, i64 2, i64 0 }, ptr %t10
|
|
%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.3778, i64 2, i64 0 }, ptr %t17
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3779, i64 2, i64 0 }, ptr %t18
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3780, i64 3, i64 0 }, ptr %t19
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3781, i64 3, i64 0 }, ptr %t20
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3782, i64 3, i64 0 }, ptr %t21
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.3783, i64 3, i64 0 }, ptr %t22
|
|
%t23 = insertvalue { ptr, i64, i64 } undef, ptr %t16, 0
|
|
%t24 = insertvalue { ptr, i64, i64 } %t23, i64 6, 1
|
|
%t25 = insertvalue { ptr, i64, i64 } %t24, i64 6, 2
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
%t27 = load i1, ptr %a2
|
|
br i1 %t27, label %then5739, label %endif5741
|
|
then5739:
|
|
%t28 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t29 = call ptr @finch_alloc(i64 %t28)
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.3784, i64 2, i64 0 }, ptr %t30
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.3785, i64 2, i64 0 }, ptr %t31
|
|
%t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.3786, i64 3, i64 0 }, ptr %t32
|
|
%t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.3787, i64 3, i64 0 }, ptr %t33
|
|
%t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.3788, i64 3, i64 0 }, ptr %t34
|
|
%t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.3789, i64 3, i64 0 }, ptr %t35
|
|
%t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0
|
|
%t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1
|
|
%t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2
|
|
store { ptr, i64, i64 } %t38, ptr %a26
|
|
br label %endif5741
|
|
endif5741:
|
|
%t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t40 = load { ptr, i64, i64 }, ptr %a1
|
|
store i64 -1, ptr %a41
|
|
%t42 = load i64, ptr %t39
|
|
%t43 = load ptr, ptr %a14
|
|
store i64 0, ptr %a44
|
|
br label %find.cond5742
|
|
find.cond5742:
|
|
%t45 = load i64, ptr %a44
|
|
%t46 = icmp slt i64 %t45, %t42
|
|
br i1 %t46, label %find.body5743, label %find.end5746
|
|
find.body5743:
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t45
|
|
%t48 = load { ptr, i64, i64 }, ptr %t47
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
store { ptr, i64, i64 } %t40, ptr %a50
|
|
%t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50)
|
|
%t52 = icmp ne i32 %t51, 0
|
|
br i1 %t52, label %find.hit5744, label %find.next5745
|
|
find.hit5744:
|
|
store i64 %t45, ptr %a41
|
|
br label %find.end5746
|
|
find.next5745:
|
|
%t53 = add i64 %t45, 1
|
|
store i64 %t53, ptr %a44
|
|
br label %find.cond5742
|
|
find.end5746:
|
|
%t54 = load i64, ptr %a41
|
|
%t55 = load { ptr, i64, i64 }, ptr %a26
|
|
%t56 = extractvalue { ptr, i64, i64 } %t55, 1
|
|
%t57 = icmp uge i64 %t54, %t56
|
|
br i1 %t57, label %range5747, label %inrange5748
|
|
range5747:
|
|
call void @finch_panic_index(ptr @.str.3790, i64 3096, i64 %t54, i64 %t56)
|
|
unreachable
|
|
inrange5748:
|
|
%t58 = extractvalue { ptr, i64, i64 } %t55, 0
|
|
%t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 %t54
|
|
%t60 = load { ptr, i64, i64 }, ptr %t59
|
|
store { ptr, i64, i64 } %t60, ptr %a61
|
|
call void @finch_str_copy(ptr %a62, ptr %a61)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a62
|
|
ret { ptr, i64, i64 } %t63
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca %S.gen.Val, align 16
|
|
%a145 = alloca %S.gen.Val, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
call void @finch_str_copy(ptr %a6, ptr %a5)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
%t9 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.3791, i64 2, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br label %logic.from5749
|
|
logic.from5749:
|
|
br i1 %t13, label %logic.end5751, label %logic.rhs5750
|
|
logic.rhs5750:
|
|
%t14 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.3792, i64 2, i64 0 }, ptr %a16
|
|
%t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16)
|
|
%t18 = icmp ne i32 %t17, 0
|
|
br label %logic.rend5752
|
|
logic.rend5752:
|
|
br label %logic.end5751
|
|
logic.end5751:
|
|
%t19 = phi i1 [ true, %logic.from5749 ], [ %t18, %logic.rend5752 ]
|
|
br i1 %t19, label %then5753, label %endif5755
|
|
then5753:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
%t23 = extractvalue { ptr, i64, i64 } %t22, 1
|
|
%t24 = icmp uge i64 0, %t23
|
|
br i1 %t24, label %range5756, label %inrange5757
|
|
range5756:
|
|
call void @finch_panic_index(ptr @.str.3793, i64 3102, i64 0, i64 %t23)
|
|
unreachable
|
|
inrange5757:
|
|
%t25 = extractvalue { ptr, i64, i64 } %t22, 0
|
|
%t26 = getelementptr inbounds %S.ast.Node, ptr %t25, i64 0
|
|
%t27 = load %S.ast.Node, ptr %t26
|
|
%t28 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t20, %S.ast.Node %t27)
|
|
store { ptr, i64, i64 } %t28, ptr %a29
|
|
%t30 = load ptr, ptr %a1
|
|
%t31 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t30, { ptr, i64, i64 } { ptr @.str.3794, i64 10, i64 0 })
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t33, { ptr, i64, i64 } { ptr @.str.3795, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t34, ptr %a35
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t36, { ptr, i64, i64 } { ptr @.str.3796, i64 9, i64 0 })
|
|
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.3797, i64 2, i64 0 }, ptr %a45
|
|
%t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45)
|
|
%t47 = icmp ne i32 %t46, 0
|
|
br i1 %t47, label %then5758, label %else5759
|
|
then5758:
|
|
%t48 = load ptr, ptr %a1
|
|
%t49 = load { ptr, i64, i64 }, ptr %a29
|
|
%t50 = load { ptr, i64, i64 }, ptr %a35
|
|
%t51 = load { ptr, i64, i64 }, ptr %a38
|
|
call void @finch.gen.condBr(ptr %t48, { ptr, i64, i64 } %t49, { ptr, i64, i64 } %t50, { ptr, i64, i64 } %t51)
|
|
br label %endif5760
|
|
else5759:
|
|
%t52 = load ptr, ptr %a1
|
|
%t53 = load { ptr, i64, i64 }, ptr %a29
|
|
%t54 = load { ptr, i64, i64 }, ptr %a38
|
|
%t55 = load { ptr, i64, i64 }, ptr %a35
|
|
call void @finch.gen.condBr(ptr %t52, { ptr, i64, i64 } %t53, { ptr, i64, i64 } %t54, { ptr, i64, i64 } %t55)
|
|
br label %endif5760
|
|
endif5760:
|
|
%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 %range5761, label %inrange5762
|
|
range5761:
|
|
call void @finch_panic_index(ptr @.str.3798, i64 3114, i64 1, i64 %t61)
|
|
unreachable
|
|
inrange5762:
|
|
%t63 = extractvalue { ptr, i64, i64 } %t60, 0
|
|
%t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 1
|
|
%t65 = load %S.ast.Node, ptr %t64
|
|
%t66 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t58, %S.ast.Node %t65)
|
|
store { ptr, i64, i64 } %t66, ptr %a67
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.3799, i64 10, i64 0 })
|
|
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.3800, i64 4, i64 0 }, ptr %a79
|
|
%t80 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.3801, i64 2, i64 0 }, ptr %a82
|
|
%t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82)
|
|
%t84 = icmp ne i32 %t83, 0
|
|
br i1 %t84, label %then5763, label %endif5765
|
|
then5763:
|
|
store { ptr, i64, i64 } { ptr @.str.3802, i64 5, i64 0 }, ptr %a79
|
|
br label %endif5765
|
|
endif5765:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.3803, i64 9, i64 0 }, ptr %a88
|
|
store { ptr, i64, i64 } %t86, ptr %a89
|
|
call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t90, ptr %a92
|
|
store { ptr, i64, i64 } { ptr @.str.3804, i64 3, i64 0 }, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
%t95 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t94, ptr %a97
|
|
store { ptr, i64, i64 } %t95, ptr %a98
|
|
call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t99, ptr %a101
|
|
store { ptr, i64, i64 } { ptr @.str.3805, i64 6, i64 0 }, ptr %a102
|
|
call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102)
|
|
%t103 = load { ptr, i64, i64 }, ptr %a100
|
|
%t104 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t103, ptr %a106
|
|
store { ptr, i64, i64 } %t104, ptr %a107
|
|
call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107)
|
|
%t108 = load { ptr, i64, i64 }, ptr %a105
|
|
store { ptr, i64, i64 } %t108, ptr %a110
|
|
store { ptr, i64, i64 } { ptr @.str.3806, i64 3, i64 0 }, ptr %a111
|
|
call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111)
|
|
%t112 = load { ptr, i64, i64 }, ptr %a109
|
|
%t113 = load { ptr, i64, i64 }, ptr %a70
|
|
store { ptr, i64, i64 } %t112, ptr %a115
|
|
store { ptr, i64, i64 } %t113, ptr %a116
|
|
call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a114
|
|
store { ptr, i64, i64 } %t117, ptr %a119
|
|
store { ptr, i64, i64 } { ptr @.str.3807, i64 2, i64 0 }, ptr %a120
|
|
call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120)
|
|
%t121 = load { ptr, i64, i64 }, ptr %a118
|
|
%t122 = call { ptr, i64, i64 } @finch.gen.op(ptr %t85, { ptr, i64, i64 } %t121)
|
|
%t123 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t122, 0
|
|
%t124 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3808, i64 4, i64 0 })
|
|
%t125 = insertvalue %S.gen.Val %t123, %S.ast.Type %t124, 1
|
|
ret %S.gen.Val %t125
|
|
endif5755:
|
|
%t126 = load ptr, ptr %a1
|
|
%t127 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t128 = load { ptr, i64, i64 }, ptr %t127
|
|
%t129 = extractvalue { ptr, i64, i64 } %t128, 1
|
|
%t130 = icmp uge i64 0, %t129
|
|
br i1 %t130, label %range5766, label %inrange5767
|
|
range5766:
|
|
call void @finch_panic_index(ptr @.str.3809, i64 3126, i64 0, i64 %t129)
|
|
unreachable
|
|
inrange5767:
|
|
%t131 = extractvalue { ptr, i64, i64 } %t128, 0
|
|
%t132 = getelementptr inbounds %S.ast.Node, ptr %t131, i64 0
|
|
%t133 = load %S.ast.Node, ptr %t132
|
|
%t134 = call %S.gen.Val @finch.gen.expr(ptr %t126, %S.ast.Node %t133)
|
|
store %S.gen.Val %t134, ptr %a135
|
|
%t136 = load ptr, ptr %a1
|
|
%t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t138 = load { ptr, i64, i64 }, ptr %t137
|
|
%t139 = extractvalue { ptr, i64, i64 } %t138, 1
|
|
%t140 = icmp uge i64 1, %t139
|
|
br i1 %t140, label %range5768, label %inrange5769
|
|
range5768:
|
|
call void @finch_panic_index(ptr @.str.3810, i64 3127, i64 1, i64 %t139)
|
|
unreachable
|
|
inrange5769:
|
|
%t141 = extractvalue { ptr, i64, i64 } %t138, 0
|
|
%t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 1
|
|
%t143 = load %S.ast.Node, ptr %t142
|
|
%t144 = call %S.gen.Val @finch.gen.expr(ptr %t136, %S.ast.Node %t143)
|
|
store %S.gen.Val %t144, ptr %a145
|
|
%t146 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t146, ptr %a147
|
|
store { ptr, i64, i64 } { ptr @.str.3811, i64 2, i64 0 }, ptr %a148
|
|
%t149 = call i32 @finch_str_eq(ptr %a147, ptr %a148)
|
|
%t150 = icmp ne i32 %t149, 0
|
|
br label %logic.from5770
|
|
logic.from5770:
|
|
br i1 %t150, label %logic.end5772, label %logic.rhs5771
|
|
logic.rhs5771:
|
|
%t151 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t151, ptr %a152
|
|
store { ptr, i64, i64 } { ptr @.str.3812, i64 2, i64 0 }, ptr %a153
|
|
%t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153)
|
|
%t155 = icmp ne i32 %t154, 0
|
|
br label %logic.rend5773
|
|
logic.rend5773:
|
|
br label %logic.end5772
|
|
logic.end5772:
|
|
%t156 = phi i1 [ true, %logic.from5770 ], [ %t155, %logic.rend5773 ]
|
|
br label %logic.from5774
|
|
logic.from5774:
|
|
br i1 %t156, label %logic.end5776, label %logic.rhs5775
|
|
logic.rhs5775:
|
|
%t157 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t157, ptr %a158
|
|
store { ptr, i64, i64 } { ptr @.str.3813, i64 1, i64 0 }, ptr %a159
|
|
%t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159)
|
|
%t161 = icmp ne i32 %t160, 0
|
|
br label %logic.rend5777
|
|
logic.rend5777:
|
|
br label %logic.end5776
|
|
logic.end5776:
|
|
%t162 = phi i1 [ true, %logic.from5774 ], [ %t161, %logic.rend5777 ]
|
|
br label %logic.from5778
|
|
logic.from5778:
|
|
br i1 %t162, label %logic.end5780, label %logic.rhs5779
|
|
logic.rhs5779:
|
|
%t163 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t163, ptr %a164
|
|
store { ptr, i64, i64 } { ptr @.str.3814, i64 2, i64 0 }, ptr %a165
|
|
%t166 = call i32 @finch_str_eq(ptr %a164, ptr %a165)
|
|
%t167 = icmp ne i32 %t166, 0
|
|
br label %logic.rend5781
|
|
logic.rend5781:
|
|
br label %logic.end5780
|
|
logic.end5780:
|
|
%t168 = phi i1 [ true, %logic.from5778 ], [ %t167, %logic.rend5781 ]
|
|
br label %logic.from5782
|
|
logic.from5782:
|
|
br i1 %t168, label %logic.end5784, label %logic.rhs5783
|
|
logic.rhs5783:
|
|
%t169 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t169, ptr %a170
|
|
store { ptr, i64, i64 } { ptr @.str.3815, i64 1, i64 0 }, ptr %a171
|
|
%t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171)
|
|
%t173 = icmp ne i32 %t172, 0
|
|
br label %logic.rend5785
|
|
logic.rend5785:
|
|
br label %logic.end5784
|
|
logic.end5784:
|
|
%t174 = phi i1 [ true, %logic.from5782 ], [ %t173, %logic.rend5785 ]
|
|
br label %logic.from5786
|
|
logic.from5786:
|
|
br i1 %t174, label %logic.end5788, label %logic.rhs5787
|
|
logic.rhs5787:
|
|
%t175 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t175, ptr %a176
|
|
store { ptr, i64, i64 } { ptr @.str.3816, i64 2, i64 0 }, ptr %a177
|
|
%t178 = call i32 @finch_str_eq(ptr %a176, ptr %a177)
|
|
%t179 = icmp ne i32 %t178, 0
|
|
br label %logic.rend5789
|
|
logic.rend5789:
|
|
br label %logic.end5788
|
|
logic.end5788:
|
|
%t180 = phi i1 [ true, %logic.from5786 ], [ %t179, %logic.rend5789 ]
|
|
br i1 %t180, label %then5790, label %endif5792
|
|
then5790:
|
|
%t181 = load ptr, ptr %a1
|
|
%t182 = load { ptr, i64, i64 }, ptr %a8
|
|
%t183 = load %S.gen.Val, ptr %a135
|
|
%t184 = load %S.gen.Val, ptr %a145
|
|
%t185 = load %S.ast.Node, ptr %a2
|
|
%t186 = call %S.gen.Val @finch.gen.compare(ptr %t181, { ptr, i64, i64 } %t182, %S.gen.Val %t183, %S.gen.Val %t184, %S.ast.Node %t185)
|
|
ret %S.gen.Val %t186
|
|
endif5792:
|
|
%t187 = load ptr, ptr %a1
|
|
%t188 = load { ptr, i64, i64 }, ptr %a8
|
|
%t189 = load %S.gen.Val, ptr %a135
|
|
%t190 = load %S.gen.Val, ptr %a145
|
|
%t191 = load %S.ast.Node, ptr %a2
|
|
%t192 = call %S.gen.Val @finch.gen.arith(ptr %t187, { ptr, i64, i64 } %t188, %S.gen.Val %t189, %S.gen.Val %t190, %S.ast.Node %t191)
|
|
ret %S.gen.Val %t192
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca %S.ast.Type, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca %S.ast.Type, align 16
|
|
%a20 = alloca %S.ast.Type, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca i64, align 16
|
|
%a38 = alloca %S.ast.Node, align 16
|
|
%a39 = alloca %S.gen.Val, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca %S.ast.Type, align 16
|
|
%a52 = alloca %S.ast.Type, align 16
|
|
%a75 = alloca %S.ast.Type, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca i64, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca %S.ast.Type, align 16
|
|
%a225 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
%t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3817, i64 4, i64 0 })
|
|
store %S.ast.Type %t4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.3818, i64 5, i64 0 }, ptr %a9
|
|
%t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9)
|
|
%t11 = icmp ne i32 %t10, 0
|
|
br i1 %t11, label %then5793, label %else5794
|
|
then5793:
|
|
%t12 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1
|
|
%t13 = load { ptr, i64, i64 }, ptr %t12
|
|
%t14 = extractvalue { ptr, i64, i64 } %t13, 1
|
|
%t15 = icmp uge i64 0, %t14
|
|
br i1 %t15, label %range5796, label %inrange5797
|
|
range5796:
|
|
call void @finch_panic_index(ptr @.str.3819, i64 3137, i64 0, i64 %t14)
|
|
unreachable
|
|
inrange5797:
|
|
%t16 = extractvalue { ptr, i64, i64 } %t13, 0
|
|
%t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0
|
|
%t18 = load %S.ast.Type, ptr %t17
|
|
store %S.ast.Type %t18, ptr %a19
|
|
call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19)
|
|
%t21 = load %S.ast.Type, ptr %a20
|
|
store %S.ast.Type %t21, ptr %a5
|
|
br label %endif5795
|
|
else5794:
|
|
%t22 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1
|
|
%t24 = load i64, ptr %t23
|
|
%t25 = icmp eq i64 %t24, 0
|
|
br i1 %t25, label %then5798, label %endif5800
|
|
then5798:
|
|
%t26 = load ptr, ptr %a1
|
|
%t27 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t26, %S.ast.Node %t27, { ptr, i64, i64 } { ptr @.str.3820, i64 47, i64 0 })
|
|
br label %endif5800
|
|
endif5800:
|
|
br label %endif5795
|
|
endif5795:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a28
|
|
%t29 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
store i64 0, ptr %a30
|
|
br label %each.cond5801
|
|
each.cond5801:
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1
|
|
%t32 = load i64, ptr %t31
|
|
%t33 = load i64, ptr %a30
|
|
%t34 = icmp slt i64 %t33, %t32
|
|
br i1 %t34, label %each.body5802, label %each.end5804
|
|
each.body5802:
|
|
%t35 = load ptr, ptr %t29
|
|
%t36 = getelementptr inbounds %S.ast.Node, ptr %t35, i64 %t33
|
|
%t37 = load %S.ast.Node, ptr %t36
|
|
store %S.ast.Node %t37, ptr %a38
|
|
store %S.gen.Val zeroinitializer, ptr %a39
|
|
%t40 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0
|
|
%t41 = load { ptr, i64, i64 }, ptr %t40
|
|
store { ptr, i64, i64 } %t41, ptr %a42
|
|
store { ptr, i64, i64 } { ptr @.str.3821, i64 4, i64 0 }, ptr %a43
|
|
%t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43)
|
|
%t45 = icmp ne i32 %t44, 0
|
|
br i1 %t45, label %then5805, label %else5806
|
|
then5805:
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = load %S.ast.Node, ptr %a38
|
|
%t48 = call %S.gen.Val @finch.gen.expr(ptr %t46, %S.ast.Node %t47)
|
|
store %S.gen.Val %t48, ptr %a39
|
|
%t49 = getelementptr inbounds %S.gen.Val, ptr %a39, i32 0, i32 1
|
|
%t50 = load %S.ast.Type, ptr %t49
|
|
store %S.ast.Type %t50, ptr %a51
|
|
call void @finch.copy.S_ast_Type(ptr %a52, ptr %a51)
|
|
%t53 = load %S.ast.Type, ptr %a52
|
|
store %S.ast.Type %t53, ptr %a5
|
|
br label %endif5807
|
|
else5806:
|
|
%t54 = load ptr, ptr %a1
|
|
%t55 = load %S.ast.Node, ptr %a38
|
|
%t56 = load %S.ast.Type, ptr %a5
|
|
%t57 = call %S.gen.Val @finch.gen.exprWant(ptr %t54, %S.ast.Node %t55, %S.ast.Type %t56)
|
|
store %S.gen.Val %t57, ptr %a39
|
|
br label %endif5807
|
|
endif5807:
|
|
%t58 = load ptr, ptr %a1
|
|
%t59 = load %S.gen.Val, ptr %a39
|
|
%t60 = load %S.ast.Type, ptr %a5
|
|
%t61 = load %S.ast.Node, ptr %a38
|
|
%t62 = call %S.gen.Val @finch.gen.coerce(ptr %t58, %S.gen.Val %t59, %S.ast.Type %t60, %S.ast.Node %t61, { ptr, i64, i64 } { ptr @.str.3822, i64 27, i64 0 })
|
|
store %S.gen.Val %t62, ptr %a39
|
|
%t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = load %S.gen.Val, ptr %a39
|
|
%t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65)
|
|
%t67 = load i64, ptr %t63
|
|
%t68 = add i64 %t67, 1
|
|
call void @finch_arr_reserve(ptr %a28, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t69 = load ptr, ptr %a28
|
|
%t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67
|
|
store { ptr, i64, i64 } %t66, ptr %t70
|
|
store i64 %t68, ptr %t63
|
|
br label %each.step5803
|
|
each.step5803:
|
|
%t71 = load i64, ptr %a30
|
|
%t72 = add i64 %t71, 1
|
|
store i64 %t72, ptr %a30
|
|
br label %each.cond5801
|
|
each.end5804:
|
|
%t73 = load %S.ast.Type, ptr %a5
|
|
%t74 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t73)
|
|
store %S.ast.Type %t74, ptr %a75
|
|
%t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1
|
|
%t77 = load i64, ptr %t76
|
|
call void @finch_str_from_int(ptr %a78, i64 %t77)
|
|
%t79 = load { ptr, i64, i64 }, ptr %a78
|
|
store { ptr, i64, i64 } %t79, ptr %a80
|
|
store { ptr, i64, i64 } { ptr @.str.3823, i64 4, i64 0 }, ptr %a81
|
|
%t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1
|
|
%t83 = load i64, ptr %t82
|
|
%t84 = icmp sgt i64 %t83, 0
|
|
br i1 %t84, label %then5808, label %endif5810
|
|
then5808:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } { ptr @.str.3824, i64 8, i64 0 }, ptr %a88
|
|
store { ptr, i64, i64 } %t86, ptr %a89
|
|
call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t90, ptr %a92
|
|
store { ptr, i64, i64 } { ptr @.str.3825, i64 2, i64 0 }, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = load %S.ast.Type, ptr %a5
|
|
%t97 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t95, %S.ast.Type %t96)
|
|
store { ptr, i64, i64 } %t94, ptr %a99
|
|
store { ptr, i64, i64 } %t97, ptr %a100
|
|
call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a98
|
|
%t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t85, { ptr, i64, i64 } %t101)
|
|
store { ptr, i64, i64 } %t102, ptr %a103
|
|
%t104 = load ptr, ptr %a1
|
|
%t105 = load { ptr, i64, i64 }, ptr %a103
|
|
store { ptr, i64, i64 } { ptr @.str.3826, i64 26, i64 0 }, ptr %a107
|
|
store { ptr, i64, i64 } %t105, ptr %a108
|
|
call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108)
|
|
%t109 = load { ptr, i64, i64 }, ptr %a106
|
|
store { ptr, i64, i64 } %t109, ptr %a111
|
|
store { ptr, i64, i64 } { ptr @.str.3827, i64 1, i64 0 }, ptr %a112
|
|
call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112)
|
|
%t113 = load { ptr, i64, i64 }, ptr %a110
|
|
%t114 = call { ptr, i64, i64 } @finch.gen.op(ptr %t104, { ptr, i64, i64 } %t113)
|
|
store { ptr, i64, i64 } %t114, ptr %a81
|
|
br label %endif5810
|
|
endif5810:
|
|
%t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1
|
|
%t116 = load i64, ptr %t115
|
|
store i64 0, ptr %a117
|
|
br label %for.cond5811
|
|
for.cond5811:
|
|
%t118 = load i64, ptr %a117
|
|
%t119 = icmp slt i64 %t118, %t116
|
|
br i1 %t119, label %for.body5812, label %for.end5814
|
|
for.body5812:
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = load ptr, ptr %a1
|
|
%t122 = load %S.ast.Type, ptr %a5
|
|
%t123 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t121, %S.ast.Type %t122)
|
|
store { ptr, i64, i64 } { ptr @.str.3828, i64 23, i64 0 }, ptr %a125
|
|
store { ptr, i64, i64 } %t123, ptr %a126
|
|
call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126)
|
|
%t127 = load { ptr, i64, i64 }, ptr %a124
|
|
store { ptr, i64, i64 } %t127, ptr %a129
|
|
store { ptr, i64, i64 } { ptr @.str.3829, i64 6, i64 0 }, ptr %a130
|
|
call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130)
|
|
%t131 = load { ptr, i64, i64 }, ptr %a128
|
|
%t132 = load { ptr, i64, i64 }, ptr %a81
|
|
store { ptr, i64, i64 } %t131, ptr %a134
|
|
store { ptr, i64, i64 } %t132, ptr %a135
|
|
call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135)
|
|
%t136 = load { ptr, i64, i64 }, ptr %a133
|
|
store { ptr, i64, i64 } %t136, ptr %a138
|
|
store { ptr, i64, i64 } { ptr @.str.3830, i64 6, i64 0 }, ptr %a139
|
|
call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139)
|
|
%t140 = load { ptr, i64, i64 }, ptr %a137
|
|
%t141 = load i64, ptr %a117
|
|
call void @finch_str_from_int(ptr %a142, i64 %t141)
|
|
%t143 = load { ptr, i64, i64 }, ptr %a142
|
|
store { ptr, i64, i64 } %t140, ptr %a145
|
|
store { ptr, i64, i64 } %t143, ptr %a146
|
|
call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a144
|
|
%t148 = call { ptr, i64, i64 } @finch.gen.op(ptr %t120, { ptr, i64, i64 } %t147)
|
|
store { ptr, i64, i64 } %t148, ptr %a149
|
|
%t150 = load ptr, ptr %a1
|
|
%t151 = load ptr, ptr %a1
|
|
%t152 = load %S.ast.Type, ptr %a5
|
|
%t153 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t151, %S.ast.Type %t152)
|
|
%t154 = load i64, ptr %a117
|
|
%t155 = load { ptr, i64, i64 }, ptr %a28
|
|
%t156 = extractvalue { ptr, i64, i64 } %t155, 1
|
|
%t157 = icmp uge i64 %t154, %t156
|
|
br i1 %t157, label %range5815, label %inrange5816
|
|
range5815:
|
|
call void @finch_panic_index(ptr @.str.3831, i64 3162, i64 %t154, i64 %t156)
|
|
unreachable
|
|
inrange5816:
|
|
%t158 = extractvalue { ptr, i64, i64 } %t155, 0
|
|
%t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t154
|
|
%t160 = load { ptr, i64, i64 }, ptr %t159
|
|
%t161 = load { ptr, i64, i64 }, ptr %a149
|
|
call void @finch.gen.store(ptr %t150, { ptr, i64, i64 } %t153, { ptr, i64, i64 } %t160, { ptr, i64, i64 } %t161)
|
|
br label %for.step5813
|
|
for.step5813:
|
|
%t162 = load i64, ptr %a117
|
|
%t163 = add i64 %t162, 1
|
|
store i64 %t163, ptr %a117
|
|
br label %for.cond5811
|
|
for.end5814:
|
|
%t164 = load ptr, ptr %a1
|
|
%t165 = load { ptr, i64, i64 }, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.3832, i64 41, i64 0 }, ptr %a167
|
|
store { ptr, i64, i64 } %t165, ptr %a168
|
|
call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168)
|
|
%t169 = load { ptr, i64, i64 }, ptr %a166
|
|
store { ptr, i64, i64 } %t169, ptr %a171
|
|
store { ptr, i64, i64 } { ptr @.str.3833, i64 3, i64 0 }, ptr %a172
|
|
call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172)
|
|
%t173 = load { ptr, i64, i64 }, ptr %a170
|
|
%t174 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t173)
|
|
store { ptr, i64, i64 } %t174, ptr %a175
|
|
%t176 = load ptr, ptr %a1
|
|
%t177 = load { ptr, i64, i64 }, ptr %a175
|
|
store { ptr, i64, i64 } { ptr @.str.3834, i64 30, i64 0 }, ptr %a179
|
|
store { ptr, i64, i64 } %t177, ptr %a180
|
|
call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180)
|
|
%t181 = load { ptr, i64, i64 }, ptr %a178
|
|
store { ptr, i64, i64 } %t181, ptr %a183
|
|
store { ptr, i64, i64 } { ptr @.str.3835, i64 6, i64 0 }, ptr %a184
|
|
call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184)
|
|
%t185 = load { ptr, i64, i64 }, ptr %a182
|
|
%t186 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t185, ptr %a188
|
|
store { ptr, i64, i64 } %t186, ptr %a189
|
|
call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189)
|
|
%t190 = load { ptr, i64, i64 }, ptr %a187
|
|
store { ptr, i64, i64 } %t190, ptr %a192
|
|
store { ptr, i64, i64 } { ptr @.str.3836, i64 3, i64 0 }, ptr %a193
|
|
call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193)
|
|
%t194 = load { ptr, i64, i64 }, ptr %a191
|
|
%t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t176, { ptr, i64, i64 } %t194)
|
|
store { ptr, i64, i64 } %t195, ptr %a196
|
|
%t197 = load ptr, ptr %a1
|
|
%t198 = load { ptr, i64, i64 }, ptr %a196
|
|
store { ptr, i64, i64 } { ptr @.str.3837, i64 30, i64 0 }, ptr %a200
|
|
store { ptr, i64, i64 } %t198, ptr %a201
|
|
call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201)
|
|
%t202 = load { ptr, i64, i64 }, ptr %a199
|
|
store { ptr, i64, i64 } %t202, ptr %a204
|
|
store { ptr, i64, i64 } { ptr @.str.3838, i64 6, i64 0 }, ptr %a205
|
|
call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205)
|
|
%t206 = load { ptr, i64, i64 }, ptr %a203
|
|
%t207 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t206, ptr %a209
|
|
store { ptr, i64, i64 } %t207, ptr %a210
|
|
call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210)
|
|
%t211 = load { ptr, i64, i64 }, ptr %a208
|
|
store { ptr, i64, i64 } %t211, ptr %a213
|
|
store { ptr, i64, i64 } { ptr @.str.3839, i64 3, i64 0 }, ptr %a214
|
|
call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214)
|
|
%t215 = load { ptr, i64, i64 }, ptr %a212
|
|
%t216 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t215)
|
|
store { ptr, i64, i64 } %t216, ptr %a217
|
|
%t218 = load { ptr, i64, i64 }, ptr %a217
|
|
store { ptr, i64, i64 } %t218, ptr %a219
|
|
call void @finch_str_copy(ptr %a220, ptr %a219)
|
|
%t221 = load { ptr, i64, i64 }, ptr %a220
|
|
%t222 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0
|
|
%t223 = load %S.ast.Type, ptr %a75
|
|
store %S.ast.Type %t223, ptr %a224
|
|
call void @finch.copy.S_ast_Type(ptr %a225, ptr %a224)
|
|
%t226 = load %S.ast.Type, ptr %a225
|
|
%t227 = insertvalue %S.gen.Val %t222, %S.ast.Type %t226, 1
|
|
%t228 = insertvalue %S.gen.Val %t227, i1 true, 2
|
|
ret %S.gen.Val %t228
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Place, ptr %src
|
|
store %S.gen.Place %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Place, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Place, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Place, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Place, ptr %src, i32 0, i32 1
|
|
call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Place @finch.gen.place(ptr %p0, %S.ast.Node %p1, i1 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i1, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca %S.gen.Ref, align 16
|
|
%a40 = alloca %S.gen.Place, align 16
|
|
%a41 = alloca %S.gen.Place, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i1 %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.3840, i64 3, i64 0 }, ptr %a7
|
|
%t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7)
|
|
%t9 = icmp ne i32 %t8, 0
|
|
br label %logic.from5817
|
|
logic.from5817:
|
|
br i1 %t9, label %logic.rhs5818, label %logic.end5819
|
|
logic.rhs5818:
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t12 = load { ptr, i64, i64 }, ptr %t11
|
|
%t13 = call i64 @finch.gen.lookup(ptr %t10, { ptr, i64, i64 } %t12)
|
|
%t14 = icmp slt i64 %t13, 0
|
|
br label %logic.rend5820
|
|
logic.rend5820:
|
|
br label %logic.end5819
|
|
logic.end5819:
|
|
%t15 = phi i1 [ false, %logic.from5817 ], [ %t14, %logic.rend5820 ]
|
|
br i1 %t15, label %then5821, label %endif5823
|
|
then5821:
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = load %S.ast.Node, ptr %a2
|
|
%t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t19 = load { ptr, i64, i64 }, ptr %t18
|
|
store { ptr, i64, i64 } { ptr @.str.3841, i64 28, i64 0 }, ptr %a21
|
|
store { ptr, i64, i64 } %t19, ptr %a22
|
|
call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22)
|
|
%t23 = load { ptr, i64, i64 }, ptr %a20
|
|
store { ptr, i64, i64 } %t23, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.3842, i64 1, i64 0 }, ptr %a26
|
|
call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a24
|
|
call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t27)
|
|
br label %endif5823
|
|
endif5823:
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = load %S.ast.Node, ptr %a2
|
|
%t30 = load i1, ptr %a3
|
|
%t31 = call %S.gen.Ref @finch.gen.ref(ptr %t28, %S.ast.Node %t29, i1 %t30)
|
|
store %S.gen.Ref %t31, ptr %a32
|
|
%t33 = getelementptr inbounds %S.gen.Ref, ptr %a32, i32 0, i32 0
|
|
%t34 = load i1, ptr %t33
|
|
%t35 = xor i1 %t34, true
|
|
br i1 %t35, label %then5824, label %endif5826
|
|
then5824:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } { ptr @.str.3843, i64 60, i64 0 })
|
|
br label %endif5826
|
|
endif5826:
|
|
%t38 = getelementptr inbounds %S.gen.Ref, ptr %a32, i32 0, i32 1
|
|
%t39 = load %S.gen.Place, ptr %t38
|
|
store %S.gen.Place %t39, ptr %a40
|
|
call void @finch.copy.S_gen_Place(ptr %a41, ptr %a40)
|
|
%t42 = load %S.gen.Place, ptr %a41
|
|
ret %S.gen.Place %t42
|
|
}
|
|
|
|
define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.cimport.CConst, ptr %src
|
|
store %S.cimport.CConst %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.cimport.CConst, ptr %dst, i32 0, i32 3
|
|
%t3 = getelementptr inbounds %S.cimport.CConst, ptr %src, i32 0, i32 3
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Ref @finch.gen.ref(ptr %p0, %S.ast.Node %p1, i1 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i1, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca i64, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca %S.cimport.CConst, align 16
|
|
%a44 = alloca %S.cimport.CConst, align 16
|
|
%a46 = alloca %S.cimport.CConst, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca %S.ast.Type, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca i64, align 16
|
|
%a184 = alloca i64, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca %S.ast.Type, align 16
|
|
%a246 = alloca %S.ast.Type, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a270 = alloca { ptr, i64, i64 }, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca %S.gen.Var, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca %S.ast.Type, align 16
|
|
%a304 = alloca %S.ast.Type, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i1 %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.3844, i64 3, i64 0 }, ptr %a7
|
|
%t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7)
|
|
%t9 = icmp ne i32 %t8, 0
|
|
br i1 %t9, label %then5827, label %endif5829
|
|
then5827:
|
|
%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.from5830
|
|
logic.from5830:
|
|
br i1 %t16, label %logic.rhs5831, label %logic.end5832
|
|
logic.rhs5831:
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = icmp eq ptr %t17, null
|
|
br i1 %t18, label %panic5833, label %ok5834
|
|
panic5833:
|
|
call void @finch_panic(ptr @.str.3845, i64 3186, ptr @.str.3846)
|
|
unreachable
|
|
ok5834:
|
|
%t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 24
|
|
%t20 = getelementptr inbounds %S.cimport.CImports, ptr %t19, i32 0, i32 1
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
%t24 = call i64 @finch_map_find(ptr %t20, ptr %a23, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t25 = icmp sge i64 %t24, 0
|
|
br label %logic.rend5835
|
|
logic.rend5835:
|
|
br label %logic.end5832
|
|
logic.end5832:
|
|
%t26 = phi i1 [ false, %logic.from5830 ], [ %t25, %logic.rend5835 ]
|
|
br i1 %t26, label %then5836, label %endif5838
|
|
then5836:
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = icmp eq ptr %t27, null
|
|
br i1 %t28, label %panic5839, label %ok5840
|
|
panic5839:
|
|
call void @finch_panic(ptr @.str.3847, i64 3187, ptr @.str.3848)
|
|
unreachable
|
|
ok5840:
|
|
%t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 24
|
|
%t30 = getelementptr inbounds %S.cimport.CImports, ptr %t29, i32 0, i32 1
|
|
%t31 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t32 = load { ptr, i64, i64 }, ptr %t31
|
|
store { ptr, i64, i64 } %t32, ptr %a33
|
|
%t34 = call i64 @finch_map_find(ptr %t30, ptr %a33, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t35 = icmp slt i64 %t34, 0
|
|
br i1 %t35, label %map.missing5841, label %map.found5842
|
|
map.missing5841:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a36
|
|
store { ptr, i64, i64 } %t32, ptr %a37
|
|
call void @finch_buf_str(ptr %a36, ptr %a37, i32 1)
|
|
call void @finch_map_missing(ptr @.str.3849, i64 3187, ptr %a36)
|
|
unreachable
|
|
map.found5842:
|
|
%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 %then5843, label %endif5845
|
|
then5843:
|
|
%t49 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t50 = getelementptr inbounds %S.cimport.CConst, ptr %a46, i32 0, i32 3
|
|
%t51 = load { ptr, i64, i64 }, ptr %t50
|
|
%t52 = call { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %t51)
|
|
%t53 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t52, 0
|
|
%t54 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3850, i64 5, i64 0 })
|
|
%t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1
|
|
%t56 = insertvalue %S.gen.Val %t55, i1 true, 3
|
|
%t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2
|
|
ret %S.gen.Ref %t57
|
|
endif5845:
|
|
%t58 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t59 = getelementptr inbounds %S.cimport.CConst, ptr %a46, i32 0, i32 1
|
|
%t60 = load i64, ptr %t59
|
|
call void @finch_str_from_int(ptr %a61, i64 %t60)
|
|
%t62 = load { ptr, i64, i64 }, ptr %a61
|
|
%t63 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t62, 0
|
|
%t64 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3851, i64 3, i64 0 })
|
|
%t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1
|
|
%t66 = insertvalue %S.gen.Val %t65, i1 true, 3
|
|
%t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2
|
|
ret %S.gen.Ref %t67
|
|
endif5838:
|
|
%t68 = load i64, ptr %a14
|
|
%t69 = icmp slt i64 %t68, 0
|
|
br label %logic.from5846
|
|
logic.from5846:
|
|
br i1 %t69, label %logic.rhs5847, label %logic.end5848
|
|
logic.rhs5847:
|
|
%t70 = load ptr, ptr %a1
|
|
%t71 = icmp eq ptr %t70, null
|
|
br i1 %t71, label %panic5849, label %ok5850
|
|
panic5849:
|
|
call void @finch_panic(ptr @.str.3852, i64 3194, ptr @.str.3853)
|
|
unreachable
|
|
ok5850:
|
|
%t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 24
|
|
%t73 = getelementptr inbounds %S.cimport.CImports, ptr %t72, i32 0, i32 2
|
|
%t74 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t75 = load { ptr, i64, i64 }, ptr %t74
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
%t77 = call i64 @finch_map_find(ptr %t73, ptr %a76, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t78 = icmp sge i64 %t77, 0
|
|
%t79 = xor i1 %t78, true
|
|
br label %logic.rend5851
|
|
logic.rend5851:
|
|
br label %logic.end5848
|
|
logic.end5848:
|
|
%t80 = phi i1 [ false, %logic.from5846 ], [ %t79, %logic.rend5851 ]
|
|
br label %logic.from5852
|
|
logic.from5852:
|
|
br i1 %t80, label %logic.rhs5853, label %logic.end5854
|
|
logic.rhs5853:
|
|
%t81 = load ptr, ptr %a1
|
|
%t82 = icmp eq ptr %t81, null
|
|
br i1 %t82, label %panic5855, label %ok5856
|
|
panic5855:
|
|
call void @finch_panic(ptr @.str.3854, i64 3194, ptr @.str.3855)
|
|
unreachable
|
|
ok5856:
|
|
%t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 24
|
|
%t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.3856, i64 7, i64 0 }, ptr %a85
|
|
%t86 = call i64 @finch_map_find(ptr %t84, ptr %a85, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t87 = icmp sge i64 %t86, 0
|
|
br label %logic.rend5857
|
|
logic.rend5857:
|
|
br label %logic.end5854
|
|
logic.end5854:
|
|
%t88 = phi i1 [ false, %logic.from5852 ], [ %t87, %logic.rend5857 ]
|
|
br label %logic.from5858
|
|
logic.from5858:
|
|
br i1 %t88, label %logic.rhs5859, label %logic.end5860
|
|
logic.rhs5859:
|
|
%t89 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t90 = load { ptr, i64, i64 }, ptr %t89
|
|
store { ptr, i64, i64 } %t90, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.3857, i64 5, i64 0 }, ptr %a92
|
|
%t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92)
|
|
%t94 = icmp ne i32 %t93, 0
|
|
br label %logic.from5861
|
|
logic.from5861:
|
|
br i1 %t94, label %logic.end5863, label %logic.rhs5862
|
|
logic.rhs5862:
|
|
%t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t96 = load { ptr, i64, i64 }, ptr %t95
|
|
store { ptr, i64, i64 } %t96, ptr %a97
|
|
store { ptr, i64, i64 } { ptr @.str.3858, i64 6, i64 0 }, ptr %a98
|
|
%t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98)
|
|
%t100 = icmp ne i32 %t99, 0
|
|
br label %logic.rend5864
|
|
logic.rend5864:
|
|
br label %logic.end5863
|
|
logic.end5863:
|
|
%t101 = phi i1 [ true, %logic.from5861 ], [ %t100, %logic.rend5864 ]
|
|
br label %logic.from5865
|
|
logic.from5865:
|
|
br i1 %t101, label %logic.end5867, label %logic.rhs5866
|
|
logic.rhs5866:
|
|
%t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t103 = load { ptr, i64, i64 }, ptr %t102
|
|
store { ptr, i64, i64 } %t103, ptr %a104
|
|
store { ptr, i64, i64 } { ptr @.str.3859, i64 6, i64 0 }, ptr %a105
|
|
%t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105)
|
|
%t107 = icmp ne i32 %t106, 0
|
|
br label %logic.rend5868
|
|
logic.rend5868:
|
|
br label %logic.end5867
|
|
logic.end5867:
|
|
%t108 = phi i1 [ true, %logic.from5865 ], [ %t107, %logic.rend5868 ]
|
|
br label %logic.rend5869
|
|
logic.rend5869:
|
|
br label %logic.end5860
|
|
logic.end5860:
|
|
%t109 = phi i1 [ false, %logic.from5858 ], [ %t108, %logic.rend5869 ]
|
|
br i1 %t109, label %then5870, label %endif5872
|
|
then5870:
|
|
store { ptr, i64, i64 } { ptr @.str.3860, i64 1, i64 0 }, ptr %a110
|
|
%t111 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t112 = load { ptr, i64, i64 }, ptr %t111
|
|
store { ptr, i64, i64 } %t112, ptr %a113
|
|
store { ptr, i64, i64 } { ptr @.str.3861, i64 5, i64 0 }, ptr %a114
|
|
%t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114)
|
|
%t116 = icmp ne i32 %t115, 0
|
|
br i1 %t116, label %then5873, label %else5874
|
|
then5873:
|
|
store { ptr, i64, i64 } { ptr @.str.3862, i64 1, i64 0 }, ptr %a110
|
|
br label %endif5875
|
|
else5874:
|
|
%t117 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t118 = load { ptr, i64, i64 }, ptr %t117
|
|
store { ptr, i64, i64 } %t118, ptr %a119
|
|
store { ptr, i64, i64 } { ptr @.str.3863, i64 6, i64 0 }, ptr %a120
|
|
%t121 = call i32 @finch_str_eq(ptr %a119, ptr %a120)
|
|
%t122 = icmp ne i32 %t121, 0
|
|
br i1 %t122, label %then5876, label %endif5878
|
|
then5876:
|
|
store { ptr, i64, i64 } { ptr @.str.3864, i64 1, i64 0 }, ptr %a110
|
|
br label %endif5878
|
|
endif5878:
|
|
br label %endif5875
|
|
endif5875:
|
|
%t123 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t124 = load ptr, ptr %a1
|
|
%t125 = load { ptr, i64, i64 }, ptr %a110
|
|
store { ptr, i64, i64 } { ptr @.str.3865, i64 31, i64 0 }, ptr %a127
|
|
store { ptr, i64, i64 } %t125, ptr %a128
|
|
call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128)
|
|
%t129 = load { ptr, i64, i64 }, ptr %a126
|
|
store { ptr, i64, i64 } %t129, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.3866, i64 1, i64 0 }, ptr %a132
|
|
call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132)
|
|
%t133 = load { ptr, i64, i64 }, ptr %a130
|
|
%t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t133)
|
|
%t135 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0
|
|
%t136 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3867, i64 3, i64 0 })
|
|
%t137 = insertvalue %S.gen.Val %t135, %S.ast.Type %t136, 1
|
|
%t138 = insertvalue %S.gen.Ref %t123, %S.gen.Val %t137, 2
|
|
ret %S.gen.Ref %t138
|
|
endif5872:
|
|
%t139 = load i64, ptr %a14
|
|
%t140 = icmp slt i64 %t139, 0
|
|
br label %logic.from5879
|
|
logic.from5879:
|
|
br i1 %t140, label %logic.rhs5880, label %logic.end5881
|
|
logic.rhs5880:
|
|
%t141 = load ptr, ptr %a1
|
|
%t142 = icmp eq ptr %t141, null
|
|
br i1 %t142, label %panic5882, label %ok5883
|
|
panic5882:
|
|
call void @finch_panic(ptr @.str.3868, i64 3203, ptr @.str.3869)
|
|
unreachable
|
|
ok5883:
|
|
%t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 24
|
|
%t144 = getelementptr inbounds %S.cimport.CImports, ptr %t143, i32 0, i32 2
|
|
%t145 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t146 = load { ptr, i64, i64 }, ptr %t145
|
|
store { ptr, i64, i64 } %t146, ptr %a147
|
|
%t148 = call i64 @finch_map_find(ptr %t144, ptr %a147, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t149 = icmp sge i64 %t148, 0
|
|
br label %logic.rend5884
|
|
logic.rend5884:
|
|
br label %logic.end5881
|
|
logic.end5881:
|
|
%t150 = phi i1 [ false, %logic.from5879 ], [ %t149, %logic.rend5884 ]
|
|
br i1 %t150, label %then5885, label %endif5887
|
|
then5885:
|
|
%t151 = load ptr, ptr %a1
|
|
%t152 = load ptr, ptr %a1
|
|
%t153 = icmp eq ptr %t152, null
|
|
br i1 %t153, label %panic5888, label %ok5889
|
|
panic5888:
|
|
call void @finch_panic(ptr @.str.3870, i64 3204, ptr @.str.3871)
|
|
unreachable
|
|
ok5889:
|
|
%t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 24
|
|
%t155 = getelementptr inbounds %S.cimport.CImports, ptr %t154, i32 0, i32 2
|
|
%t156 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t157 = load { ptr, i64, i64 }, ptr %t156
|
|
store { ptr, i64, i64 } %t157, ptr %a158
|
|
%t159 = call i64 @finch_map_find(ptr %t155, ptr %a158, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t160 = icmp slt i64 %t159, 0
|
|
br i1 %t160, label %map.missing5890, label %map.found5891
|
|
map.missing5890:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a161
|
|
store { ptr, i64, i64 } %t157, ptr %a162
|
|
call void @finch_buf_str(ptr %a161, ptr %a162, i32 1)
|
|
call void @finch_map_missing(ptr @.str.3872, i64 3204, ptr %a161)
|
|
unreachable
|
|
map.found5891:
|
|
%t163 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t155, i32 0, i32 0
|
|
%t164 = load ptr, ptr %t163
|
|
%t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t164, i64 %t159
|
|
%t166 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t165, i32 0, i32 2
|
|
%t167 = load %S.ast.Type, ptr %t166
|
|
%t168 = load %S.ast.Node, ptr %a2
|
|
%t169 = call %S.ast.Type @finch.gen.resolve(ptr %t151, %S.ast.Type %t167, %S.ast.Node %t168)
|
|
store %S.ast.Type %t169, ptr %a170
|
|
%t171 = load ptr, ptr %a1
|
|
%t172 = icmp eq ptr %t171, null
|
|
br i1 %t172, label %panic5892, label %ok5893
|
|
panic5892:
|
|
call void @finch_panic(ptr @.str.3873, i64 3205, ptr @.str.3874)
|
|
unreachable
|
|
ok5893:
|
|
%t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 36
|
|
%t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1
|
|
%t175 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t176 = load { ptr, i64, i64 }, ptr %t175
|
|
store { ptr, i64, i64 } { ptr @.str.3875, i64 2, i64 0 }, ptr %a178
|
|
store { ptr, i64, i64 } %t176, ptr %a179
|
|
call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179)
|
|
%t180 = load { ptr, i64, i64 }, ptr %a177
|
|
store i64 -1, ptr %a181
|
|
%t182 = load i64, ptr %t174
|
|
%t183 = load ptr, ptr %t173
|
|
store i64 0, ptr %a184
|
|
br label %find.cond5894
|
|
find.cond5894:
|
|
%t185 = load i64, ptr %a184
|
|
%t186 = icmp slt i64 %t185, %t182
|
|
br i1 %t186, label %find.body5895, label %find.end5898
|
|
find.body5895:
|
|
%t187 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i64 %t185
|
|
%t188 = load { ptr, i64, i64 }, ptr %t187
|
|
store { ptr, i64, i64 } %t188, ptr %a189
|
|
store { ptr, i64, i64 } %t180, ptr %a190
|
|
%t191 = call i32 @finch_str_eq(ptr %a189, ptr %a190)
|
|
%t192 = icmp ne i32 %t191, 0
|
|
br i1 %t192, label %find.hit5896, label %find.next5897
|
|
find.hit5896:
|
|
store i64 %t185, ptr %a181
|
|
br label %find.end5898
|
|
find.next5897:
|
|
%t193 = add i64 %t185, 1
|
|
store i64 %t193, ptr %a184
|
|
br label %find.cond5894
|
|
find.end5898:
|
|
%t194 = load i64, ptr %a181
|
|
%t195 = icmp sge i64 %t194, 0
|
|
%t196 = xor i1 %t195, true
|
|
br i1 %t196, label %then5899, label %endif5901
|
|
then5899:
|
|
%t197 = load ptr, ptr %a1
|
|
%t198 = icmp eq ptr %t197, null
|
|
br i1 %t198, label %panic5902, label %ok5903
|
|
panic5902:
|
|
call void @finch_panic(ptr @.str.3876, i64 3206, ptr @.str.3877)
|
|
unreachable
|
|
ok5903:
|
|
%t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 36
|
|
%t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i32 0, i32 1
|
|
%t201 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t202 = load { ptr, i64, i64 }, ptr %t201
|
|
store { ptr, i64, i64 } { ptr @.str.3878, i64 2, i64 0 }, ptr %a204
|
|
store { ptr, i64, i64 } %t202, ptr %a205
|
|
call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205)
|
|
%t206 = load { ptr, i64, i64 }, ptr %a203
|
|
%t207 = load i64, ptr %t200
|
|
%t208 = add i64 %t207, 1
|
|
call void @finch_arr_reserve(ptr %t199, i64 %t208, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t209 = load ptr, ptr %t199
|
|
%t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i64 %t207
|
|
store { ptr, i64, i64 } %t206, ptr %t210
|
|
store i64 %t208, ptr %t200
|
|
%t211 = load ptr, ptr %a1
|
|
%t212 = icmp eq ptr %t211, null
|
|
br i1 %t212, label %panic5904, label %ok5905
|
|
panic5904:
|
|
call void @finch_panic(ptr @.str.3879, i64 3207, ptr @.str.3880)
|
|
unreachable
|
|
ok5905:
|
|
%t213 = getelementptr inbounds %S.gen.Gen, ptr %t211, i32 0, i32 2
|
|
%t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t213, i32 0, i32 1
|
|
%t215 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t216 = load { ptr, i64, i64 }, ptr %t215
|
|
store { ptr, i64, i64 } { ptr @.str.3881, i64 1, i64 0 }, ptr %a218
|
|
store { ptr, i64, i64 } %t216, ptr %a219
|
|
call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219)
|
|
%t220 = load { ptr, i64, i64 }, ptr %a217
|
|
store { ptr, i64, i64 } %t220, ptr %a222
|
|
store { ptr, i64, i64 } { ptr @.str.3882, i64 19, i64 0 }, ptr %a223
|
|
call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223)
|
|
%t224 = load { ptr, i64, i64 }, ptr %a221
|
|
%t225 = load ptr, ptr %a1
|
|
%t226 = load %S.ast.Type, ptr %a170
|
|
%t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226)
|
|
store { ptr, i64, i64 } %t224, ptr %a229
|
|
store { ptr, i64, i64 } %t227, ptr %a230
|
|
call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230)
|
|
%t231 = load { ptr, i64, i64 }, ptr %a228
|
|
%t232 = load i64, ptr %t214
|
|
%t233 = add i64 %t232, 1
|
|
call void @finch_arr_reserve(ptr %t213, i64 %t233, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t234 = load ptr, ptr %t213
|
|
%t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i64 %t232
|
|
store { ptr, i64, i64 } %t231, ptr %t235
|
|
store i64 %t233, ptr %t214
|
|
br label %endif5901
|
|
endif5901:
|
|
%t236 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t237 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t238 = load { ptr, i64, i64 }, ptr %t237
|
|
store { ptr, i64, i64 } { ptr @.str.3883, i64 1, i64 0 }, ptr %a240
|
|
store { ptr, i64, i64 } %t238, ptr %a241
|
|
call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241)
|
|
%t242 = load { ptr, i64, i64 }, ptr %a239
|
|
%t243 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t242, 0
|
|
%t244 = load %S.ast.Type, ptr %a170
|
|
store %S.ast.Type %t244, ptr %a245
|
|
call void @finch.copy.S_ast_Type(ptr %a246, ptr %a245)
|
|
%t247 = load %S.ast.Type, ptr %a246
|
|
%t248 = insertvalue %S.gen.Place %t243, %S.ast.Type %t247, 1
|
|
%t249 = insertvalue %S.gen.Ref %t236, %S.gen.Place %t248, 1
|
|
ret %S.gen.Ref %t249
|
|
endif5887:
|
|
%t250 = load i64, ptr %a14
|
|
%t251 = icmp slt i64 %t250, 0
|
|
br i1 %t251, label %then5906, label %endif5908
|
|
then5906:
|
|
%t252 = load ptr, ptr %a1
|
|
%t253 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t254 = load { ptr, i64, i64 }, ptr %t253
|
|
%t255 = call i1 @finch.gen.imports(ptr %t252, { ptr, i64, i64 } %t254)
|
|
br i1 %t255, label %then5909, label %endif5911
|
|
then5909:
|
|
%t256 = load ptr, ptr %a1
|
|
%t257 = load %S.ast.Node, ptr %a2
|
|
%t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t259 = load { ptr, i64, i64 }, ptr %t258
|
|
store { ptr, i64, i64 } { ptr @.str.3884, i64 1, i64 0 }, ptr %a261
|
|
store { ptr, i64, i64 } %t259, ptr %a262
|
|
call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262)
|
|
%t263 = load { ptr, i64, i64 }, ptr %a260
|
|
store { ptr, i64, i64 } %t263, ptr %a265
|
|
store { ptr, i64, i64 } { ptr @.str.3885, i64 43, i64 0 }, ptr %a266
|
|
call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266)
|
|
%t267 = load { ptr, i64, i64 }, ptr %a264
|
|
%t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t269 = load { ptr, i64, i64 }, ptr %t268
|
|
store { ptr, i64, i64 } %t267, ptr %a271
|
|
store { ptr, i64, i64 } %t269, ptr %a272
|
|
call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272)
|
|
%t273 = load { ptr, i64, i64 }, ptr %a270
|
|
store { ptr, i64, i64 } %t273, ptr %a275
|
|
store { ptr, i64, i64 } { ptr @.str.3886, i64 10, i64 0 }, ptr %a276
|
|
call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276)
|
|
%t277 = load { ptr, i64, i64 }, ptr %a274
|
|
call void @finch.gen.fail(ptr %t256, %S.ast.Node %t257, { ptr, i64, i64 } %t277)
|
|
br label %endif5911
|
|
endif5911:
|
|
%t278 = load ptr, ptr %a1
|
|
%t279 = load %S.ast.Node, ptr %a2
|
|
%t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t281 = load { ptr, i64, i64 }, ptr %t280
|
|
store { ptr, i64, i64 } { ptr @.str.3887, i64 28, i64 0 }, ptr %a283
|
|
store { ptr, i64, i64 } %t281, ptr %a284
|
|
call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284)
|
|
%t285 = load { ptr, i64, i64 }, ptr %a282
|
|
store { ptr, i64, i64 } %t285, ptr %a287
|
|
store { ptr, i64, i64 } { ptr @.str.3888, i64 1, i64 0 }, ptr %a288
|
|
call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288)
|
|
%t289 = load { ptr, i64, i64 }, ptr %a286
|
|
call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } %t289)
|
|
br label %endif5908
|
|
endif5908:
|
|
%t290 = load ptr, ptr %a1
|
|
%t291 = load i64, ptr %a14
|
|
%t292 = call %S.gen.Var @finch.gen.varAt(ptr %t290, i64 %t291)
|
|
store %S.gen.Var %t292, ptr %a293
|
|
%t294 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t295 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 2
|
|
%t296 = load { ptr, i64, i64 }, ptr %t295
|
|
store { ptr, i64, i64 } %t296, ptr %a297
|
|
call void @finch_str_copy(ptr %a298, ptr %a297)
|
|
%t299 = load { ptr, i64, i64 }, ptr %a298
|
|
%t300 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t299, 0
|
|
%t301 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 1
|
|
%t302 = load %S.ast.Type, ptr %t301
|
|
store %S.ast.Type %t302, ptr %a303
|
|
call void @finch.copy.S_ast_Type(ptr %a304, ptr %a303)
|
|
%t305 = load %S.ast.Type, ptr %a304
|
|
%t306 = insertvalue %S.gen.Place %t300, %S.ast.Type %t305, 1
|
|
%t307 = insertvalue %S.gen.Ref %t294, %S.gen.Place %t306, 1
|
|
ret %S.gen.Ref %t307
|
|
endif5829:
|
|
%t308 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t309 = load { ptr, i64, i64 }, ptr %t308
|
|
store { ptr, i64, i64 } %t309, ptr %a310
|
|
store { ptr, i64, i64 } { ptr @.str.3889, i64 6, i64 0 }, ptr %a311
|
|
%t312 = call i32 @finch_str_eq(ptr %a310, ptr %a311)
|
|
%t313 = icmp ne i32 %t312, 0
|
|
br i1 %t313, label %then5912, label %endif5914
|
|
then5912:
|
|
%t314 = load ptr, ptr %a1
|
|
%t315 = load %S.ast.Node, ptr %a2
|
|
%t316 = load i1, ptr %a3
|
|
%t317 = call %S.gen.Ref @finch.gen.member(ptr %t314, %S.ast.Node %t315, i1 %t316)
|
|
ret %S.gen.Ref %t317
|
|
endif5914:
|
|
%t318 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t319 = load { ptr, i64, i64 }, ptr %t318
|
|
store { ptr, i64, i64 } %t319, ptr %a320
|
|
store { ptr, i64, i64 } { ptr @.str.3890, i64 5, i64 0 }, ptr %a321
|
|
%t322 = call i32 @finch_str_eq(ptr %a320, ptr %a321)
|
|
%t323 = icmp ne i32 %t322, 0
|
|
br i1 %t323, label %then5915, label %endif5917
|
|
then5915:
|
|
%t324 = load ptr, ptr %a1
|
|
%t325 = load %S.ast.Node, ptr %a2
|
|
%t326 = load i1, ptr %a3
|
|
%t327 = call %S.gen.Ref @finch.gen.index(ptr %t324, %S.ast.Node %t325, i1 %t326)
|
|
ret %S.gen.Ref %t327
|
|
endif5917:
|
|
%t328 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t329 = load ptr, ptr %a1
|
|
%t330 = load %S.ast.Node, ptr %a2
|
|
%t331 = call %S.gen.Val @finch.gen.expr(ptr %t329, %S.ast.Node %t330)
|
|
%t332 = insertvalue %S.gen.Ref %t328, %S.gen.Val %t331, 2
|
|
ret %S.gen.Ref %t332
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca i64, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
call void @finch_str_copy(ptr %a4, ptr %a3)
|
|
%t5 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.3892, i64 1, i64 0 }, ptr %a10
|
|
%t11 = call i32 @finch_str_starts(ptr %a8, ptr %a10)
|
|
%t12 = icmp ne i32 %t11, 0
|
|
br i1 %t12, label %then5918, label %endif5920
|
|
then5918:
|
|
%t13 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.3893, i64 1, i64 0 }, ptr %a15
|
|
store { ptr, i64, i64 } %t13, ptr %a16
|
|
call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t17, ptr %a6
|
|
br label %endif5920
|
|
endif5920:
|
|
%t18 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t18, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.3895, i64 1, i64 0 }, ptr %a21
|
|
%t22 = call i64 @finch_str_find(ptr %a19, ptr %a21)
|
|
%t23 = icmp sge i64 %t22, 0
|
|
%t24 = xor i1 %t23, true
|
|
br i1 %t24, label %then5921, label %endif5923
|
|
then5921:
|
|
%t25 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.3897, i64 1, i64 0 }, ptr %a28
|
|
%t29 = call i64 @finch_str_find(ptr %a26, ptr %a28)
|
|
store i64 %t29, ptr %a30
|
|
%t31 = load i64, ptr %a30
|
|
%t32 = icmp slt i64 %t31, 0
|
|
br i1 %t32, label %then5924, label %endif5926
|
|
then5924:
|
|
%t33 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t33, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.3899, i64 1, i64 0 }, ptr %a36
|
|
%t37 = call i64 @finch_str_find(ptr %a34, ptr %a36)
|
|
store i64 %t37, ptr %a30
|
|
br label %endif5926
|
|
endif5926:
|
|
%t38 = load i64, ptr %a30
|
|
%t39 = icmp slt i64 %t38, 0
|
|
br i1 %t39, label %then5927, label %endif5929
|
|
then5927:
|
|
%t40 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t40, ptr %a42
|
|
store { ptr, i64, i64 } { ptr @.str.3900, i64 2, i64 0 }, ptr %a43
|
|
call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a41
|
|
ret { ptr, i64, i64 } %t44
|
|
endif5929:
|
|
%t45 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t45, ptr %a46
|
|
%t48 = load i64, ptr %a30
|
|
call void @finch_str_sub(ptr %a47, ptr %a46, i64 0, i64 %t48, ptr @.str.3901, i64 3243)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } %t49, ptr %a51
|
|
store { ptr, i64, i64 } { ptr @.str.3902, i64 2, i64 0 }, ptr %a52
|
|
call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52)
|
|
%t53 = load { ptr, i64, i64 }, ptr %a50
|
|
%t54 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
%t57 = load i64, ptr %a30
|
|
%t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t59 = load i64, ptr %t58
|
|
call void @finch_str_sub(ptr %a56, ptr %a55, i64 %t57, i64 %t59, ptr @.str.3903, i64 3243)
|
|
%t60 = load { ptr, i64, i64 }, ptr %a56
|
|
store { ptr, i64, i64 } %t53, ptr %a62
|
|
store { ptr, i64, i64 } %t60, ptr %a63
|
|
call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a61
|
|
ret { ptr, i64, i64 } %t64
|
|
endif5923:
|
|
%t65 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t65, ptr %a66
|
|
call void @finch_str_copy(ptr %a67, ptr %a66)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a67
|
|
ret { ptr, i64, i64 } %t68
|
|
}
|
|
|
|
define internal i64 @finch.gen.enumNamed(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.3904, i64 3, i64 0 }, ptr %a6
|
|
%t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6)
|
|
%t8 = icmp ne i32 %t7, 0
|
|
br label %logic.from5930
|
|
logic.from5930:
|
|
br i1 %t8, label %logic.rhs5931, label %logic.end5932
|
|
logic.rhs5931:
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t11 = load { ptr, i64, i64 }, ptr %t10
|
|
%t12 = call i64 @finch.gen.lookup(ptr %t9, { ptr, i64, i64 } %t11)
|
|
%t13 = icmp slt i64 %t12, 0
|
|
br label %logic.rend5933
|
|
logic.rend5933:
|
|
br label %logic.end5932
|
|
logic.end5932:
|
|
%t14 = phi i1 [ false, %logic.from5930 ], [ %t13, %logic.rend5933 ]
|
|
br i1 %t14, label %then5934, label %endif5936
|
|
then5934:
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = load ptr, ptr %a1
|
|
%t17 = icmp eq ptr %t16, null
|
|
br i1 %t17, label %panic5937, label %ok5938
|
|
panic5937:
|
|
call void @finch_panic(ptr @.str.3905, i64 3251, ptr @.str.3906)
|
|
unreachable
|
|
ok5938:
|
|
%t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 13
|
|
%t19 = load { ptr, i64, i64 }, ptr %t18
|
|
%t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t21 = load { ptr, i64, i64 }, ptr %t20
|
|
%t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21)
|
|
ret i64 %t22
|
|
endif5936:
|
|
%t23 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0
|
|
%t24 = load { ptr, i64, i64 }, ptr %t23
|
|
store { ptr, i64, i64 } %t24, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.3907, i64 6, i64 0 }, ptr %a26
|
|
%t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26)
|
|
%t28 = icmp ne i32 %t27, 0
|
|
br label %logic.from5939
|
|
logic.from5939:
|
|
br i1 %t28, label %logic.rhs5940, label %logic.end5941
|
|
logic.rhs5940:
|
|
%t29 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t30 = load { ptr, i64, i64 }, ptr %t29
|
|
%t31 = extractvalue { ptr, i64, i64 } %t30, 1
|
|
%t32 = icmp uge i64 0, %t31
|
|
br i1 %t32, label %range5942, label %inrange5943
|
|
range5942:
|
|
call void @finch_panic_index(ptr @.str.3908, i64 3253, i64 0, i64 %t31)
|
|
unreachable
|
|
inrange5943:
|
|
%t33 = extractvalue { ptr, i64, i64 } %t30, 0
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 0
|
|
%t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i32 0, i32 0
|
|
%t36 = load { ptr, i64, i64 }, ptr %t35
|
|
store { ptr, i64, i64 } %t36, ptr %a37
|
|
store { ptr, i64, i64 } { ptr @.str.3909, i64 3, i64 0 }, ptr %a38
|
|
%t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38)
|
|
%t40 = icmp ne i32 %t39, 0
|
|
br label %logic.rend5944
|
|
logic.rend5944:
|
|
br label %logic.end5941
|
|
logic.end5941:
|
|
%t41 = phi i1 [ false, %logic.from5939 ], [ %t40, %logic.rend5944 ]
|
|
br label %logic.from5945
|
|
logic.from5945:
|
|
br i1 %t41, label %logic.rhs5946, label %logic.end5947
|
|
logic.rhs5946:
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t44 = load { ptr, i64, i64 }, ptr %t43
|
|
%t45 = extractvalue { ptr, i64, i64 } %t44, 1
|
|
%t46 = icmp uge i64 0, %t45
|
|
br i1 %t46, label %range5948, label %inrange5949
|
|
range5948:
|
|
call void @finch_panic_index(ptr @.str.3910, i64 3253, i64 0, i64 %t45)
|
|
unreachable
|
|
inrange5949:
|
|
%t47 = extractvalue { ptr, i64, i64 } %t44, 0
|
|
%t48 = getelementptr inbounds %S.ast.Node, ptr %t47, i64 0
|
|
%t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i32 0, i32 1
|
|
%t50 = load { ptr, i64, i64 }, ptr %t49
|
|
%t51 = call i64 @finch.gen.lookup(ptr %t42, { ptr, i64, i64 } %t50)
|
|
%t52 = icmp slt i64 %t51, 0
|
|
br label %logic.rend5950
|
|
logic.rend5950:
|
|
br label %logic.end5947
|
|
logic.end5947:
|
|
%t53 = phi i1 [ false, %logic.from5945 ], [ %t52, %logic.rend5950 ]
|
|
br label %logic.from5951
|
|
logic.from5951:
|
|
br i1 %t53, label %logic.rhs5952, label %logic.end5953
|
|
logic.rhs5952:
|
|
%t54 = load ptr, ptr %a1
|
|
%t55 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t56 = load { ptr, i64, i64 }, ptr %t55
|
|
%t57 = extractvalue { ptr, i64, i64 } %t56, 1
|
|
%t58 = icmp uge i64 0, %t57
|
|
br i1 %t58, label %range5954, label %inrange5955
|
|
range5954:
|
|
call void @finch_panic_index(ptr @.str.3911, i64 3253, i64 0, i64 %t57)
|
|
unreachable
|
|
inrange5955:
|
|
%t59 = extractvalue { ptr, i64, i64 } %t56, 0
|
|
%t60 = getelementptr inbounds %S.ast.Node, ptr %t59, i64 0
|
|
%t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i32 0, i32 1
|
|
%t62 = load { ptr, i64, i64 }, ptr %t61
|
|
%t63 = call i1 @finch.gen.imports(ptr %t54, { ptr, i64, i64 } %t62)
|
|
br label %logic.rend5956
|
|
logic.rend5956:
|
|
br label %logic.end5953
|
|
logic.end5953:
|
|
%t64 = phi i1 [ false, %logic.from5951 ], [ %t63, %logic.rend5956 ]
|
|
br i1 %t64, label %then5957, label %endif5959
|
|
then5957:
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t67 = load { ptr, i64, i64 }, ptr %t66
|
|
%t68 = extractvalue { ptr, i64, i64 } %t67, 1
|
|
%t69 = icmp uge i64 0, %t68
|
|
br i1 %t69, label %range5960, label %inrange5961
|
|
range5960:
|
|
call void @finch_panic_index(ptr @.str.3912, i64 3254, i64 0, i64 %t68)
|
|
unreachable
|
|
inrange5961:
|
|
%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
|
|
endif5959:
|
|
ret i64 -1
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.enumValue(ptr %p0, %S.ast.Node %p1, i64 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i64, align 16
|
|
%a14 = alloca %S.gen.EnumDef, align 16
|
|
%a15 = alloca %S.gen.EnumDef, align 16
|
|
%a17 = alloca %S.gen.EnumDef, align 16
|
|
%a22 = alloca i64, align 16
|
|
%a25 = alloca i64, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca i64, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = 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
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i64 %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = icmp eq ptr %t4, null
|
|
br i1 %t5, label %panic5962, label %ok5963
|
|
panic5962:
|
|
call void @finch_panic(ptr @.str.3913, i64 3261, ptr @.str.3914)
|
|
unreachable
|
|
ok5963:
|
|
%t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20
|
|
%t7 = load i64, ptr %a3
|
|
%t8 = load { ptr, i64, i64 }, ptr %t6
|
|
%t9 = extractvalue { ptr, i64, i64 } %t8, 1
|
|
%t10 = icmp uge i64 %t7, %t9
|
|
br i1 %t10, label %range5964, label %inrange5965
|
|
range5964:
|
|
call void @finch_panic_index(ptr @.str.3915, i64 3261, i64 %t7, i64 %t9)
|
|
unreachable
|
|
inrange5965:
|
|
%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.cond5966
|
|
find.cond5966:
|
|
%t26 = load i64, ptr %a25
|
|
%t27 = icmp slt i64 %t26, %t23
|
|
br i1 %t27, label %find.body5967, label %find.end5970
|
|
find.body5967:
|
|
%t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i64 %t26
|
|
%t29 = load { ptr, i64, i64 }, ptr %t28
|
|
store { ptr, i64, i64 } %t29, ptr %a30
|
|
store { ptr, i64, i64 } %t21, ptr %a31
|
|
%t32 = call i32 @finch_str_eq(ptr %a30, ptr %a31)
|
|
%t33 = icmp ne i32 %t32, 0
|
|
br i1 %t33, label %find.hit5968, label %find.next5969
|
|
find.hit5968:
|
|
store i64 %t26, ptr %a22
|
|
br label %find.end5970
|
|
find.next5969:
|
|
%t34 = add i64 %t26, 1
|
|
store i64 %t34, ptr %a25
|
|
br label %find.cond5966
|
|
find.end5970:
|
|
%t35 = load i64, ptr %a22
|
|
store i64 %t35, ptr %a36
|
|
%t37 = load i64, ptr %a36
|
|
%t38 = icmp slt i64 %t37, 0
|
|
br i1 %t38, label %then5971, label %endif5973
|
|
then5971:
|
|
%t39 = load ptr, ptr %a1
|
|
%t40 = load %S.ast.Node, ptr %a2
|
|
%t41 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1
|
|
%t42 = load { ptr, i64, i64 }, ptr %t41
|
|
store { ptr, i64, i64 } { ptr @.str.3916, i64 9, i64 0 }, ptr %a44
|
|
store { ptr, i64, i64 } %t42, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
store { ptr, i64, i64 } %t46, ptr %a48
|
|
store { ptr, i64, i64 } { ptr @.str.3917, i64 17, i64 0 }, ptr %a49
|
|
call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49)
|
|
%t50 = load { ptr, i64, i64 }, ptr %a47
|
|
%t51 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t52 = load { ptr, i64, i64 }, ptr %t51
|
|
store { ptr, i64, i64 } %t50, ptr %a54
|
|
store { ptr, i64, i64 } %t52, ptr %a55
|
|
call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t56, ptr %a58
|
|
store { ptr, i64, i64 } { ptr @.str.3918, i64 11, i64 0 }, ptr %a59
|
|
call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59)
|
|
%t60 = load { ptr, i64, i64 }, ptr %a57
|
|
%t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2
|
|
%t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.3919, i64 2, i64 0 }, ptr %a63
|
|
call void @finch_str_join(ptr %a64, ptr %t61, ptr %a63)
|
|
%t65 = load { ptr, i64, i64 }, ptr %a64
|
|
store { ptr, i64, i64 } %t60, ptr %a67
|
|
store { ptr, i64, i64 } %t65, ptr %a68
|
|
call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68)
|
|
%t69 = load { ptr, i64, i64 }, ptr %a66
|
|
store { ptr, i64, i64 } %t69, ptr %a71
|
|
store { ptr, i64, i64 } { ptr @.str.3920, i64 1, i64 0 }, ptr %a72
|
|
call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72)
|
|
%t73 = load { ptr, i64, i64 }, ptr %a70
|
|
call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t73)
|
|
br label %endif5973
|
|
endif5973:
|
|
%t74 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3
|
|
%t75 = load i64, ptr %a36
|
|
%t76 = load { ptr, i64, i64 }, ptr %t74
|
|
%t77 = extractvalue { ptr, i64, i64 } %t76, 1
|
|
%t78 = icmp uge i64 %t75, %t77
|
|
br i1 %t78, label %range5974, label %inrange5975
|
|
range5974:
|
|
call void @finch_panic_index(ptr @.str.3921, i64 3266, i64 %t75, i64 %t77)
|
|
unreachable
|
|
inrange5975:
|
|
%t79 = extractvalue { ptr, i64, i64 } %t76, 0
|
|
%t80 = getelementptr inbounds i64, ptr %t79, i64 %t75
|
|
%t81 = load i64, ptr %t80
|
|
call void @finch_str_from_int(ptr %a82, i64 %t81)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a82
|
|
%t84 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t83, 0
|
|
%t85 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.3922, i64 4, i64 0 }, 0
|
|
%t86 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1
|
|
%t87 = load { ptr, i64, i64 }, ptr %t86
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
call void @finch_str_copy(ptr %a89, ptr %a88)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a89
|
|
%t91 = insertvalue %S.ast.Type %t85, { ptr, i64, i64 } %t90, 2
|
|
%t92 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0
|
|
%t93 = load { ptr, i64, i64 }, ptr %t92
|
|
store { ptr, i64, i64 } %t93, ptr %a94
|
|
call void @finch_str_copy(ptr %a95, ptr %a94)
|
|
%t96 = load { ptr, i64, i64 }, ptr %a95
|
|
%t97 = insertvalue %S.ast.Type %t91, { ptr, i64, i64 } %t96, 3
|
|
%t98 = insertvalue %S.gen.Val %t84, %S.ast.Type %t97, 1
|
|
ret %S.gen.Val %t98
|
|
}
|
|
|
|
define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i1, align 16
|
|
%a13 = alloca i64, align 16
|
|
%a35 = alloca %S.gen.Ref, align 16
|
|
%a39 = alloca %S.ast.Type, align 16
|
|
%a40 = alloca %S.ast.Type, align 16
|
|
%a42 = alloca %S.ast.Type, align 16
|
|
%a48 = alloca %S.ast.Type, align 16
|
|
%a49 = alloca %S.ast.Type, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca %S.ast.Type, align 16
|
|
%a108 = alloca %S.ast.Type, align 16
|
|
%a110 = alloca %S.ast.Type, align 16
|
|
%a111 = alloca i1, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca i64, align 16
|
|
%a137 = alloca i64, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca %S.ast.Type, align 16
|
|
%a166 = alloca %S.ast.Type, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca %S.ast.Type, align 16
|
|
%a196 = alloca %S.ast.Type, align 16
|
|
%a201 = alloca %S.ast.Type, align 16
|
|
%a202 = alloca %S.ast.Type, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a242 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a314 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a356 = alloca { ptr, i64, i64 }, align 16
|
|
%a357 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = alloca { ptr, i64, i64 }, align 16
|
|
%a360 = alloca { ptr, i64, i64 }, align 16
|
|
%a361 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a378 = alloca { ptr, i64, i64 }, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a384 = alloca { ptr, i64, i64 }, align 16
|
|
%a385 = alloca { ptr, i64, i64 }, align 16
|
|
%a391 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a398 = alloca { ptr, i64, i64 }, align 16
|
|
%a399 = alloca { ptr, i64, i64 }, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a410 = alloca { ptr, i64, i64 }, align 16
|
|
%a411 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a423 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a428 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a434 = alloca { ptr, i64, i64 }, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a438 = alloca { ptr, i64, i64 }, align 16
|
|
%a439 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a443 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a458 = alloca { ptr, i64, i64 }, align 16
|
|
%a459 = alloca { ptr, i64, i64 }, align 16
|
|
%a461 = alloca { ptr, i64, i64 }, align 16
|
|
%a462 = alloca { ptr, i64, i64 }, align 16
|
|
%a463 = alloca { ptr, i64, i64 }, align 16
|
|
%a468 = alloca { ptr, i64, i64 }, align 16
|
|
%a469 = alloca { ptr, i64, i64 }, align 16
|
|
%a470 = alloca { ptr, i64, i64 }, align 16
|
|
%a472 = alloca { ptr, i64, i64 }, align 16
|
|
%a473 = alloca { ptr, i64, i64 }, align 16
|
|
%a474 = alloca { ptr, i64, i64 }, align 16
|
|
%a483 = alloca { ptr, i64, i64 }, align 16
|
|
%a484 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca { ptr, i64, i64 }, align 16
|
|
%a492 = alloca { ptr, i64, i64 }, align 16
|
|
%a493 = alloca { ptr, i64, i64 }, align 16
|
|
%a497 = alloca { ptr, i64, i64 }, align 16
|
|
%a498 = alloca { ptr, i64, i64 }, align 16
|
|
%a499 = alloca { ptr, i64, i64 }, align 16
|
|
%a501 = alloca { ptr, i64, i64 }, align 16
|
|
%a502 = alloca { ptr, i64, i64 }, align 16
|
|
%a503 = alloca { ptr, i64, i64 }, align 16
|
|
%a520 = alloca %S.gen.StructDef, align 16
|
|
%a521 = alloca %S.gen.StructDef, align 16
|
|
%a523 = alloca %S.gen.StructDef, align 16
|
|
%a528 = alloca i64, align 16
|
|
%a531 = alloca i64, align 16
|
|
%a536 = alloca { ptr, i64, i64 }, align 16
|
|
%a537 = alloca { ptr, i64, i64 }, align 16
|
|
%a542 = alloca i64, align 16
|
|
%a549 = alloca { ptr, i64, i64 }, align 16
|
|
%a550 = alloca { ptr, i64, i64 }, align 16
|
|
%a551 = alloca { ptr, i64, i64 }, align 16
|
|
%a553 = alloca { ptr, i64, i64 }, align 16
|
|
%a554 = alloca { ptr, i64, i64 }, align 16
|
|
%a555 = alloca { ptr, i64, i64 }, align 16
|
|
%a559 = alloca { ptr, i64, i64 }, align 16
|
|
%a560 = alloca { ptr, i64, i64 }, align 16
|
|
%a561 = alloca { ptr, i64, i64 }, align 16
|
|
%a563 = alloca { ptr, i64, i64 }, align 16
|
|
%a564 = alloca { ptr, i64, i64 }, align 16
|
|
%a565 = alloca { ptr, i64, i64 }, align 16
|
|
%a569 = alloca { ptr, i64, i64 }, align 16
|
|
%a570 = alloca { ptr, i64, i64 }, align 16
|
|
%a572 = alloca { ptr, i64, i64 }, align 16
|
|
%a573 = alloca { ptr, i64, i64 }, align 16
|
|
%a574 = alloca { ptr, i64, i64 }, align 16
|
|
%a576 = alloca { ptr, i64, i64 }, align 16
|
|
%a577 = alloca { ptr, i64, i64 }, align 16
|
|
%a578 = alloca { ptr, i64, i64 }, align 16
|
|
%a588 = alloca %S.ast.Type, align 16
|
|
%a589 = alloca %S.ast.Type, align 16
|
|
%a591 = alloca %S.ast.Type, align 16
|
|
%a598 = alloca { ptr, i64, i64 }, align 16
|
|
%a599 = alloca { ptr, i64, i64 }, align 16
|
|
%a600 = alloca { ptr, i64, i64 }, align 16
|
|
%a602 = alloca { ptr, i64, i64 }, align 16
|
|
%a603 = alloca { ptr, i64, i64 }, align 16
|
|
%a604 = alloca { ptr, i64, i64 }, align 16
|
|
%a609 = alloca { ptr, i64, i64 }, align 16
|
|
%a610 = alloca { ptr, i64, i64 }, align 16
|
|
%a611 = alloca { ptr, i64, i64 }, align 16
|
|
%a613 = alloca { ptr, i64, i64 }, align 16
|
|
%a614 = alloca { ptr, i64, i64 }, align 16
|
|
%a615 = alloca { ptr, i64, i64 }, align 16
|
|
%a625 = alloca { ptr, i64, i64 }, align 16
|
|
%a627 = alloca { ptr, i64, i64 }, align 16
|
|
%a628 = alloca { ptr, i64, i64 }, align 16
|
|
%a629 = alloca { ptr, i64, i64 }, align 16
|
|
%a632 = alloca { ptr, i64, i64 }, align 16
|
|
%a635 = alloca { ptr, i64, i64 }, align 16
|
|
%a636 = alloca { ptr, i64, i64 }, align 16
|
|
%a640 = alloca %S.ast.Type, align 16
|
|
%a641 = alloca %S.ast.Type, align 16
|
|
%a649 = alloca { ptr, i64, i64 }, align 16
|
|
%a650 = alloca { ptr, i64, i64 }, align 16
|
|
%a651 = alloca { ptr, i64, i64 }, align 16
|
|
%a653 = alloca { ptr, i64, i64 }, align 16
|
|
%a654 = alloca { ptr, i64, i64 }, align 16
|
|
%a655 = 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
|
|
%a676 = 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
|
|
%a683 = alloca { ptr, i64, i64 }, align 16
|
|
%a685 = alloca { ptr, i64, i64 }, align 16
|
|
%a686 = alloca { ptr, i64, i64 }, align 16
|
|
%a690 = alloca %S.ast.Type, align 16
|
|
%a691 = alloca %S.ast.Type, align 16
|
|
%a694 = alloca %S.gen.Val, align 16
|
|
%a708 = alloca %S.ast.Type, align 16
|
|
%a709 = alloca %S.ast.Type, align 16
|
|
%a715 = alloca %S.gen.Val, align 16
|
|
%a716 = alloca %S.gen.Val, align 16
|
|
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 %range5976, label %inrange5977
|
|
range5976:
|
|
call void @finch_panic_index(ptr @.str.3923, i64 3270, i64 0, i64 %t7)
|
|
unreachable
|
|
inrange5977:
|
|
%t9 = extractvalue { ptr, i64, i64 } %t6, 0
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0
|
|
%t11 = load %S.ast.Node, ptr %t10
|
|
%t12 = call i64 @finch.gen.enumNamed(ptr %t4, %S.ast.Node %t11)
|
|
store i64 %t12, ptr %a13
|
|
%t14 = load i64, ptr %a13
|
|
%t15 = icmp sge i64 %t14, 0
|
|
br i1 %t15, label %then5978, label %endif5980
|
|
then5978:
|
|
%t16 = load i1, ptr %a3
|
|
br i1 %t16, label %then5981, label %endif5983
|
|
then5981:
|
|
%t17 = load ptr, ptr %a1
|
|
%t18 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t17, %S.ast.Node %t18, { ptr, i64, i64 } { ptr @.str.3924, i64 37, i64 0 })
|
|
br label %endif5983
|
|
endif5983:
|
|
%t19 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = load %S.ast.Node, ptr %a2
|
|
%t22 = load i64, ptr %a13
|
|
%t23 = call %S.gen.Val @finch.gen.enumValue(ptr %t20, %S.ast.Node %t21, i64 %t22)
|
|
%t24 = insertvalue %S.gen.Ref %t19, %S.gen.Val %t23, 2
|
|
ret %S.gen.Ref %t24
|
|
endif5980:
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
%t28 = extractvalue { ptr, i64, i64 } %t27, 1
|
|
%t29 = icmp uge i64 0, %t28
|
|
br i1 %t29, label %range5984, label %inrange5985
|
|
range5984:
|
|
call void @finch_panic_index(ptr @.str.3925, i64 3277, i64 0, i64 %t28)
|
|
unreachable
|
|
inrange5985:
|
|
%t30 = extractvalue { ptr, i64, i64 } %t27, 0
|
|
%t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0
|
|
%t32 = load %S.ast.Node, ptr %t31
|
|
%t33 = load i1, ptr %a3
|
|
%t34 = call %S.gen.Ref @finch.gen.ref(ptr %t25, %S.ast.Node %t32, i1 %t33)
|
|
store %S.gen.Ref %t34, ptr %a35
|
|
%t36 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2
|
|
%t37 = getelementptr inbounds %S.gen.Val, ptr %t36, i32 0, i32 1
|
|
%t38 = load %S.ast.Type, ptr %t37
|
|
store %S.ast.Type %t38, ptr %a39
|
|
call void @finch.copy.S_ast_Type(ptr %a40, ptr %a39)
|
|
%t41 = load %S.ast.Type, ptr %a40
|
|
store %S.ast.Type %t41, ptr %a42
|
|
%t43 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0
|
|
%t44 = load i1, ptr %t43
|
|
br i1 %t44, label %then5986, label %endif5988
|
|
then5986:
|
|
%t45 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1
|
|
%t46 = getelementptr inbounds %S.gen.Place, ptr %t45, i32 0, i32 1
|
|
%t47 = load %S.ast.Type, ptr %t46
|
|
store %S.ast.Type %t47, ptr %a48
|
|
call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48)
|
|
%t50 = load %S.ast.Type, ptr %a49
|
|
store %S.ast.Type %t50, ptr %a42
|
|
br label %endif5988
|
|
endif5988:
|
|
%t51 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t52 = load { ptr, i64, i64 }, ptr %t51
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.3926, i64 3, i64 0 }, ptr %a54
|
|
%t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54)
|
|
%t56 = icmp ne i32 %t55, 0
|
|
br i1 %t56, label %then5989, label %endif5991
|
|
then5989:
|
|
%t57 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2
|
|
%t58 = getelementptr inbounds %S.gen.Val, ptr %t57, i32 0, i32 0
|
|
%t59 = load { ptr, i64, i64 }, ptr %t58
|
|
store { ptr, i64, i64 } %t59, ptr %a60
|
|
call void @finch_str_copy(ptr %a61, ptr %a60)
|
|
%t62 = load { ptr, i64, i64 }, ptr %a61
|
|
store { ptr, i64, i64 } %t62, ptr %a63
|
|
%t64 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0
|
|
%t65 = load i1, ptr %t64
|
|
br i1 %t65, label %then5992, label %endif5994
|
|
then5992:
|
|
%t66 = load ptr, ptr %a1
|
|
%t67 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1
|
|
%t68 = getelementptr inbounds %S.gen.Place, ptr %t67, i32 0, i32 0
|
|
%t69 = load { ptr, i64, i64 }, ptr %t68
|
|
%t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } { ptr @.str.3927, i64 3, i64 0 }, { ptr, i64, i64 } %t69)
|
|
store { ptr, i64, i64 } %t70, ptr %a63
|
|
br label %endif5994
|
|
endif5994:
|
|
%t71 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1
|
|
%t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1
|
|
%t73 = load i64, ptr %t72
|
|
%t74 = icmp eq i64 %t73, 0
|
|
br i1 %t74, label %then5995, label %endif5997
|
|
then5995:
|
|
%t75 = load ptr, ptr %a1
|
|
%t76 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } { ptr @.str.3928, i64 57, i64 0 })
|
|
br label %endif5997
|
|
endif5997:
|
|
%t77 = load ptr, ptr %a1
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.3929, i64 12, i64 0 }, ptr %a81
|
|
store { ptr, i64, i64 } %t79, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t83, ptr %a85
|
|
store { ptr, i64, i64 } { ptr @.str.3930, i64 6, i64 0 }, ptr %a86
|
|
call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a84
|
|
%t88 = call { ptr, i64, i64 } @finch.gen.op(ptr %t78, { ptr, i64, i64 } %t87)
|
|
%t89 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t90 = load { ptr, i64, i64 }, ptr %t89
|
|
store { ptr, i64, i64 } { ptr @.str.3931, i64 6, i64 0 }, ptr %a92
|
|
store { ptr, i64, i64 } %t90, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
store { ptr, i64, i64 } %t94, ptr %a96
|
|
store { ptr, i64, i64 } { ptr @.str.3932, i64 18, i64 0 }, ptr %a97
|
|
call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97)
|
|
%t98 = load { ptr, i64, i64 }, ptr %a95
|
|
%t99 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.panicIf(ptr %t77, { ptr, i64, i64 } %t88, { ptr, i64, i64 } %t98, %S.ast.Node %t99)
|
|
%t100 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1
|
|
%t101 = load { ptr, i64, i64 }, ptr %t100
|
|
%t102 = extractvalue { ptr, i64, i64 } %t101, 1
|
|
%t103 = icmp uge i64 0, %t102
|
|
br i1 %t103, label %range5998, label %inrange5999
|
|
range5998:
|
|
call void @finch_panic_index(ptr @.str.3933, i64 3291, i64 0, i64 %t102)
|
|
unreachable
|
|
inrange5999:
|
|
%t104 = extractvalue { ptr, i64, i64 } %t101, 0
|
|
%t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 0
|
|
%t106 = load %S.ast.Type, ptr %t105
|
|
store %S.ast.Type %t106, ptr %a107
|
|
call void @finch.copy.S_ast_Type(ptr %a108, ptr %a107)
|
|
%t109 = load %S.ast.Type, ptr %a108
|
|
store %S.ast.Type %t109, ptr %a110
|
|
store i1 false, ptr %a111
|
|
%t112 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 0
|
|
%t113 = load { ptr, i64, i64 }, ptr %t112
|
|
store { ptr, i64, i64 } %t113, ptr %a114
|
|
store { ptr, i64, i64 } { ptr @.str.3934, i64 6, i64 0 }, ptr %a115
|
|
%t116 = call i32 @finch_str_eq(ptr %a114, ptr %a115)
|
|
%t117 = icmp ne i32 %t116, 0
|
|
br i1 %t117, label %then6000, label %endif6002
|
|
then6000:
|
|
%t118 = load ptr, ptr %a1
|
|
%t119 = icmp eq ptr %t118, null
|
|
br i1 %t119, label %panic6003, label %ok6004
|
|
panic6003:
|
|
call void @finch_panic(ptr @.str.3935, i64 3294, ptr @.str.3936)
|
|
unreachable
|
|
ok6004:
|
|
%t120 = getelementptr inbounds %S.gen.Gen, ptr %t118, i32 0, i32 15
|
|
%t121 = load ptr, ptr %a1
|
|
%t122 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 3
|
|
%t123 = load { ptr, i64, i64 }, ptr %t122
|
|
%t124 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 2
|
|
%t125 = load { ptr, i64, i64 }, ptr %t124
|
|
%t126 = call i64 @finch.gen.findStruct(ptr %t121, { ptr, i64, i64 } %t123, { ptr, i64, i64 } %t125)
|
|
%t127 = load { ptr, i64, i64 }, ptr %t120
|
|
%t128 = extractvalue { ptr, i64, i64 } %t127, 1
|
|
%t129 = icmp uge i64 %t126, %t128
|
|
br i1 %t129, label %range6005, label %inrange6006
|
|
range6005:
|
|
call void @finch_panic_index(ptr @.str.3937, i64 3294, i64 %t126, i64 %t128)
|
|
unreachable
|
|
inrange6006:
|
|
%t130 = extractvalue { ptr, i64, i64 } %t127, 0
|
|
%t131 = getelementptr inbounds %S.gen.StructDef, ptr %t130, i64 %t126
|
|
%t132 = getelementptr inbounds %S.gen.StructDef, ptr %t131, i32 0, i32 11
|
|
%t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t132, i32 0, i32 1
|
|
store i64 -1, ptr %a134
|
|
%t135 = load i64, ptr %t133
|
|
%t136 = load ptr, ptr %t132
|
|
store i64 0, ptr %a137
|
|
br label %find.cond6007
|
|
find.cond6007:
|
|
%t138 = load i64, ptr %a137
|
|
%t139 = icmp slt i64 %t138, %t135
|
|
br i1 %t139, label %find.body6008, label %find.end6011
|
|
find.body6008:
|
|
%t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i64 %t138
|
|
%t141 = load { ptr, i64, i64 }, ptr %t140
|
|
store { ptr, i64, i64 } %t141, ptr %a142
|
|
store { ptr, i64, i64 } { ptr @.str.3938, i64 5, i64 0 }, ptr %a143
|
|
%t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143)
|
|
%t145 = icmp ne i32 %t144, 0
|
|
br i1 %t145, label %find.hit6009, label %find.next6010
|
|
find.hit6009:
|
|
store i64 %t138, ptr %a134
|
|
br label %find.end6011
|
|
find.next6010:
|
|
%t146 = add i64 %t138, 1
|
|
store i64 %t146, ptr %a137
|
|
br label %find.cond6007
|
|
find.end6011:
|
|
%t147 = load i64, ptr %a134
|
|
%t148 = icmp sge i64 %t147, 0
|
|
store i1 %t148, ptr %a111
|
|
br label %endif6002
|
|
endif6002:
|
|
%t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t150 = load { ptr, i64, i64 }, ptr %t149
|
|
store { ptr, i64, i64 } %t150, ptr %a151
|
|
store { ptr, i64, i64 } { ptr @.str.3939, i64 5, i64 0 }, ptr %a152
|
|
%t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152)
|
|
%t154 = icmp ne i32 %t153, 0
|
|
br label %logic.from6012
|
|
logic.from6012:
|
|
br i1 %t154, label %logic.rhs6013, label %logic.end6014
|
|
logic.rhs6013:
|
|
%t155 = load i1, ptr %a111
|
|
%t156 = xor i1 %t155, true
|
|
br label %logic.rend6015
|
|
logic.rend6015:
|
|
br label %logic.end6014
|
|
logic.end6014:
|
|
%t157 = phi i1 [ false, %logic.from6012 ], [ %t156, %logic.rend6015 ]
|
|
br i1 %t157, label %then6016, label %endif6018
|
|
then6016:
|
|
%t158 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t159 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t159, ptr %a160
|
|
call void @finch_str_copy(ptr %a161, ptr %a160)
|
|
%t162 = load { ptr, i64, i64 }, ptr %a161
|
|
%t163 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t162, 0
|
|
%t164 = load %S.ast.Type, ptr %a110
|
|
store %S.ast.Type %t164, ptr %a165
|
|
call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165)
|
|
%t167 = load %S.ast.Type, ptr %a166
|
|
%t168 = insertvalue %S.gen.Place %t163, %S.ast.Type %t167, 1
|
|
%t169 = insertvalue %S.gen.Ref %t158, %S.gen.Place %t168, 1
|
|
ret %S.gen.Ref %t169
|
|
endif6018:
|
|
%t170 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 0
|
|
%t171 = load { ptr, i64, i64 }, ptr %t170
|
|
store { ptr, i64, i64 } %t171, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.3940, i64 6, i64 0 }, ptr %a173
|
|
%t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173)
|
|
%t175 = icmp eq i32 %t174, 0
|
|
br i1 %t175, label %then6019, label %endif6021
|
|
then6019:
|
|
%t176 = load ptr, ptr %a1
|
|
%t177 = load %S.ast.Node, ptr %a2
|
|
%t178 = load %S.ast.Type, ptr %a42
|
|
%t179 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t178)
|
|
store { ptr, i64, i64 } { ptr @.str.3941, i64 2, i64 0 }, ptr %a181
|
|
store { ptr, i64, i64 } %t179, ptr %a182
|
|
call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182)
|
|
%t183 = load { ptr, i64, i64 }, ptr %a180
|
|
store { ptr, i64, i64 } %t183, ptr %a185
|
|
store { ptr, i64, i64 } { ptr @.str.3942, i64 43, i64 0 }, ptr %a186
|
|
call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186)
|
|
%t187 = load { ptr, i64, i64 }, ptr %a184
|
|
call void @finch.gen.fail(ptr %t176, %S.ast.Node %t177, { ptr, i64, i64 } %t187)
|
|
br label %endif6021
|
|
endif6021:
|
|
%t188 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t189 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t189, ptr %a190
|
|
call void @finch_str_copy(ptr %a191, ptr %a190)
|
|
%t192 = load { ptr, i64, i64 }, ptr %a191
|
|
%t193 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t192, 0
|
|
%t194 = load %S.ast.Type, ptr %a110
|
|
store %S.ast.Type %t194, ptr %a195
|
|
call void @finch.copy.S_ast_Type(ptr %a196, ptr %a195)
|
|
%t197 = load %S.ast.Type, ptr %a196
|
|
%t198 = insertvalue %S.gen.Place %t193, %S.ast.Type %t197, 1
|
|
%t199 = insertvalue %S.gen.Ref %t188, %S.gen.Place %t198, 1
|
|
store %S.gen.Ref %t199, ptr %a35
|
|
%t200 = load %S.ast.Type, ptr %a110
|
|
store %S.ast.Type %t200, ptr %a201
|
|
call void @finch.copy.S_ast_Type(ptr %a202, ptr %a201)
|
|
%t203 = load %S.ast.Type, ptr %a202
|
|
store %S.ast.Type %t203, ptr %a42
|
|
br label %endif5991
|
|
endif5991:
|
|
%t204 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t205 = load { ptr, i64, i64 }, ptr %t204
|
|
store { ptr, i64, i64 } %t205, ptr %a206
|
|
store { ptr, i64, i64 } { ptr @.str.3943, i64 5, i64 0 }, ptr %a207
|
|
%t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207)
|
|
%t209 = icmp ne i32 %t208, 0
|
|
br i1 %t209, label %then6022, label %endif6024
|
|
then6022:
|
|
%t210 = load i1, ptr %a3
|
|
br i1 %t210, label %then6025, label %endif6027
|
|
then6025:
|
|
%t211 = load ptr, ptr %a1
|
|
%t212 = load %S.ast.Node, ptr %a2
|
|
%t213 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t214 = load { ptr, i64, i64 }, ptr %t213
|
|
store { ptr, i64, i64 } { ptr @.str.3944, i64 1, i64 0 }, ptr %a216
|
|
store { ptr, i64, i64 } %t214, ptr %a217
|
|
call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217)
|
|
%t218 = load { ptr, i64, i64 }, ptr %a215
|
|
store { ptr, i64, i64 } %t218, ptr %a220
|
|
store { ptr, i64, i64 } { ptr @.str.3945, i64 26, i64 0 }, ptr %a221
|
|
call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221)
|
|
%t222 = load { ptr, i64, i64 }, ptr %a219
|
|
call void @finch.gen.fail(ptr %t211, %S.ast.Node %t212, { ptr, i64, i64 } %t222)
|
|
br label %endif6027
|
|
endif6027:
|
|
%t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t224 = load { ptr, i64, i64 }, ptr %t223
|
|
store { ptr, i64, i64 } %t224, ptr %a225
|
|
store { ptr, i64, i64 } { ptr @.str.3946, i64 3, i64 0 }, ptr %a226
|
|
%t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226)
|
|
%t228 = icmp ne i32 %t227, 0
|
|
br i1 %t228, label %then6028, label %endif6030
|
|
then6028:
|
|
%t229 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t230 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 4
|
|
%t231 = load i64, ptr %t230
|
|
call void @finch_str_from_int(ptr %a232, i64 %t231)
|
|
%t233 = load { ptr, i64, i64 }, ptr %a232
|
|
%t234 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t233, 0
|
|
%t235 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3947, i64 3, i64 0 })
|
|
%t236 = insertvalue %S.gen.Val %t234, %S.ast.Type %t235, 1
|
|
%t237 = insertvalue %S.gen.Val %t236, i1 true, 3
|
|
%t238 = insertvalue %S.gen.Ref %t229, %S.gen.Val %t237, 2
|
|
ret %S.gen.Ref %t238
|
|
endif6030:
|
|
%t239 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t240 = load { ptr, i64, i64 }, ptr %t239
|
|
store { ptr, i64, i64 } %t240, ptr %a241
|
|
store { ptr, i64, i64 } { ptr @.str.3948, i64 3, i64 0 }, ptr %a242
|
|
%t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242)
|
|
%t244 = icmp eq i32 %t243, 0
|
|
br i1 %t244, label %then6031, label %endif6033
|
|
then6031:
|
|
%t245 = load ptr, ptr %a1
|
|
%t246 = load %S.ast.Node, ptr %a2
|
|
%t247 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t248 = load { ptr, i64, i64 }, ptr %t247
|
|
store { ptr, i64, i64 } { ptr @.str.3949, i64 34, i64 0 }, ptr %a250
|
|
store { ptr, i64, i64 } %t248, ptr %a251
|
|
call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251)
|
|
%t252 = load { ptr, i64, i64 }, ptr %a249
|
|
store { ptr, i64, i64 } %t252, ptr %a254
|
|
store { ptr, i64, i64 } { ptr @.str.3950, i64 1, i64 0 }, ptr %a255
|
|
call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255)
|
|
%t256 = load { ptr, i64, i64 }, ptr %a253
|
|
call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t256)
|
|
br label %endif6033
|
|
endif6033:
|
|
%t257 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0
|
|
%t258 = load i1, ptr %t257
|
|
%t259 = xor i1 %t258, true
|
|
br i1 %t259, label %then6034, label %endif6036
|
|
then6034:
|
|
%t260 = load ptr, ptr %a1
|
|
%t261 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t260, %S.ast.Node %t261, { ptr, i64, i64 } { ptr @.str.3951, i64 48, i64 0 })
|
|
br label %endif6036
|
|
endif6036:
|
|
%t262 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t263 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1
|
|
%t264 = getelementptr inbounds %S.gen.Place, ptr %t263, i32 0, i32 0
|
|
%t265 = load { ptr, i64, i64 }, ptr %t264
|
|
store { ptr, i64, i64 } %t265, ptr %a266
|
|
call void @finch_str_copy(ptr %a267, ptr %a266)
|
|
%t268 = load { ptr, i64, i64 }, ptr %a267
|
|
%t269 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0
|
|
%t270 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1
|
|
%t271 = load { ptr, i64, i64 }, ptr %t270
|
|
%t272 = extractvalue { ptr, i64, i64 } %t271, 1
|
|
%t273 = icmp uge i64 0, %t272
|
|
br i1 %t273, label %range6037, label %inrange6038
|
|
range6037:
|
|
call void @finch_panic_index(ptr @.str.3952, i64 3318, i64 0, i64 %t272)
|
|
unreachable
|
|
inrange6038:
|
|
%t274 = extractvalue { ptr, i64, i64 } %t271, 0
|
|
%t275 = getelementptr inbounds %S.ast.Type, ptr %t274, i64 0
|
|
%t276 = load %S.ast.Type, ptr %t275
|
|
%t277 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t276)
|
|
%t278 = insertvalue %S.gen.Val %t269, %S.ast.Type %t277, 1
|
|
%t279 = insertvalue %S.gen.Ref %t262, %S.gen.Val %t278, 2
|
|
ret %S.gen.Ref %t279
|
|
endif6024:
|
|
%t280 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t281 = load { ptr, i64, i64 }, ptr %t280
|
|
store { ptr, i64, i64 } %t281, ptr %a282
|
|
store { ptr, i64, i64 } { ptr @.str.3953, i64 5, i64 0 }, ptr %a283
|
|
%t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283)
|
|
%t285 = icmp ne i32 %t284, 0
|
|
br label %logic.from6039
|
|
logic.from6039:
|
|
br i1 %t285, label %logic.end6041, label %logic.rhs6040
|
|
logic.rhs6040:
|
|
%t286 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t287 = load { ptr, i64, i64 }, ptr %t286
|
|
store { ptr, i64, i64 } %t287, ptr %a288
|
|
store { ptr, i64, i64 } { ptr @.str.3954, i64 3, i64 0 }, ptr %a289
|
|
%t290 = call i32 @finch_str_eq(ptr %a288, ptr %a289)
|
|
%t291 = icmp ne i32 %t290, 0
|
|
br label %logic.rend6042
|
|
logic.rend6042:
|
|
br label %logic.end6041
|
|
logic.end6041:
|
|
%t292 = phi i1 [ true, %logic.from6039 ], [ %t291, %logic.rend6042 ]
|
|
br label %logic.from6043
|
|
logic.from6043:
|
|
br i1 %t292, label %logic.rhs6044, label %logic.end6045
|
|
logic.rhs6044:
|
|
%t293 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t294 = load { ptr, i64, i64 }, ptr %t293
|
|
store { ptr, i64, i64 } %t294, ptr %a295
|
|
store { ptr, i64, i64 } { ptr @.str.3955, i64 3, i64 0 }, ptr %a296
|
|
%t297 = call i32 @finch_str_eq(ptr %a295, ptr %a296)
|
|
%t298 = icmp ne i32 %t297, 0
|
|
br label %logic.rend6046
|
|
logic.rend6046:
|
|
br label %logic.end6045
|
|
logic.end6045:
|
|
%t299 = phi i1 [ false, %logic.from6043 ], [ %t298, %logic.rend6046 ]
|
|
br i1 %t299, label %then6047, label %endif6049
|
|
then6047:
|
|
%t300 = load i1, ptr %a3
|
|
br i1 %t300, label %then6050, label %endif6052
|
|
then6050:
|
|
%t301 = load ptr, ptr %a1
|
|
%t302 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t301, %S.ast.Node %t302, { ptr, i64, i64 } { ptr @.str.3956, i64 30, i64 0 })
|
|
br label %endif6052
|
|
endif6052:
|
|
%t303 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0
|
|
%t304 = load i1, ptr %t303
|
|
%t305 = xor i1 %t304, true
|
|
br label %logic.from6053
|
|
logic.from6053:
|
|
br i1 %t305, label %logic.rhs6054, label %logic.end6055
|
|
logic.rhs6054:
|
|
%t306 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2
|
|
%t307 = getelementptr inbounds %S.gen.Val, ptr %t306, i32 0, i32 2
|
|
%t308 = load i1, ptr %t307
|
|
br label %logic.rend6056
|
|
logic.rend6056:
|
|
br label %logic.end6055
|
|
logic.end6055:
|
|
%t309 = phi i1 [ false, %logic.from6053 ], [ %t308, %logic.rend6056 ]
|
|
br label %logic.from6057
|
|
logic.from6057:
|
|
br i1 %t309, label %logic.rhs6058, label %logic.end6059
|
|
logic.rhs6058:
|
|
%t310 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2
|
|
%t311 = getelementptr inbounds %S.gen.Val, ptr %t310, i32 0, i32 0
|
|
%t312 = load { ptr, i64, i64 }, ptr %t311
|
|
store { ptr, i64, i64 } %t312, ptr %a313
|
|
store { ptr, i64, i64 } { ptr @.str.3958, i64 1, i64 0 }, ptr %a315
|
|
%t316 = call i32 @finch_str_starts(ptr %a313, ptr %a315)
|
|
%t317 = icmp ne i32 %t316, 0
|
|
br label %logic.rend6060
|
|
logic.rend6060:
|
|
br label %logic.end6059
|
|
logic.end6059:
|
|
%t318 = phi i1 [ false, %logic.from6057 ], [ %t317, %logic.rend6060 ]
|
|
br i1 %t318, label %then6061, label %endif6063
|
|
then6061:
|
|
%t319 = load ptr, ptr %a1
|
|
%t320 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t319, %S.ast.Node %t320, { ptr, i64, i64 } { ptr @.str.3959, i64 53, i64 0 })
|
|
br label %endif6063
|
|
endif6063:
|
|
%t321 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2
|
|
%t322 = getelementptr inbounds %S.gen.Val, ptr %t321, i32 0, i32 0
|
|
%t323 = load { ptr, i64, i64 }, ptr %t322
|
|
store { ptr, i64, i64 } %t323, ptr %a324
|
|
call void @finch_str_copy(ptr %a325, ptr %a324)
|
|
%t326 = load { ptr, i64, i64 }, ptr %a325
|
|
store { ptr, i64, i64 } %t326, ptr %a327
|
|
%t328 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0
|
|
%t329 = load i1, ptr %t328
|
|
br i1 %t329, label %then6064, label %endif6066
|
|
then6064:
|
|
%t330 = load ptr, ptr %a1
|
|
%t331 = load ptr, ptr %a1
|
|
%t332 = load %S.ast.Type, ptr %a42
|
|
%t333 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t331, %S.ast.Type %t332)
|
|
%t334 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1
|
|
%t335 = getelementptr inbounds %S.gen.Place, ptr %t334, i32 0, i32 0
|
|
%t336 = load { ptr, i64, i64 }, ptr %t335
|
|
%t337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t330, { ptr, i64, i64 } %t333, { ptr, i64, i64 } %t336)
|
|
store { ptr, i64, i64 } %t337, ptr %a327
|
|
br label %endif6066
|
|
endif6066:
|
|
%t338 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t339 = load { ptr, i64, i64 }, ptr %t338
|
|
store { ptr, i64, i64 } %t339, ptr %a340
|
|
store { ptr, i64, i64 } { ptr @.str.3960, i64 3, i64 0 }, ptr %a341
|
|
%t342 = call i32 @finch_str_eq(ptr %a340, ptr %a341)
|
|
%t343 = icmp ne i32 %t342, 0
|
|
br i1 %t343, label %then6067, label %endif6069
|
|
then6067:
|
|
%t344 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t345 = load ptr, ptr %a1
|
|
%t346 = load { ptr, i64, i64 }, ptr %a327
|
|
%t347 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t345, { ptr, i64, i64 } %t346)
|
|
%t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t347, 0
|
|
%t349 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3961, i64 4, i64 0 })
|
|
%t350 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t349)
|
|
%t351 = insertvalue %S.gen.Val %t348, %S.ast.Type %t350, 1
|
|
%t352 = insertvalue %S.gen.Ref %t344, %S.gen.Val %t351, 2
|
|
ret %S.gen.Ref %t352
|
|
endif6069:
|
|
%t353 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t354 = load ptr, ptr %a1
|
|
%t355 = load { ptr, i64, i64 }, ptr %a327
|
|
store { ptr, i64, i64 } { ptr @.str.3962, i64 31, i64 0 }, ptr %a357
|
|
store { ptr, i64, i64 } %t355, ptr %a358
|
|
call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358)
|
|
%t359 = load { ptr, i64, i64 }, ptr %a356
|
|
store { ptr, i64, i64 } %t359, ptr %a361
|
|
store { ptr, i64, i64 } { ptr @.str.3963, i64 3, i64 0 }, ptr %a362
|
|
call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362)
|
|
%t363 = load { ptr, i64, i64 }, ptr %a360
|
|
%t364 = call { ptr, i64, i64 } @finch.gen.op(ptr %t354, { ptr, i64, i64 } %t363)
|
|
%t365 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0
|
|
%t366 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1
|
|
%t367 = load { ptr, i64, i64 }, ptr %t366
|
|
%t368 = extractvalue { ptr, i64, i64 } %t367, 1
|
|
%t369 = icmp uge i64 0, %t368
|
|
br i1 %t369, label %range6070, label %inrange6071
|
|
range6070:
|
|
call void @finch_panic_index(ptr @.str.3964, i64 3336, i64 0, i64 %t368)
|
|
unreachable
|
|
inrange6071:
|
|
%t370 = extractvalue { ptr, i64, i64 } %t367, 0
|
|
%t371 = getelementptr inbounds %S.ast.Type, ptr %t370, i64 0
|
|
%t372 = load %S.ast.Type, ptr %t371
|
|
%t373 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t372)
|
|
%t374 = insertvalue %S.gen.Val %t365, %S.ast.Type %t373, 1
|
|
%t375 = insertvalue %S.gen.Ref %t353, %S.gen.Val %t374, 2
|
|
ret %S.gen.Ref %t375
|
|
endif6049:
|
|
%t376 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t377 = load { ptr, i64, i64 }, ptr %t376
|
|
store { ptr, i64, i64 } %t377, ptr %a378
|
|
store { ptr, i64, i64 } { ptr @.str.3965, i64 5, i64 0 }, ptr %a379
|
|
%t380 = call i32 @finch_str_eq(ptr %a378, ptr %a379)
|
|
%t381 = icmp ne i32 %t380, 0
|
|
br label %logic.from6072
|
|
logic.from6072:
|
|
br i1 %t381, label %logic.end6074, label %logic.rhs6073
|
|
logic.rhs6073:
|
|
%t382 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t383 = load { ptr, i64, i64 }, ptr %t382
|
|
store { ptr, i64, i64 } %t383, ptr %a384
|
|
store { ptr, i64, i64 } { ptr @.str.3966, i64 3, i64 0 }, ptr %a385
|
|
%t386 = call i32 @finch_str_eq(ptr %a384, ptr %a385)
|
|
%t387 = icmp ne i32 %t386, 0
|
|
br label %logic.rend6075
|
|
logic.rend6075:
|
|
br label %logic.end6074
|
|
logic.end6074:
|
|
%t388 = phi i1 [ true, %logic.from6072 ], [ %t387, %logic.rend6075 ]
|
|
br label %logic.from6076
|
|
logic.from6076:
|
|
br i1 %t388, label %logic.end6078, label %logic.rhs6077
|
|
logic.rhs6077:
|
|
%t389 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t390 = load { ptr, i64, i64 }, ptr %t389
|
|
store { ptr, i64, i64 } %t390, ptr %a391
|
|
store { ptr, i64, i64 } { ptr @.str.3967, i64 3, i64 0 }, ptr %a392
|
|
%t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392)
|
|
%t394 = icmp ne i32 %t393, 0
|
|
br label %logic.rend6079
|
|
logic.rend6079:
|
|
br label %logic.end6078
|
|
logic.end6078:
|
|
%t395 = phi i1 [ true, %logic.from6076 ], [ %t394, %logic.rend6079 ]
|
|
br i1 %t395, label %then6080, label %endif6082
|
|
then6080:
|
|
%t396 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t397 = load { ptr, i64, i64 }, ptr %t396
|
|
store { ptr, i64, i64 } %t397, ptr %a398
|
|
store { ptr, i64, i64 } { ptr @.str.3968, i64 3, i64 0 }, ptr %a399
|
|
%t400 = call i32 @finch_str_eq(ptr %a398, ptr %a399)
|
|
%t401 = icmp eq i32 %t400, 0
|
|
br i1 %t401, label %then6083, label %endif6085
|
|
then6083:
|
|
%t402 = load ptr, ptr %a1
|
|
%t403 = load %S.ast.Node, ptr %a2
|
|
%t404 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t405 = load { ptr, i64, i64 }, ptr %t404
|
|
store { ptr, i64, i64 } { ptr @.str.3969, i64 37, i64 0 }, ptr %a407
|
|
store { ptr, i64, i64 } %t405, ptr %a408
|
|
call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408)
|
|
%t409 = load { ptr, i64, i64 }, ptr %a406
|
|
store { ptr, i64, i64 } %t409, ptr %a411
|
|
store { ptr, i64, i64 } { ptr @.str.3970, i64 1, i64 0 }, ptr %a412
|
|
call void @finch_str_concat(ptr %a410, ptr %a411, ptr %a412)
|
|
%t413 = load { ptr, i64, i64 }, ptr %a410
|
|
call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } %t413)
|
|
br label %endif6085
|
|
endif6085:
|
|
%t414 = load i1, ptr %a3
|
|
br i1 %t414, label %then6086, label %endif6088
|
|
then6086:
|
|
%t415 = load ptr, ptr %a1
|
|
%t416 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t415, %S.ast.Node %t416, { ptr, i64, i64 } { ptr @.str.3971, i64 48, i64 0 })
|
|
br label %endif6088
|
|
endif6088:
|
|
%t417 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0
|
|
%t418 = load i1, ptr %t417
|
|
br i1 %t418, label %then6089, label %endif6091
|
|
then6089:
|
|
%t419 = load ptr, ptr %a1
|
|
%t420 = load ptr, ptr %a1
|
|
%t421 = load %S.ast.Type, ptr %a42
|
|
%t422 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t420, %S.ast.Type %t421)
|
|
store { ptr, i64, i64 } { ptr @.str.3972, i64 23, i64 0 }, ptr %a424
|
|
store { ptr, i64, i64 } %t422, ptr %a425
|
|
call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425)
|
|
%t426 = load { ptr, i64, i64 }, ptr %a423
|
|
store { ptr, i64, i64 } %t426, ptr %a428
|
|
store { ptr, i64, i64 } { ptr @.str.3973, i64 6, i64 0 }, ptr %a429
|
|
call void @finch_str_concat(ptr %a427, ptr %a428, ptr %a429)
|
|
%t430 = load { ptr, i64, i64 }, ptr %a427
|
|
%t431 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1
|
|
%t432 = getelementptr inbounds %S.gen.Place, ptr %t431, i32 0, i32 0
|
|
%t433 = load { ptr, i64, i64 }, ptr %t432
|
|
store { ptr, i64, i64 } %t430, ptr %a435
|
|
store { ptr, i64, i64 } %t433, ptr %a436
|
|
call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436)
|
|
%t437 = load { ptr, i64, i64 }, ptr %a434
|
|
store { ptr, i64, i64 } %t437, ptr %a439
|
|
store { ptr, i64, i64 } { ptr @.str.3974, i64 14, i64 0 }, ptr %a440
|
|
call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440)
|
|
%t441 = load { ptr, i64, i64 }, ptr %a438
|
|
%t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t419, { ptr, i64, i64 } %t441)
|
|
store { ptr, i64, i64 } %t442, ptr %a443
|
|
%t444 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t445 = load ptr, ptr %a1
|
|
%t446 = load { ptr, i64, i64 }, ptr %a443
|
|
%t447 = call { ptr, i64, i64 } @finch.gen.load(ptr %t445, { ptr, i64, i64 } { ptr @.str.3975, i64 3, i64 0 }, { ptr, i64, i64 } %t446)
|
|
%t448 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t447, 0
|
|
%t449 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3976, i64 3, i64 0 })
|
|
%t450 = insertvalue %S.gen.Val %t448, %S.ast.Type %t449, 1
|
|
%t451 = insertvalue %S.gen.Ref %t444, %S.gen.Val %t450, 2
|
|
ret %S.gen.Ref %t451
|
|
endif6091:
|
|
%t452 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t453 = load ptr, ptr %a1
|
|
%t454 = load ptr, ptr %a1
|
|
%t455 = load %S.ast.Type, ptr %a42
|
|
%t456 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t454, %S.ast.Type %t455)
|
|
store { ptr, i64, i64 } { ptr @.str.3977, i64 13, i64 0 }, ptr %a458
|
|
store { ptr, i64, i64 } %t456, ptr %a459
|
|
call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459)
|
|
%t460 = load { ptr, i64, i64 }, ptr %a457
|
|
store { ptr, i64, i64 } %t460, ptr %a462
|
|
store { ptr, i64, i64 } { ptr @.str.3978, i64 1, i64 0 }, ptr %a463
|
|
call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463)
|
|
%t464 = load { ptr, i64, i64 }, ptr %a461
|
|
%t465 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2
|
|
%t466 = getelementptr inbounds %S.gen.Val, ptr %t465, i32 0, i32 0
|
|
%t467 = load { ptr, i64, i64 }, ptr %t466
|
|
store { ptr, i64, i64 } %t464, ptr %a469
|
|
store { ptr, i64, i64 } %t467, ptr %a470
|
|
call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470)
|
|
%t471 = load { ptr, i64, i64 }, ptr %a468
|
|
store { ptr, i64, i64 } %t471, ptr %a473
|
|
store { ptr, i64, i64 } { ptr @.str.3979, i64 3, i64 0 }, ptr %a474
|
|
call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474)
|
|
%t475 = load { ptr, i64, i64 }, ptr %a472
|
|
%t476 = call { ptr, i64, i64 } @finch.gen.op(ptr %t453, { ptr, i64, i64 } %t475)
|
|
%t477 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t476, 0
|
|
%t478 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3980, i64 3, i64 0 })
|
|
%t479 = insertvalue %S.gen.Val %t477, %S.ast.Type %t478, 1
|
|
%t480 = insertvalue %S.gen.Ref %t452, %S.gen.Val %t479, 2
|
|
ret %S.gen.Ref %t480
|
|
endif6082:
|
|
%t481 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0
|
|
%t482 = load { ptr, i64, i64 }, ptr %t481
|
|
store { ptr, i64, i64 } %t482, ptr %a483
|
|
store { ptr, i64, i64 } { ptr @.str.3981, i64 6, i64 0 }, ptr %a484
|
|
%t485 = call i32 @finch_str_eq(ptr %a483, ptr %a484)
|
|
%t486 = icmp eq i32 %t485, 0
|
|
br i1 %t486, label %then6092, label %endif6094
|
|
then6092:
|
|
%t487 = load ptr, ptr %a1
|
|
%t488 = load %S.ast.Node, ptr %a2
|
|
%t489 = load %S.ast.Type, ptr %a42
|
|
%t490 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t489)
|
|
store { ptr, i64, i64 } %t490, ptr %a492
|
|
store { ptr, i64, i64 } { ptr @.str.3982, i64 21, i64 0 }, ptr %a493
|
|
call void @finch_str_concat(ptr %a491, ptr %a492, ptr %a493)
|
|
%t494 = load { ptr, i64, i64 }, ptr %a491
|
|
%t495 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t496 = load { ptr, i64, i64 }, ptr %t495
|
|
store { ptr, i64, i64 } %t494, ptr %a498
|
|
store { ptr, i64, i64 } %t496, ptr %a499
|
|
call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499)
|
|
%t500 = load { ptr, i64, i64 }, ptr %a497
|
|
store { ptr, i64, i64 } %t500, ptr %a502
|
|
store { ptr, i64, i64 } { ptr @.str.3983, i64 2, i64 0 }, ptr %a503
|
|
call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503)
|
|
%t504 = load { ptr, i64, i64 }, ptr %a501
|
|
call void @finch.gen.fail(ptr %t487, %S.ast.Node %t488, { ptr, i64, i64 } %t504)
|
|
br label %endif6094
|
|
endif6094:
|
|
%t505 = load ptr, ptr %a1
|
|
%t506 = icmp eq ptr %t505, null
|
|
br i1 %t506, label %panic6095, label %ok6096
|
|
panic6095:
|
|
call void @finch_panic(ptr @.str.3984, i64 3354, ptr @.str.3985)
|
|
unreachable
|
|
ok6096:
|
|
%t507 = getelementptr inbounds %S.gen.Gen, ptr %t505, i32 0, i32 15
|
|
%t508 = load ptr, ptr %a1
|
|
%t509 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 3
|
|
%t510 = load { ptr, i64, i64 }, ptr %t509
|
|
%t511 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 2
|
|
%t512 = load { ptr, i64, i64 }, ptr %t511
|
|
%t513 = call i64 @finch.gen.findStruct(ptr %t508, { ptr, i64, i64 } %t510, { ptr, i64, i64 } %t512)
|
|
%t514 = load { ptr, i64, i64 }, ptr %t507
|
|
%t515 = extractvalue { ptr, i64, i64 } %t514, 1
|
|
%t516 = icmp uge i64 %t513, %t515
|
|
br i1 %t516, label %range6097, label %inrange6098
|
|
range6097:
|
|
call void @finch_panic_index(ptr @.str.3986, i64 3354, i64 %t513, i64 %t515)
|
|
unreachable
|
|
inrange6098:
|
|
%t517 = extractvalue { ptr, i64, i64 } %t514, 0
|
|
%t518 = getelementptr inbounds %S.gen.StructDef, ptr %t517, i64 %t513
|
|
%t519 = load %S.gen.StructDef, ptr %t518
|
|
store %S.gen.StructDef %t519, ptr %a520
|
|
call void @finch.copy.S_gen_StructDef(ptr %a521, ptr %a520)
|
|
%t522 = load %S.gen.StructDef, ptr %a521
|
|
store %S.gen.StructDef %t522, ptr %a523
|
|
%t524 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 11
|
|
%t525 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1
|
|
%t526 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t527 = load { ptr, i64, i64 }, ptr %t526
|
|
store i64 -1, ptr %a528
|
|
%t529 = load i64, ptr %t525
|
|
%t530 = load ptr, ptr %t524
|
|
store i64 0, ptr %a531
|
|
br label %find.cond6099
|
|
find.cond6099:
|
|
%t532 = load i64, ptr %a531
|
|
%t533 = icmp slt i64 %t532, %t529
|
|
br i1 %t533, label %find.body6100, label %find.end6103
|
|
find.body6100:
|
|
%t534 = getelementptr inbounds { ptr, i64, i64 }, ptr %t530, i64 %t532
|
|
%t535 = load { ptr, i64, i64 }, ptr %t534
|
|
store { ptr, i64, i64 } %t535, ptr %a536
|
|
store { ptr, i64, i64 } %t527, ptr %a537
|
|
%t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537)
|
|
%t539 = icmp ne i32 %t538, 0
|
|
br i1 %t539, label %find.hit6101, label %find.next6102
|
|
find.hit6101:
|
|
store i64 %t532, ptr %a528
|
|
br label %find.end6103
|
|
find.next6102:
|
|
%t540 = add i64 %t532, 1
|
|
store i64 %t540, ptr %a531
|
|
br label %find.cond6099
|
|
find.end6103:
|
|
%t541 = load i64, ptr %a528
|
|
store i64 %t541, ptr %a542
|
|
%t543 = load i64, ptr %a542
|
|
%t544 = icmp slt i64 %t543, 0
|
|
br i1 %t544, label %then6104, label %endif6106
|
|
then6104:
|
|
%t545 = load ptr, ptr %a1
|
|
%t546 = load %S.ast.Node, ptr %a2
|
|
%t547 = load %S.ast.Type, ptr %a42
|
|
%t548 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t547)
|
|
store { ptr, i64, i64 } { ptr @.str.3987, i64 11, i64 0 }, ptr %a550
|
|
store { ptr, i64, i64 } %t548, ptr %a551
|
|
call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551)
|
|
%t552 = load { ptr, i64, i64 }, ptr %a549
|
|
store { ptr, i64, i64 } %t552, ptr %a554
|
|
store { ptr, i64, i64 } { ptr @.str.3988, i64 15, i64 0 }, ptr %a555
|
|
call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555)
|
|
%t556 = load { ptr, i64, i64 }, ptr %a553
|
|
%t557 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t558 = load { ptr, i64, i64 }, ptr %t557
|
|
store { ptr, i64, i64 } %t556, ptr %a560
|
|
store { ptr, i64, i64 } %t558, ptr %a561
|
|
call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561)
|
|
%t562 = load { ptr, i64, i64 }, ptr %a559
|
|
store { ptr, i64, i64 } %t562, ptr %a564
|
|
store { ptr, i64, i64 } { ptr @.str.3989, i64 11, i64 0 }, ptr %a565
|
|
call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565)
|
|
%t566 = load { ptr, i64, i64 }, ptr %a563
|
|
%t567 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 11
|
|
%t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.3990, i64 2, i64 0 }, ptr %a569
|
|
call void @finch_str_join(ptr %a570, ptr %t567, ptr %a569)
|
|
%t571 = load { ptr, i64, i64 }, ptr %a570
|
|
store { ptr, i64, i64 } %t566, ptr %a573
|
|
store { ptr, i64, i64 } %t571, ptr %a574
|
|
call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574)
|
|
%t575 = load { ptr, i64, i64 }, ptr %a572
|
|
store { ptr, i64, i64 } %t575, ptr %a577
|
|
store { ptr, i64, i64 } { ptr @.str.3991, i64 1, i64 0 }, ptr %a578
|
|
call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578)
|
|
%t579 = load { ptr, i64, i64 }, ptr %a576
|
|
call void @finch.gen.fail(ptr %t545, %S.ast.Node %t546, { ptr, i64, i64 } %t579)
|
|
br label %endif6106
|
|
endif6106:
|
|
%t580 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 12
|
|
%t581 = load i64, ptr %a542
|
|
%t582 = load { ptr, i64, i64 }, ptr %t580
|
|
%t583 = extractvalue { ptr, i64, i64 } %t582, 1
|
|
%t584 = icmp uge i64 %t581, %t583
|
|
br i1 %t584, label %range6107, label %inrange6108
|
|
range6107:
|
|
call void @finch_panic_index(ptr @.str.3992, i64 3359, i64 %t581, i64 %t583)
|
|
unreachable
|
|
inrange6108:
|
|
%t585 = extractvalue { ptr, i64, i64 } %t582, 0
|
|
%t586 = getelementptr inbounds %S.ast.Type, ptr %t585, i64 %t581
|
|
%t587 = load %S.ast.Type, ptr %t586
|
|
store %S.ast.Type %t587, ptr %a588
|
|
call void @finch.copy.S_ast_Type(ptr %a589, ptr %a588)
|
|
%t590 = load %S.ast.Type, ptr %a589
|
|
store %S.ast.Type %t590, ptr %a591
|
|
%t592 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0
|
|
%t593 = load i1, ptr %t592
|
|
br i1 %t593, label %then6109, label %endif6111
|
|
then6109:
|
|
%t594 = load ptr, ptr %a1
|
|
%t595 = load ptr, ptr %a1
|
|
%t596 = load %S.ast.Type, ptr %a42
|
|
%t597 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t595, %S.ast.Type %t596)
|
|
store { ptr, i64, i64 } { ptr @.str.3993, i64 23, i64 0 }, ptr %a599
|
|
store { ptr, i64, i64 } %t597, ptr %a600
|
|
call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600)
|
|
%t601 = load { ptr, i64, i64 }, ptr %a598
|
|
store { ptr, i64, i64 } %t601, ptr %a603
|
|
store { ptr, i64, i64 } { ptr @.str.3994, i64 6, i64 0 }, ptr %a604
|
|
call void @finch_str_concat(ptr %a602, ptr %a603, ptr %a604)
|
|
%t605 = load { ptr, i64, i64 }, ptr %a602
|
|
%t606 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1
|
|
%t607 = getelementptr inbounds %S.gen.Place, ptr %t606, i32 0, i32 0
|
|
%t608 = load { ptr, i64, i64 }, ptr %t607
|
|
store { ptr, i64, i64 } %t605, ptr %a610
|
|
store { ptr, i64, i64 } %t608, ptr %a611
|
|
call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611)
|
|
%t612 = load { ptr, i64, i64 }, ptr %a609
|
|
store { ptr, i64, i64 } %t612, ptr %a614
|
|
store { ptr, i64, i64 } { ptr @.str.3995, i64 13, i64 0 }, ptr %a615
|
|
call void @finch_str_concat(ptr %a613, ptr %a614, ptr %a615)
|
|
%t616 = load { ptr, i64, i64 }, ptr %a613
|
|
%t617 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 3
|
|
%t618 = load i64, ptr %a542
|
|
%t619 = load { ptr, i64, i64 }, ptr %t617
|
|
%t620 = extractvalue { ptr, i64, i64 } %t619, 1
|
|
%t621 = icmp uge i64 %t618, %t620
|
|
br i1 %t621, label %range6112, label %inrange6113
|
|
range6112:
|
|
call void @finch_panic_index(ptr @.str.3996, i64 3361, i64 %t618, i64 %t620)
|
|
unreachable
|
|
inrange6113:
|
|
%t622 = extractvalue { ptr, i64, i64 } %t619, 0
|
|
%t623 = getelementptr inbounds i64, ptr %t622, i64 %t618
|
|
%t624 = load i64, ptr %t623
|
|
call void @finch_str_from_int(ptr %a625, i64 %t624)
|
|
%t626 = load { ptr, i64, i64 }, ptr %a625
|
|
store { ptr, i64, i64 } %t616, ptr %a628
|
|
store { ptr, i64, i64 } %t626, ptr %a629
|
|
call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629)
|
|
%t630 = load { ptr, i64, i64 }, ptr %a627
|
|
%t631 = call { ptr, i64, i64 } @finch.gen.op(ptr %t594, { ptr, i64, i64 } %t630)
|
|
store { ptr, i64, i64 } %t631, ptr %a632
|
|
%t633 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t634 = load { ptr, i64, i64 }, ptr %a632
|
|
store { ptr, i64, i64 } %t634, ptr %a635
|
|
call void @finch_str_copy(ptr %a636, ptr %a635)
|
|
%t637 = load { ptr, i64, i64 }, ptr %a636
|
|
%t638 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t637, 0
|
|
%t639 = load %S.ast.Type, ptr %a591
|
|
store %S.ast.Type %t639, ptr %a640
|
|
call void @finch.copy.S_ast_Type(ptr %a641, ptr %a640)
|
|
%t642 = load %S.ast.Type, ptr %a641
|
|
%t643 = insertvalue %S.gen.Place %t638, %S.ast.Type %t642, 1
|
|
%t644 = insertvalue %S.gen.Ref %t633, %S.gen.Place %t643, 1
|
|
ret %S.gen.Ref %t644
|
|
endif6111:
|
|
%t645 = load ptr, ptr %a1
|
|
%t646 = load ptr, ptr %a1
|
|
%t647 = load %S.ast.Type, ptr %a42
|
|
%t648 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t646, %S.ast.Type %t647)
|
|
store { ptr, i64, i64 } { ptr @.str.3997, i64 13, i64 0 }, ptr %a650
|
|
store { ptr, i64, i64 } %t648, ptr %a651
|
|
call void @finch_str_concat(ptr %a649, ptr %a650, ptr %a651)
|
|
%t652 = load { ptr, i64, i64 }, ptr %a649
|
|
store { ptr, i64, i64 } %t652, ptr %a654
|
|
store { ptr, i64, i64 } { ptr @.str.3998, i64 1, i64 0 }, ptr %a655
|
|
call void @finch_str_concat(ptr %a653, ptr %a654, ptr %a655)
|
|
%t656 = load { ptr, i64, i64 }, ptr %a653
|
|
%t657 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2
|
|
%t658 = getelementptr inbounds %S.gen.Val, ptr %t657, i32 0, i32 0
|
|
%t659 = load { ptr, i64, i64 }, ptr %t658
|
|
store { ptr, i64, i64 } %t656, ptr %a661
|
|
store { ptr, i64, i64 } %t659, ptr %a662
|
|
call void @finch_str_concat(ptr %a660, ptr %a661, ptr %a662)
|
|
%t663 = load { ptr, i64, i64 }, ptr %a660
|
|
store { ptr, i64, i64 } %t663, ptr %a665
|
|
store { ptr, i64, i64 } { ptr @.str.3999, i64 2, i64 0 }, ptr %a666
|
|
call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666)
|
|
%t667 = load { ptr, i64, i64 }, ptr %a664
|
|
%t668 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 3
|
|
%t669 = load i64, ptr %a542
|
|
%t670 = load { ptr, i64, i64 }, ptr %t668
|
|
%t671 = extractvalue { ptr, i64, i64 } %t670, 1
|
|
%t672 = icmp uge i64 %t669, %t671
|
|
br i1 %t672, label %range6114, label %inrange6115
|
|
range6114:
|
|
call void @finch_panic_index(ptr @.str.4000, i64 3364, i64 %t669, i64 %t671)
|
|
unreachable
|
|
inrange6115:
|
|
%t673 = extractvalue { ptr, i64, i64 } %t670, 0
|
|
%t674 = getelementptr inbounds i64, ptr %t673, i64 %t669
|
|
%t675 = load i64, ptr %t674
|
|
call void @finch_str_from_int(ptr %a676, i64 %t675)
|
|
%t677 = load { ptr, i64, i64 }, ptr %a676
|
|
store { ptr, i64, i64 } %t667, ptr %a679
|
|
store { ptr, i64, i64 } %t677, ptr %a680
|
|
call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680)
|
|
%t681 = load { ptr, i64, i64 }, ptr %a678
|
|
%t682 = call { ptr, i64, i64 } @finch.gen.op(ptr %t645, { ptr, i64, i64 } %t681)
|
|
store { ptr, i64, i64 } %t682, ptr %a683
|
|
%t684 = load { ptr, i64, i64 }, ptr %a683
|
|
store { ptr, i64, i64 } %t684, ptr %a685
|
|
call void @finch_str_copy(ptr %a686, ptr %a685)
|
|
%t687 = load { ptr, i64, i64 }, ptr %a686
|
|
%t688 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t687, 0
|
|
%t689 = load %S.ast.Type, ptr %a591
|
|
store %S.ast.Type %t689, ptr %a690
|
|
call void @finch.copy.S_ast_Type(ptr %a691, ptr %a690)
|
|
%t692 = load %S.ast.Type, ptr %a691
|
|
%t693 = insertvalue %S.gen.Val %t688, %S.ast.Type %t692, 1
|
|
store %S.gen.Val %t693, ptr %a694
|
|
%t695 = load ptr, ptr %a1
|
|
%t696 = load %S.ast.Type, ptr %a591
|
|
%t697 = call i1 @finch.gen.owning(ptr %t695, %S.ast.Type %t696)
|
|
br label %logic.from6116
|
|
logic.from6116:
|
|
br i1 %t697, label %logic.rhs6117, label %logic.end6118
|
|
logic.rhs6117:
|
|
%t698 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2
|
|
%t699 = getelementptr inbounds %S.gen.Val, ptr %t698, i32 0, i32 2
|
|
%t700 = load i1, ptr %t699
|
|
br label %logic.rend6119
|
|
logic.rend6119:
|
|
br label %logic.end6118
|
|
logic.end6118:
|
|
%t701 = phi i1 [ false, %logic.from6116 ], [ %t700, %logic.rend6119 ]
|
|
br i1 %t701, label %then6120, label %endif6122
|
|
then6120:
|
|
%t702 = load ptr, ptr %a1
|
|
%t703 = load { ptr, i64, i64 }, ptr %a683
|
|
%t704 = load %S.ast.Type, ptr %a591
|
|
%t705 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t702, { ptr, i64, i64 } %t703, %S.ast.Type %t704)
|
|
%t706 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t705, 0
|
|
%t707 = load %S.ast.Type, ptr %a591
|
|
store %S.ast.Type %t707, ptr %a708
|
|
call void @finch.copy.S_ast_Type(ptr %a709, ptr %a708)
|
|
%t710 = load %S.ast.Type, ptr %a709
|
|
%t711 = insertvalue %S.gen.Val %t706, %S.ast.Type %t710, 1
|
|
%t712 = insertvalue %S.gen.Val %t711, i1 true, 2
|
|
store %S.gen.Val %t712, ptr %a694
|
|
br label %endif6122
|
|
endif6122:
|
|
%t713 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t714 = load %S.gen.Val, ptr %a694
|
|
store %S.gen.Val %t714, ptr %a715
|
|
call void @finch.copy.S_gen_Val(ptr %a716, ptr %a715)
|
|
%t717 = load %S.gen.Val, ptr %a716
|
|
%t718 = insertvalue %S.gen.Ref %t713, %S.gen.Val %t717, 2
|
|
ret %S.gen.Ref %t718
|
|
}
|
|
|
|
define internal %S.gen.Ref @finch.gen.index(ptr %p0, %S.ast.Node %p1, i1 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i1, align 16
|
|
%a14 = alloca %S.gen.Ref, align 16
|
|
%a18 = alloca %S.ast.Type, align 16
|
|
%a19 = alloca %S.ast.Type, align 16
|
|
%a21 = alloca %S.ast.Type, align 16
|
|
%a27 = alloca %S.ast.Type, align 16
|
|
%a28 = alloca %S.ast.Type, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca %S.ast.Type, align 16
|
|
%a134 = alloca %S.ast.Type, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca %S.ast.Type, align 16
|
|
%a172 = alloca %S.ast.Type, align 16
|
|
%a174 = alloca %S.ast.Type, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca %S.ast.Type, align 16
|
|
%a206 = alloca %S.ast.Type, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca %S.ast.Type, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca %S.ast.Type, align 16
|
|
%a247 = alloca %S.ast.Type, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a270 = alloca { ptr, i64, i64 }, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca { ptr, i64, i64 }, align 16
|
|
%a308 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a330 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a335 = alloca { ptr, i64, i64 }, align 16
|
|
%a338 = alloca { ptr, i64, i64 }, align 16
|
|
%a339 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a348 = alloca { ptr, i64, i64 }, align 16
|
|
%a349 = alloca { ptr, i64, i64 }, align 16
|
|
%a353 = alloca %S.ast.Type, align 16
|
|
%a354 = alloca %S.ast.Type, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a367 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca %S.ast.Type, align 16
|
|
%a372 = alloca %S.ast.Type, align 16
|
|
%a375 = alloca %S.gen.Val, align 16
|
|
%a389 = alloca %S.ast.Type, align 16
|
|
%a390 = alloca %S.ast.Type, align 16
|
|
%a396 = alloca %S.gen.Val, align 16
|
|
%a397 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i1 %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
%t7 = extractvalue { ptr, i64, i64 } %t6, 1
|
|
%t8 = icmp uge i64 0, %t7
|
|
br i1 %t8, label %range6123, label %inrange6124
|
|
range6123:
|
|
call void @finch_panic_index(ptr @.str.4001, i64 3373, i64 0, i64 %t7)
|
|
unreachable
|
|
inrange6124:
|
|
%t9 = extractvalue { ptr, i64, i64 } %t6, 0
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0
|
|
%t11 = load %S.ast.Node, ptr %t10
|
|
%t12 = load i1, ptr %a3
|
|
%t13 = call %S.gen.Ref @finch.gen.ref(ptr %t4, %S.ast.Node %t11, i1 %t12)
|
|
store %S.gen.Ref %t13, ptr %a14
|
|
%t15 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2
|
|
%t16 = getelementptr inbounds %S.gen.Val, ptr %t15, i32 0, i32 1
|
|
%t17 = load %S.ast.Type, ptr %t16
|
|
store %S.ast.Type %t17, ptr %a18
|
|
call void @finch.copy.S_ast_Type(ptr %a19, ptr %a18)
|
|
%t20 = load %S.ast.Type, ptr %a19
|
|
store %S.ast.Type %t20, ptr %a21
|
|
%t22 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0
|
|
%t23 = load i1, ptr %t22
|
|
br i1 %t23, label %then6125, label %endif6127
|
|
then6125:
|
|
%t24 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1
|
|
%t25 = getelementptr inbounds %S.gen.Place, ptr %t24, i32 0, i32 1
|
|
%t26 = load %S.ast.Type, ptr %t25
|
|
store %S.ast.Type %t26, ptr %a27
|
|
call void @finch.copy.S_ast_Type(ptr %a28, ptr %a27)
|
|
%t29 = load %S.ast.Type, ptr %a28
|
|
store %S.ast.Type %t29, ptr %a21
|
|
br label %endif6127
|
|
endif6127:
|
|
%t30 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0
|
|
%t31 = load { ptr, i64, i64 }, ptr %t30
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.4002, i64 3, i64 0 }, ptr %a33
|
|
%t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33)
|
|
%t35 = icmp ne i32 %t34, 0
|
|
br i1 %t35, label %then6128, label %endif6130
|
|
then6128:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load %S.ast.Node, ptr %a2
|
|
%t38 = load %S.gen.Ref, ptr %a14
|
|
%t39 = load %S.ast.Type, ptr %a21
|
|
%t40 = load i1, ptr %a3
|
|
%t41 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t36, %S.ast.Node %t37, %S.gen.Ref %t38, %S.ast.Type %t39, i1 %t40)
|
|
ret %S.gen.Ref %t41
|
|
endif6130:
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = load ptr, ptr %a1
|
|
%t44 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t45 = load { ptr, i64, i64 }, ptr %t44
|
|
%t46 = extractvalue { ptr, i64, i64 } %t45, 1
|
|
%t47 = icmp uge i64 1, %t46
|
|
br i1 %t47, label %range6131, label %inrange6132
|
|
range6131:
|
|
call void @finch_panic_index(ptr @.str.4003, i64 3381, i64 1, i64 %t46)
|
|
unreachable
|
|
inrange6132:
|
|
%t48 = extractvalue { ptr, i64, i64 } %t45, 0
|
|
%t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 1
|
|
%t50 = load %S.ast.Node, ptr %t49
|
|
%t51 = call %S.gen.Val @finch.gen.expr(ptr %t43, %S.ast.Node %t50)
|
|
%t52 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4004, i64 3, i64 0 })
|
|
%t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t54 = load { ptr, i64, i64 }, ptr %t53
|
|
%t55 = extractvalue { ptr, i64, i64 } %t54, 1
|
|
%t56 = icmp uge i64 1, %t55
|
|
br i1 %t56, label %range6133, label %inrange6134
|
|
range6133:
|
|
call void @finch_panic_index(ptr @.str.4005, i64 3381, i64 1, i64 %t55)
|
|
unreachable
|
|
inrange6134:
|
|
%t57 = extractvalue { ptr, i64, i64 } %t54, 0
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %t57, i64 1
|
|
%t59 = load %S.ast.Node, ptr %t58
|
|
%t60 = call %S.gen.Val @finch.gen.coerce(ptr %t42, %S.gen.Val %t51, %S.ast.Type %t52, %S.ast.Node %t59, { ptr, i64, i64 } { ptr @.str.4006, i64 8, i64 0 })
|
|
%t61 = extractvalue %S.gen.Val %t60, 0
|
|
store { ptr, i64, i64 } %t61, ptr %a62
|
|
call void @finch_str_copy(ptr %a63, ptr %a62)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t64, ptr %a65
|
|
%t66 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0
|
|
%t67 = load { ptr, i64, i64 }, ptr %t66
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.4007, i64 5, i64 0 }, ptr %a69
|
|
%t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69)
|
|
%t71 = icmp ne i32 %t70, 0
|
|
br i1 %t71, label %then6135, label %endif6137
|
|
then6135:
|
|
store { ptr, i64, i64 } { ptr @.str.4008, i64 0, i64 0 }, ptr %a72
|
|
%t73 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0
|
|
%t74 = load i1, ptr %t73
|
|
br i1 %t74, label %then6138, label %else6139
|
|
then6138:
|
|
%t75 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1
|
|
%t76 = getelementptr inbounds %S.gen.Place, ptr %t75, i32 0, i32 0
|
|
%t77 = load { ptr, i64, i64 }, ptr %t76
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
call void @finch_str_copy(ptr %a79, ptr %a78)
|
|
%t80 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } %t80, ptr %a72
|
|
br label %endif6140
|
|
else6139:
|
|
%t81 = load ptr, ptr %a1
|
|
%t82 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2
|
|
%t83 = load %S.gen.Val, ptr %t82
|
|
%t84 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t81, %S.gen.Val %t83)
|
|
store { ptr, i64, i64 } %t84, ptr %a72
|
|
br label %endif6140
|
|
endif6140:
|
|
%t85 = load ptr, ptr %a1
|
|
%t86 = load { ptr, i64, i64 }, ptr %a65
|
|
%t87 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 4
|
|
%t88 = load i64, ptr %t87
|
|
call void @finch_str_from_int(ptr %a89, i64 %t88)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a89
|
|
%t91 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.boundsCheck(ptr %t85, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t90, %S.ast.Node %t91)
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = load ptr, ptr %a1
|
|
%t94 = load %S.ast.Type, ptr %a21
|
|
%t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94)
|
|
store { ptr, i64, i64 } { ptr @.str.4009, i64 23, i64 0 }, ptr %a97
|
|
store { ptr, i64, i64 } %t95, ptr %a98
|
|
call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t99, ptr %a101
|
|
store { ptr, i64, i64 } { ptr @.str.4010, i64 6, i64 0 }, ptr %a102
|
|
call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102)
|
|
%t103 = load { ptr, i64, i64 }, ptr %a100
|
|
%t104 = load { ptr, i64, i64 }, ptr %a72
|
|
store { ptr, i64, i64 } %t103, ptr %a106
|
|
store { ptr, i64, i64 } %t104, ptr %a107
|
|
call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107)
|
|
%t108 = load { ptr, i64, i64 }, ptr %a105
|
|
store { ptr, i64, i64 } %t108, ptr %a110
|
|
store { ptr, i64, i64 } { ptr @.str.4011, i64 13, i64 0 }, ptr %a111
|
|
call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111)
|
|
%t112 = load { ptr, i64, i64 }, ptr %a109
|
|
%t113 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t112, ptr %a115
|
|
store { ptr, i64, i64 } %t113, ptr %a116
|
|
call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a114
|
|
%t118 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t117)
|
|
store { ptr, i64, i64 } %t118, ptr %a119
|
|
%t120 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t121 = load { ptr, i64, i64 }, ptr %a119
|
|
store { ptr, i64, i64 } %t121, ptr %a122
|
|
call void @finch_str_copy(ptr %a123, ptr %a122)
|
|
%t124 = load { ptr, i64, i64 }, ptr %a123
|
|
%t125 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t124, 0
|
|
%t126 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1
|
|
%t127 = load { ptr, i64, i64 }, ptr %t126
|
|
%t128 = extractvalue { ptr, i64, i64 } %t127, 1
|
|
%t129 = icmp uge i64 0, %t128
|
|
br i1 %t129, label %range6141, label %inrange6142
|
|
range6141:
|
|
call void @finch_panic_index(ptr @.str.4012, i64 3391, i64 0, i64 %t128)
|
|
unreachable
|
|
inrange6142:
|
|
%t130 = extractvalue { ptr, i64, i64 } %t127, 0
|
|
%t131 = getelementptr inbounds %S.ast.Type, ptr %t130, i64 0
|
|
%t132 = load %S.ast.Type, ptr %t131
|
|
store %S.ast.Type %t132, ptr %a133
|
|
call void @finch.copy.S_ast_Type(ptr %a134, ptr %a133)
|
|
%t135 = load %S.ast.Type, ptr %a134
|
|
%t136 = insertvalue %S.gen.Place %t125, %S.ast.Type %t135, 1
|
|
%t137 = insertvalue %S.gen.Ref %t120, %S.gen.Place %t136, 1
|
|
ret %S.gen.Ref %t137
|
|
endif6137:
|
|
%t138 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0
|
|
%t139 = load { ptr, i64, i64 }, ptr %t138
|
|
store { ptr, i64, i64 } %t139, ptr %a140
|
|
store { ptr, i64, i64 } { ptr @.str.4013, i64 3, i64 0 }, ptr %a141
|
|
%t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141)
|
|
%t143 = icmp ne i32 %t142, 0
|
|
br i1 %t143, label %then6143, label %endif6145
|
|
then6143:
|
|
%t144 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1
|
|
%t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1
|
|
%t146 = load i64, ptr %t145
|
|
%t147 = icmp eq i64 %t146, 0
|
|
br i1 %t147, label %then6146, label %endif6148
|
|
then6146:
|
|
%t148 = load ptr, ptr %a1
|
|
%t149 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t148, %S.ast.Node %t149, { ptr, i64, i64 } { ptr @.str.4014, i64 57, i64 0 })
|
|
br label %endif6148
|
|
endif6148:
|
|
%t150 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2
|
|
%t151 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 0
|
|
%t152 = load { ptr, i64, i64 }, ptr %t151
|
|
store { ptr, i64, i64 } %t152, ptr %a153
|
|
call void @finch_str_copy(ptr %a154, ptr %a153)
|
|
%t155 = load { ptr, i64, i64 }, ptr %a154
|
|
store { ptr, i64, i64 } %t155, ptr %a156
|
|
%t157 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0
|
|
%t158 = load i1, ptr %t157
|
|
br i1 %t158, label %then6149, label %endif6151
|
|
then6149:
|
|
%t159 = load ptr, ptr %a1
|
|
%t160 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1
|
|
%t161 = getelementptr inbounds %S.gen.Place, ptr %t160, i32 0, i32 0
|
|
%t162 = load { ptr, i64, i64 }, ptr %t161
|
|
%t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.4015, i64 3, i64 0 }, { ptr, i64, i64 } %t162)
|
|
store { ptr, i64, i64 } %t163, ptr %a156
|
|
br label %endif6151
|
|
endif6151:
|
|
%t164 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1
|
|
%t165 = load { ptr, i64, i64 }, ptr %t164
|
|
%t166 = extractvalue { ptr, i64, i64 } %t165, 1
|
|
%t167 = icmp uge i64 0, %t166
|
|
br i1 %t167, label %range6152, label %inrange6153
|
|
range6152:
|
|
call void @finch_panic_index(ptr @.str.4016, i64 3401, i64 0, i64 %t166)
|
|
unreachable
|
|
inrange6153:
|
|
%t168 = extractvalue { ptr, i64, i64 } %t165, 0
|
|
%t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0
|
|
%t170 = load %S.ast.Type, ptr %t169
|
|
store %S.ast.Type %t170, ptr %a171
|
|
call void @finch.copy.S_ast_Type(ptr %a172, ptr %a171)
|
|
%t173 = load %S.ast.Type, ptr %a172
|
|
store %S.ast.Type %t173, ptr %a174
|
|
%t175 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t176 = load ptr, ptr %a1
|
|
%t177 = load ptr, ptr %a1
|
|
%t178 = load %S.ast.Type, ptr %a174
|
|
%t179 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t177, %S.ast.Type %t178)
|
|
store { ptr, i64, i64 } { ptr @.str.4017, i64 23, i64 0 }, ptr %a181
|
|
store { ptr, i64, i64 } %t179, ptr %a182
|
|
call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182)
|
|
%t183 = load { ptr, i64, i64 }, ptr %a180
|
|
store { ptr, i64, i64 } %t183, ptr %a185
|
|
store { ptr, i64, i64 } { ptr @.str.4018, i64 6, i64 0 }, ptr %a186
|
|
call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186)
|
|
%t187 = load { ptr, i64, i64 }, ptr %a184
|
|
%t188 = load { ptr, i64, i64 }, ptr %a156
|
|
store { ptr, i64, i64 } %t187, ptr %a190
|
|
store { ptr, i64, i64 } %t188, ptr %a191
|
|
call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191)
|
|
%t192 = load { ptr, i64, i64 }, ptr %a189
|
|
store { ptr, i64, i64 } %t192, ptr %a194
|
|
store { ptr, i64, i64 } { ptr @.str.4019, i64 6, i64 0 }, ptr %a195
|
|
call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195)
|
|
%t196 = load { ptr, i64, i64 }, ptr %a193
|
|
%t197 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t196, ptr %a199
|
|
store { ptr, i64, i64 } %t197, ptr %a200
|
|
call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200)
|
|
%t201 = load { ptr, i64, i64 }, ptr %a198
|
|
%t202 = call { ptr, i64, i64 } @finch.gen.op(ptr %t176, { ptr, i64, i64 } %t201)
|
|
%t203 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t202, 0
|
|
%t204 = load %S.ast.Type, ptr %a174
|
|
store %S.ast.Type %t204, ptr %a205
|
|
call void @finch.copy.S_ast_Type(ptr %a206, ptr %a205)
|
|
%t207 = load %S.ast.Type, ptr %a206
|
|
%t208 = insertvalue %S.gen.Place %t203, %S.ast.Type %t207, 1
|
|
%t209 = insertvalue %S.gen.Ref %t175, %S.gen.Place %t208, 1
|
|
ret %S.gen.Ref %t209
|
|
endif6145:
|
|
%t210 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0
|
|
%t211 = load { ptr, i64, i64 }, ptr %t210
|
|
store { ptr, i64, i64 } %t211, ptr %a212
|
|
store { ptr, i64, i64 } { ptr @.str.4020, i64 5, i64 0 }, ptr %a213
|
|
%t214 = call i32 @finch_str_eq(ptr %a212, ptr %a213)
|
|
%t215 = icmp eq i32 %t214, 0
|
|
br label %logic.from6154
|
|
logic.from6154:
|
|
br i1 %t215, label %logic.rhs6155, label %logic.end6156
|
|
logic.rhs6155:
|
|
%t216 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0
|
|
%t217 = load { ptr, i64, i64 }, ptr %t216
|
|
store { ptr, i64, i64 } %t217, ptr %a218
|
|
store { ptr, i64, i64 } { ptr @.str.4021, i64 3, i64 0 }, ptr %a219
|
|
%t220 = call i32 @finch_str_eq(ptr %a218, ptr %a219)
|
|
%t221 = icmp eq i32 %t220, 0
|
|
br label %logic.rend6157
|
|
logic.rend6157:
|
|
br label %logic.end6156
|
|
logic.end6156:
|
|
%t222 = phi i1 [ false, %logic.from6154 ], [ %t221, %logic.rend6157 ]
|
|
br i1 %t222, label %then6158, label %endif6160
|
|
then6158:
|
|
%t223 = load ptr, ptr %a1
|
|
%t224 = load %S.ast.Node, ptr %a2
|
|
%t225 = load %S.ast.Type, ptr %a21
|
|
%t226 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t225)
|
|
store { ptr, i64, i64 } { ptr @.str.4022, i64 46, i64 0 }, ptr %a228
|
|
store { ptr, i64, i64 } %t226, ptr %a229
|
|
call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229)
|
|
%t230 = load { ptr, i64, i64 }, ptr %a227
|
|
call void @finch.gen.fail(ptr %t223, %S.ast.Node %t224, { ptr, i64, i64 } %t230)
|
|
br label %endif6160
|
|
endif6160:
|
|
%t231 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4023, i64 4, i64 0 })
|
|
store %S.ast.Type %t231, ptr %a232
|
|
%t233 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0
|
|
%t234 = load { ptr, i64, i64 }, ptr %t233
|
|
store { ptr, i64, i64 } %t234, ptr %a235
|
|
store { ptr, i64, i64 } { ptr @.str.4024, i64 5, i64 0 }, ptr %a236
|
|
%t237 = call i32 @finch_str_eq(ptr %a235, ptr %a236)
|
|
%t238 = icmp ne i32 %t237, 0
|
|
br i1 %t238, label %then6161, label %endif6163
|
|
then6161:
|
|
%t239 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1
|
|
%t240 = load { ptr, i64, i64 }, ptr %t239
|
|
%t241 = extractvalue { ptr, i64, i64 } %t240, 1
|
|
%t242 = icmp uge i64 0, %t241
|
|
br i1 %t242, label %range6164, label %inrange6165
|
|
range6164:
|
|
call void @finch_panic_index(ptr @.str.4025, i64 3409, i64 0, i64 %t241)
|
|
unreachable
|
|
inrange6165:
|
|
%t243 = extractvalue { ptr, i64, i64 } %t240, 0
|
|
%t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0
|
|
%t245 = load %S.ast.Type, ptr %t244
|
|
store %S.ast.Type %t245, ptr %a246
|
|
call void @finch.copy.S_ast_Type(ptr %a247, ptr %a246)
|
|
%t248 = load %S.ast.Type, ptr %a247
|
|
store %S.ast.Type %t248, ptr %a232
|
|
br label %endif6163
|
|
endif6163:
|
|
%t249 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0
|
|
%t250 = load { ptr, i64, i64 }, ptr %t249
|
|
store { ptr, i64, i64 } %t250, ptr %a251
|
|
store { ptr, i64, i64 } { ptr @.str.4026, i64 3, i64 0 }, ptr %a252
|
|
%t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252)
|
|
%t254 = icmp ne i32 %t253, 0
|
|
br label %logic.from6166
|
|
logic.from6166:
|
|
br i1 %t254, label %logic.rhs6167, label %logic.end6168
|
|
logic.rhs6167:
|
|
%t255 = load i1, ptr %a3
|
|
br label %logic.rend6169
|
|
logic.rend6169:
|
|
br label %logic.end6168
|
|
logic.end6168:
|
|
%t256 = phi i1 [ false, %logic.from6166 ], [ %t255, %logic.rend6169 ]
|
|
br i1 %t256, label %then6170, label %endif6172
|
|
then6170:
|
|
%t257 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0
|
|
%t258 = load i1, ptr %t257
|
|
%t259 = xor i1 %t258, true
|
|
br i1 %t259, label %then6173, label %endif6175
|
|
then6173:
|
|
%t260 = load ptr, ptr %a1
|
|
%t261 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t260, %S.ast.Node %t261, { ptr, i64, i64 } { ptr @.str.4027, i64 44, i64 0 })
|
|
br label %endif6175
|
|
endif6175:
|
|
%t262 = load ptr, ptr %a1
|
|
%t263 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1
|
|
%t264 = getelementptr inbounds %S.gen.Place, ptr %t263, i32 0, i32 0
|
|
%t265 = load { ptr, i64, i64 }, ptr %t264
|
|
store { ptr, i64, i64 } { ptr @.str.4028, i64 29, i64 0 }, ptr %a267
|
|
store { ptr, i64, i64 } %t265, ptr %a268
|
|
call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268)
|
|
%t269 = load { ptr, i64, i64 }, ptr %a266
|
|
store { ptr, i64, i64 } %t269, ptr %a271
|
|
store { ptr, i64, i64 } { ptr @.str.4029, i64 1, i64 0 }, ptr %a272
|
|
call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272)
|
|
%t273 = load { ptr, i64, i64 }, ptr %a270
|
|
call void @finch.gen.emit(ptr %t262, { ptr, i64, i64 } %t273)
|
|
br label %endif6172
|
|
endif6172:
|
|
%t274 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2
|
|
%t275 = getelementptr inbounds %S.gen.Val, ptr %t274, i32 0, i32 0
|
|
%t276 = load { ptr, i64, i64 }, ptr %t275
|
|
store { ptr, i64, i64 } %t276, ptr %a277
|
|
call void @finch_str_copy(ptr %a278, ptr %a277)
|
|
%t279 = load { ptr, i64, i64 }, ptr %a278
|
|
store { ptr, i64, i64 } %t279, ptr %a280
|
|
%t281 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0
|
|
%t282 = load i1, ptr %t281
|
|
br i1 %t282, label %then6176, label %endif6178
|
|
then6176:
|
|
%t283 = load ptr, ptr %a1
|
|
%t284 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1
|
|
%t285 = getelementptr inbounds %S.gen.Place, ptr %t284, i32 0, i32 0
|
|
%t286 = load { ptr, i64, i64 }, ptr %t285
|
|
%t287 = call { ptr, i64, i64 } @finch.gen.load(ptr %t283, { ptr, i64, i64 } { ptr @.str.4030, i64 17, i64 0 }, { ptr, i64, i64 } %t286)
|
|
store { ptr, i64, i64 } %t287, ptr %a280
|
|
br label %endif6178
|
|
endif6178:
|
|
%t288 = load ptr, ptr %a1
|
|
%t289 = load { ptr, i64, i64 }, ptr %a280
|
|
store { ptr, i64, i64 } { ptr @.str.4031, i64 31, i64 0 }, ptr %a291
|
|
store { ptr, i64, i64 } %t289, ptr %a292
|
|
call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292)
|
|
%t293 = load { ptr, i64, i64 }, ptr %a290
|
|
store { ptr, i64, i64 } %t293, ptr %a295
|
|
store { ptr, i64, i64 } { ptr @.str.4032, i64 3, i64 0 }, ptr %a296
|
|
call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296)
|
|
%t297 = load { ptr, i64, i64 }, ptr %a294
|
|
%t298 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t297)
|
|
store { ptr, i64, i64 } %t298, ptr %a299
|
|
%t300 = load ptr, ptr %a1
|
|
%t301 = load { ptr, i64, i64 }, ptr %a65
|
|
%t302 = load { ptr, i64, i64 }, ptr %a299
|
|
%t303 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.boundsCheck(ptr %t300, { ptr, i64, i64 } %t301, { ptr, i64, i64 } %t302, %S.ast.Node %t303)
|
|
%t304 = load ptr, ptr %a1
|
|
%t305 = load { ptr, i64, i64 }, ptr %a280
|
|
store { ptr, i64, i64 } { ptr @.str.4033, i64 31, i64 0 }, ptr %a307
|
|
store { ptr, i64, i64 } %t305, ptr %a308
|
|
call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308)
|
|
%t309 = load { ptr, i64, i64 }, ptr %a306
|
|
store { ptr, i64, i64 } %t309, ptr %a311
|
|
store { ptr, i64, i64 } { ptr @.str.4034, i64 3, i64 0 }, ptr %a312
|
|
call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312)
|
|
%t313 = load { ptr, i64, i64 }, ptr %a310
|
|
%t314 = call { ptr, i64, i64 } @finch.gen.op(ptr %t304, { ptr, i64, i64 } %t313)
|
|
store { ptr, i64, i64 } %t314, ptr %a315
|
|
%t316 = load ptr, ptr %a1
|
|
%t317 = load ptr, ptr %a1
|
|
%t318 = load %S.ast.Type, ptr %a232
|
|
%t319 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t317, %S.ast.Type %t318)
|
|
store { ptr, i64, i64 } { ptr @.str.4035, i64 23, i64 0 }, ptr %a321
|
|
store { ptr, i64, i64 } %t319, ptr %a322
|
|
call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322)
|
|
%t323 = load { ptr, i64, i64 }, ptr %a320
|
|
store { ptr, i64, i64 } %t323, ptr %a325
|
|
store { ptr, i64, i64 } { ptr @.str.4036, i64 6, i64 0 }, ptr %a326
|
|
call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326)
|
|
%t327 = load { ptr, i64, i64 }, ptr %a324
|
|
%t328 = load { ptr, i64, i64 }, ptr %a315
|
|
store { ptr, i64, i64 } %t327, ptr %a330
|
|
store { ptr, i64, i64 } %t328, ptr %a331
|
|
call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331)
|
|
%t332 = load { ptr, i64, i64 }, ptr %a329
|
|
store { ptr, i64, i64 } %t332, ptr %a334
|
|
store { ptr, i64, i64 } { ptr @.str.4037, i64 6, i64 0 }, ptr %a335
|
|
call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335)
|
|
%t336 = load { ptr, i64, i64 }, ptr %a333
|
|
%t337 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } %t336, ptr %a339
|
|
store { ptr, i64, i64 } %t337, ptr %a340
|
|
call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340)
|
|
%t341 = load { ptr, i64, i64 }, ptr %a338
|
|
%t342 = call { ptr, i64, i64 } @finch.gen.op(ptr %t316, { ptr, i64, i64 } %t341)
|
|
store { ptr, i64, i64 } %t342, ptr %a343
|
|
%t344 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0
|
|
%t345 = load i1, ptr %t344
|
|
br i1 %t345, label %then6179, label %endif6181
|
|
then6179:
|
|
%t346 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0
|
|
%t347 = load { ptr, i64, i64 }, ptr %a343
|
|
store { ptr, i64, i64 } %t347, ptr %a348
|
|
call void @finch_str_copy(ptr %a349, ptr %a348)
|
|
%t350 = load { ptr, i64, i64 }, ptr %a349
|
|
%t351 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t350, 0
|
|
%t352 = load %S.ast.Type, ptr %a232
|
|
store %S.ast.Type %t352, ptr %a353
|
|
call void @finch.copy.S_ast_Type(ptr %a354, ptr %a353)
|
|
%t355 = load %S.ast.Type, ptr %a354
|
|
%t356 = insertvalue %S.gen.Place %t351, %S.ast.Type %t355, 1
|
|
%t357 = insertvalue %S.gen.Ref %t346, %S.gen.Place %t356, 1
|
|
ret %S.gen.Ref %t357
|
|
endif6181:
|
|
%t358 = load ptr, ptr %a1
|
|
%t359 = load ptr, ptr %a1
|
|
%t360 = load %S.ast.Type, ptr %a232
|
|
%t361 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t359, %S.ast.Type %t360)
|
|
%t362 = load { ptr, i64, i64 }, ptr %a343
|
|
%t363 = call { ptr, i64, i64 } @finch.gen.load(ptr %t358, { ptr, i64, i64 } %t361, { ptr, i64, i64 } %t362)
|
|
store { ptr, i64, i64 } %t363, ptr %a364
|
|
%t365 = load { ptr, i64, i64 }, ptr %a364
|
|
store { ptr, i64, i64 } %t365, ptr %a366
|
|
call void @finch_str_copy(ptr %a367, ptr %a366)
|
|
%t368 = load { ptr, i64, i64 }, ptr %a367
|
|
%t369 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t368, 0
|
|
%t370 = load %S.ast.Type, ptr %a232
|
|
store %S.ast.Type %t370, ptr %a371
|
|
call void @finch.copy.S_ast_Type(ptr %a372, ptr %a371)
|
|
%t373 = load %S.ast.Type, ptr %a372
|
|
%t374 = insertvalue %S.gen.Val %t369, %S.ast.Type %t373, 1
|
|
store %S.gen.Val %t374, ptr %a375
|
|
%t376 = load ptr, ptr %a1
|
|
%t377 = load %S.ast.Type, ptr %a232
|
|
%t378 = call i1 @finch.gen.owning(ptr %t376, %S.ast.Type %t377)
|
|
br label %logic.from6182
|
|
logic.from6182:
|
|
br i1 %t378, label %logic.rhs6183, label %logic.end6184
|
|
logic.rhs6183:
|
|
%t379 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2
|
|
%t380 = getelementptr inbounds %S.gen.Val, ptr %t379, i32 0, i32 2
|
|
%t381 = load i1, ptr %t380
|
|
br label %logic.rend6185
|
|
logic.rend6185:
|
|
br label %logic.end6184
|
|
logic.end6184:
|
|
%t382 = phi i1 [ false, %logic.from6182 ], [ %t381, %logic.rend6185 ]
|
|
br i1 %t382, label %then6186, label %endif6188
|
|
then6186:
|
|
%t383 = load ptr, ptr %a1
|
|
%t384 = load { ptr, i64, i64 }, ptr %a364
|
|
%t385 = load %S.ast.Type, ptr %a232
|
|
%t386 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t383, { ptr, i64, i64 } %t384, %S.ast.Type %t385)
|
|
%t387 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t386, 0
|
|
%t388 = load %S.ast.Type, ptr %a232
|
|
store %S.ast.Type %t388, ptr %a389
|
|
call void @finch.copy.S_ast_Type(ptr %a390, ptr %a389)
|
|
%t391 = load %S.ast.Type, ptr %a390
|
|
%t392 = insertvalue %S.gen.Val %t387, %S.ast.Type %t391, 1
|
|
%t393 = insertvalue %S.gen.Val %t392, i1 true, 2
|
|
store %S.gen.Val %t393, ptr %a375
|
|
br label %endif6188
|
|
endif6188:
|
|
%t394 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0
|
|
%t395 = load %S.gen.Val, ptr %a375
|
|
store %S.gen.Val %t395, ptr %a396
|
|
call void @finch.copy.S_gen_Val(ptr %a397, ptr %a396)
|
|
%t398 = load %S.gen.Val, ptr %a397
|
|
%t399 = insertvalue %S.gen.Ref %t394, %S.gen.Val %t398, 2
|
|
ret %S.gen.Ref %t399
|
|
}
|
|
|
|
define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i64, align 16
|
|
%a4 = alloca i64, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca i64, align 16
|
|
%a13 = alloca i64, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i64 %p2, ptr %a3
|
|
store i64 %p3, ptr %a4
|
|
store { ptr, i64, i64 } %p4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1
|
|
%t8 = load i64, ptr %t7
|
|
%t9 = load i64, ptr %a3
|
|
%t10 = sub i64 %t8, %t9
|
|
store i64 %t10, ptr %a11
|
|
%t12 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10
|
|
store i64 0, ptr %a13
|
|
br label %each.cond6189
|
|
each.cond6189:
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1
|
|
%t15 = load i64, ptr %t14
|
|
%t16 = load i64, ptr %a13
|
|
%t17 = icmp slt i64 %t16, %t15
|
|
br i1 %t17, label %each.body6190, label %each.end6192
|
|
each.body6190:
|
|
%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 %then6193, label %endif6195
|
|
then6193:
|
|
%t25 = load ptr, ptr %a1
|
|
%t26 = load %S.ast.Node, ptr %a2
|
|
%t27 = load { ptr, i64, i64 }, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.4038, i64 17, i64 0 }, ptr %a29
|
|
store { ptr, i64, i64 } %t27, ptr %a30
|
|
call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a28
|
|
store { ptr, i64, i64 } %t31, ptr %a33
|
|
store { ptr, i64, i64 } { ptr @.str.4039, i64 36, i64 0 }, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t35)
|
|
br label %endif6195
|
|
endif6195:
|
|
br label %each.step6191
|
|
each.step6191:
|
|
%t36 = load i64, ptr %a13
|
|
%t37 = add i64 %t36, 1
|
|
store i64 %t37, ptr %a13
|
|
br label %each.cond6189
|
|
each.end6192:
|
|
%t38 = load i64, ptr %a11
|
|
%t39 = load i64, ptr %a4
|
|
%t40 = icmp ne i64 %t38, %t39
|
|
br i1 %t40, label %then6196, label %endif6198
|
|
then6196:
|
|
%t41 = load ptr, ptr %a1
|
|
%t42 = load %S.ast.Node, ptr %a2
|
|
%t43 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.4040, i64 1, i64 0 }, ptr %a45
|
|
store { ptr, i64, i64 } %t43, ptr %a46
|
|
call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46)
|
|
%t47 = load { ptr, i64, i64 }, ptr %a44
|
|
store { ptr, i64, i64 } %t47, ptr %a49
|
|
store { ptr, i64, i64 } { ptr @.str.4041, i64 8, i64 0 }, ptr %a50
|
|
call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a48
|
|
%t52 = load i64, ptr %a4
|
|
call void @finch_str_from_int(ptr %a53, i64 %t52)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t51, ptr %a56
|
|
store { ptr, i64, i64 } %t54, ptr %a57
|
|
call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57)
|
|
%t58 = load { ptr, i64, i64 }, ptr %a55
|
|
store { ptr, i64, i64 } %t58, ptr %a60
|
|
store { ptr, i64, i64 } { ptr @.str.4042, i64 22, i64 0 }, ptr %a61
|
|
call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61)
|
|
%t62 = load { ptr, i64, i64 }, ptr %a59
|
|
%t63 = load i64, ptr %a11
|
|
call void @finch_str_from_int(ptr %a64, i64 %t63)
|
|
%t65 = load { ptr, i64, i64 }, ptr %a64
|
|
store { ptr, i64, i64 } %t62, ptr %a67
|
|
store { ptr, i64, i64 } %t65, ptr %a68
|
|
call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68)
|
|
%t69 = load { ptr, i64, i64 }, ptr %a66
|
|
call void @finch.gen.fail(ptr %t41, %S.ast.Node %t42, { ptr, i64, i64 } %t69)
|
|
br label %endif6198
|
|
endif6198:
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.strArg(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = load %S.ast.Node, ptr %a2
|
|
%t7 = call %S.gen.Val @finch.gen.expr(ptr %t5, %S.ast.Node %t6)
|
|
%t8 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4043, i64 3, i64 0 })
|
|
%t9 = load %S.ast.Node, ptr %a2
|
|
%t10 = load { ptr, i64, i64 }, ptr %a3
|
|
%t11 = call %S.gen.Val @finch.gen.coerce(ptr %t4, %S.gen.Val %t7, %S.ast.Type %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t10)
|
|
ret %S.gen.Val %t11
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.strOut(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
store ptr %p0, ptr %a1
|
|
%t2 = load ptr, ptr %a1
|
|
%t3 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t2, { ptr, i64, i64 } { ptr @.str.4044, 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.4045, i64 3, i64 0 }, ptr %a4
|
|
%t5 = call i32 @finch_str_eq(ptr %a3, ptr %a4)
|
|
%t6 = icmp ne i32 %t5, 0
|
|
br i1 %t6, label %then6199, label %endif6201
|
|
then6199:
|
|
ret { ptr, i64, i64 } { ptr @.str.4046, i64 3, i64 0 }
|
|
endif6201:
|
|
%t7 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.4047, i64 3, i64 0 }, ptr %a9
|
|
%t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9)
|
|
%t11 = icmp ne i32 %t10, 0
|
|
br i1 %t11, label %then6202, label %endif6204
|
|
then6202:
|
|
ret { ptr, i64, i64 } { ptr @.str.4048, i64 5, i64 0 }
|
|
endif6204:
|
|
%t12 = mul i64 13, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t13 = call ptr @finch_alloc(i64 %t12)
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.4049, i64 3, i64 0 }, ptr %t14
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.4050, i64 5, i64 0 }, ptr %t15
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.4051, i64 4, i64 0 }, ptr %t16
|
|
%t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.4052, i64 4, i64 0 }, ptr %t17
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.4053, i64 2, i64 0 }, ptr %t18
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.4054, i64 3, i64 0 }, ptr %t19
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.4055, i64 3, i64 0 }, ptr %t20
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.4056, i64 2, i64 0 }, ptr %t21
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.4057, i64 3, i64 0 }, ptr %t22
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.4058, i64 3, i64 0 }, ptr %t23
|
|
%t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10
|
|
store { ptr, i64, i64 } { ptr @.str.4059, i64 3, i64 0 }, ptr %t24
|
|
%t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11
|
|
store { ptr, i64, i64 } { ptr @.str.4060, i64 3, i64 0 }, ptr %t25
|
|
%t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12
|
|
store { ptr, i64, i64 } { ptr @.str.4061, i64 3, i64 0 }, ptr %t26
|
|
%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.cond6205
|
|
find.cond6205:
|
|
%t37 = load i64, ptr %a36
|
|
%t38 = icmp slt i64 %t37, %t34
|
|
br i1 %t38, label %find.body6206, label %find.end6209
|
|
find.body6206:
|
|
%t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t37
|
|
%t40 = load { ptr, i64, i64 }, ptr %t39
|
|
store { ptr, i64, i64 } %t40, ptr %a41
|
|
store { ptr, i64, i64 } %t32, ptr %a42
|
|
%t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42)
|
|
%t44 = icmp ne i32 %t43, 0
|
|
br i1 %t44, label %find.hit6207, label %find.next6208
|
|
find.hit6207:
|
|
store i64 %t37, ptr %a33
|
|
br label %find.end6209
|
|
find.next6208:
|
|
%t45 = add i64 %t37, 1
|
|
store i64 %t45, ptr %a36
|
|
br label %find.cond6205
|
|
find.end6209:
|
|
%t46 = load i64, ptr %a33
|
|
%t47 = icmp sge i64 %t46, 0
|
|
br i1 %t47, label %then6210, label %endif6212
|
|
then6210:
|
|
%t48 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
call void @finch_str_copy(ptr %a50, ptr %a49)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a50
|
|
ret { ptr, i64, i64 } %t51
|
|
endif6212:
|
|
ret { ptr, i64, i64 } { ptr @.str.4062, i64 0, i64 0 }
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.convert(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a17 = alloca %S.gen.Val, align 16
|
|
%a20 = alloca %S.ast.Type, align 16
|
|
%a21 = alloca %S.ast.Type, align 16
|
|
%a23 = alloca %S.ast.Type, align 16
|
|
%a28 = alloca %S.gen.Val, align 16
|
|
%a29 = alloca %S.gen.Val, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca %S.ast.Type, align 16
|
|
%a125 = alloca %S.ast.Type, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca %S.ast.Type, align 16
|
|
%a195 = alloca %S.ast.Type, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a231 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a237 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a242 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca %S.ast.Type, align 16
|
|
%a266 = alloca %S.ast.Type, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca %S.ast.Type, align 16
|
|
%a312 = alloca %S.ast.Type, align 16
|
|
%a319 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca %S.ast.Type, align 16
|
|
%a333 = alloca %S.ast.Type, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a349 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca %S.ast.Type, align 16
|
|
%a363 = alloca %S.ast.Type, align 16
|
|
%a368 = alloca { ptr, i64, i64 }, align 16
|
|
%a369 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a377 = alloca { ptr, i64, i64 }, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a381 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a388 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca %S.ast.Type, align 16
|
|
%a394 = alloca %S.ast.Type, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a414 = alloca { ptr, i64, i64 }, align 16
|
|
%a415 = alloca { ptr, i64, i64 }, align 16
|
|
%a416 = alloca { ptr, i64, i64 }, align 16
|
|
%a418 = alloca { ptr, i64, i64 }, align 16
|
|
%a419 = alloca { ptr, i64, i64 }, align 16
|
|
%a420 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a428 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a437 = alloca { ptr, i64, i64 }, align 16
|
|
%a442 = alloca %S.ast.Type, align 16
|
|
%a443 = alloca %S.ast.Type, align 16
|
|
%a458 = alloca %S.ast.Type, align 16
|
|
%a459 = alloca %S.ast.Type, align 16
|
|
%a472 = alloca %S.ast.Type, align 16
|
|
%a473 = alloca %S.ast.Type, align 16
|
|
%a478 = alloca { ptr, i64, i64 }, align 16
|
|
%a479 = alloca { ptr, i64, i64 }, align 16
|
|
%a489 = alloca { ptr, i64, i64 }, align 16
|
|
%a490 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca { ptr, i64, i64 }, align 16
|
|
%a493 = alloca { ptr, i64, i64 }, align 16
|
|
%a494 = alloca { ptr, i64, i64 }, align 16
|
|
%a495 = alloca { ptr, i64, i64 }, align 16
|
|
%a499 = alloca { ptr, i64, i64 }, align 16
|
|
%a500 = alloca { ptr, i64, i64 }, align 16
|
|
%a501 = alloca { ptr, i64, i64 }, align 16
|
|
%a503 = alloca { ptr, i64, i64 }, align 16
|
|
%a504 = alloca { ptr, i64, i64 }, align 16
|
|
%a505 = alloca { ptr, i64, i64 }, align 16
|
|
%a510 = alloca %S.ast.Type, align 16
|
|
%a511 = alloca %S.ast.Type, align 16
|
|
%a516 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a522 = alloca { ptr, i64, i64 }, align 16
|
|
%a523 = alloca { ptr, i64, i64 }, align 16
|
|
%a528 = alloca { ptr, i64, i64 }, align 16
|
|
%a529 = alloca { ptr, i64, i64 }, align 16
|
|
%a536 = alloca { ptr, i64, i64 }, align 16
|
|
%a537 = alloca { ptr, i64, i64 }, align 16
|
|
%a541 = alloca %S.ast.Type, align 16
|
|
%a542 = alloca %S.ast.Type, align 16
|
|
%a547 = alloca { ptr, i64, i64 }, align 16
|
|
%a548 = alloca { ptr, i64, i64 }, align 16
|
|
%a561 = alloca { ptr, i64, i64 }, align 16
|
|
%a562 = alloca { ptr, i64, i64 }, align 16
|
|
%a563 = alloca { ptr, i64, i64 }, align 16
|
|
%a565 = alloca { ptr, i64, i64 }, align 16
|
|
%a566 = alloca { ptr, i64, i64 }, align 16
|
|
%a567 = alloca { ptr, i64, i64 }, align 16
|
|
%a572 = alloca %S.ast.Type, align 16
|
|
%a573 = alloca %S.ast.Type, align 16
|
|
%a580 = alloca { ptr, i64, i64 }, align 16
|
|
%a581 = alloca { ptr, i64, i64 }, align 16
|
|
%a588 = alloca { ptr, i64, i64 }, align 16
|
|
%a589 = alloca { ptr, i64, i64 }, align 16
|
|
%a590 = alloca { ptr, i64, i64 }, align 16
|
|
%a592 = alloca { ptr, i64, i64 }, align 16
|
|
%a593 = alloca { ptr, i64, i64 }, align 16
|
|
%a594 = alloca { ptr, i64, i64 }, align 16
|
|
%a599 = alloca { ptr, i64, i64 }, align 16
|
|
%a600 = alloca { ptr, i64, i64 }, align 16
|
|
%a601 = alloca { ptr, i64, i64 }, align 16
|
|
%a606 = alloca %S.ast.Type, align 16
|
|
%a607 = alloca %S.ast.Type, align 16
|
|
%a612 = alloca { ptr, i64, i64 }, align 16
|
|
%a613 = alloca { ptr, i64, i64 }, align 16
|
|
%a618 = alloca { ptr, i64, i64 }, align 16
|
|
%a619 = alloca { ptr, i64, i64 }, align 16
|
|
%a641 = alloca { ptr, i64, i64 }, align 16
|
|
%a642 = alloca { ptr, i64, i64 }, align 16
|
|
%a643 = alloca { ptr, i64, i64 }, align 16
|
|
%a645 = alloca { ptr, i64, i64 }, align 16
|
|
%a646 = alloca { ptr, i64, i64 }, align 16
|
|
%a647 = alloca { ptr, i64, i64 }, align 16
|
|
%a651 = alloca { ptr, i64, i64 }, align 16
|
|
%a652 = alloca { ptr, i64, i64 }, align 16
|
|
%a653 = alloca { ptr, i64, i64 }, align 16
|
|
%a656 = alloca %S.gen.Val, align 16
|
|
%a657 = alloca %S.gen.Val, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store %S.ast.Type %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = load %S.ast.Node, ptr %a2
|
|
%t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
call void @finch.gen.checkArgs(ptr %t4, %S.ast.Node %t5, i64 0, i64 1, { ptr, i64, i64 } %t7)
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t10 = load { ptr, i64, i64 }, ptr %t9
|
|
%t11 = extractvalue { ptr, i64, i64 } %t10, 1
|
|
%t12 = icmp uge i64 0, %t11
|
|
br i1 %t12, label %range6213, label %inrange6214
|
|
range6213:
|
|
call void @finch_panic_index(ptr @.str.4063, i64 3478, i64 0, i64 %t11)
|
|
unreachable
|
|
inrange6214:
|
|
%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 %then6215, label %endif6217
|
|
then6215:
|
|
%t27 = load %S.gen.Val, ptr %a17
|
|
store %S.gen.Val %t27, ptr %a28
|
|
call void @finch.copy.S_gen_Val(ptr %a29, ptr %a28)
|
|
%t30 = load %S.gen.Val, ptr %a29
|
|
ret %S.gen.Val %t30
|
|
endif6217:
|
|
%t31 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t32 = load { ptr, i64, i64 }, ptr %t31
|
|
store { ptr, i64, i64 } %t32, ptr %a33
|
|
store { ptr, i64, i64 } { ptr @.str.4064, i64 3, i64 0 }, ptr %a34
|
|
%t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34)
|
|
%t36 = icmp ne i32 %t35, 0
|
|
br label %logic.from6218
|
|
logic.from6218:
|
|
br i1 %t36, label %logic.rhs6219, label %logic.end6220
|
|
logic.rhs6219:
|
|
%t37 = load %S.ast.Type, ptr %a3
|
|
%t38 = call i1 @finch.gen.isNumber(%S.ast.Type %t37)
|
|
br label %logic.rend6221
|
|
logic.rend6221:
|
|
br label %logic.end6220
|
|
logic.end6220:
|
|
%t39 = phi i1 [ false, %logic.from6218 ], [ %t38, %logic.rend6221 ]
|
|
br label %logic.from6222
|
|
logic.from6222:
|
|
br i1 %t39, label %logic.rhs6223, label %logic.end6224
|
|
logic.rhs6223:
|
|
%t40 = load ptr, ptr %a1
|
|
%t41 = icmp eq ptr %t40, null
|
|
br i1 %t41, label %panic6225, label %ok6226
|
|
panic6225:
|
|
call void @finch_panic(ptr @.str.4065, i64 3483, ptr @.str.4066)
|
|
unreachable
|
|
ok6226:
|
|
%t42 = getelementptr inbounds %S.gen.Gen, ptr %t40, i32 0, i32 37
|
|
%t43 = load { ptr, i64, i64 }, ptr %t42
|
|
%t44 = load %S.ast.Node, ptr %a2
|
|
%t45 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t44)
|
|
store { ptr, i64, i64 } %t43, ptr %a46
|
|
store { ptr, i64, i64 } %t45, ptr %a47
|
|
%t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47)
|
|
%t49 = icmp ne i32 %t48, 0
|
|
br label %logic.rend6227
|
|
logic.rend6227:
|
|
br label %logic.end6224
|
|
logic.end6224:
|
|
%t50 = phi i1 [ false, %logic.from6222 ], [ %t49, %logic.rend6227 ]
|
|
br i1 %t50, label %then6228, label %endif6230
|
|
then6228:
|
|
%t51 = load ptr, ptr %a1
|
|
%t52 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t51, { ptr, i64, i64 } { ptr @.str.4067, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
%t54 = load ptr, ptr %a1
|
|
%t55 = load { ptr, i64, i64 }, ptr %a53
|
|
call void @finch.gen.store(ptr %t54, { ptr, i64, i64 } { ptr @.str.4068, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4069, i64 15, i64 0 }, { ptr, i64, i64 } %t55)
|
|
%t56 = load %S.ast.Type, ptr %a3
|
|
%t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56)
|
|
br i1 %t57, label %then6231, label %endif6233
|
|
then6231:
|
|
%t58 = load ptr, ptr %a1
|
|
%t59 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t58, { ptr, i64, i64 } { ptr @.str.4070, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t59, ptr %a60
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = load { ptr, i64, i64 }, ptr %a60
|
|
call void @finch.gen.store(ptr %t61, { ptr, i64, i64 } { ptr @.str.4071, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4072, i64 1, i64 0 }, { ptr, i64, i64 } %t62)
|
|
%t63 = load ptr, ptr %a1
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = load %S.gen.Val, ptr %a17
|
|
%t66 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t64, %S.gen.Val %t65)
|
|
store { ptr, i64, i64 } { ptr @.str.4073, i64 32, i64 0 }, ptr %a68
|
|
store { ptr, i64, i64 } %t66, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t70, ptr %a72
|
|
store { ptr, i64, i64 } { ptr @.str.4074, i64 6, i64 0 }, ptr %a73
|
|
call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73)
|
|
%t74 = load { ptr, i64, i64 }, ptr %a71
|
|
%t75 = load { ptr, i64, i64 }, ptr %a60
|
|
store { ptr, i64, i64 } %t74, ptr %a77
|
|
store { ptr, i64, i64 } %t75, ptr %a78
|
|
call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78)
|
|
%t79 = load { ptr, i64, i64 }, ptr %a76
|
|
store { ptr, i64, i64 } %t79, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.4075, i64 6, i64 0 }, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
%t84 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t83, ptr %a86
|
|
store { ptr, i64, i64 } %t84, ptr %a87
|
|
call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87)
|
|
%t88 = load { ptr, i64, i64 }, ptr %a85
|
|
store { ptr, i64, i64 } %t88, ptr %a90
|
|
store { ptr, i64, i64 } { ptr @.str.4076, i64 1, i64 0 }, ptr %a91
|
|
call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91)
|
|
%t92 = load { ptr, i64, i64 }, ptr %a89
|
|
%t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t63, { ptr, i64, i64 } %t92)
|
|
store { ptr, i64, i64 } %t93, ptr %a94
|
|
%t95 = load ptr, ptr %a1
|
|
%t96 = load { ptr, i64, i64 }, ptr %a94
|
|
store { ptr, i64, i64 } { ptr @.str.4077, i64 12, i64 0 }, ptr %a98
|
|
store { ptr, i64, i64 } %t96, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
store { ptr, i64, i64 } %t100, ptr %a102
|
|
store { ptr, i64, i64 } { ptr @.str.4078, i64 3, i64 0 }, ptr %a103
|
|
call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103)
|
|
%t104 = load { ptr, i64, i64 }, ptr %a101
|
|
%t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t104)
|
|
%t106 = load ptr, ptr %a1
|
|
%t107 = icmp eq ptr %t106, null
|
|
br i1 %t107, label %panic6234, label %ok6235
|
|
panic6234:
|
|
call void @finch_panic(ptr @.str.4079, i64 3491, ptr @.str.4080)
|
|
unreachable
|
|
ok6235:
|
|
%t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 38
|
|
store { ptr, i64, i64 } %t105, ptr %t108
|
|
%t109 = load ptr, ptr %a1
|
|
%t110 = load { ptr, i64, i64 }, ptr %a53
|
|
%t111 = call { ptr, i64, i64 } @finch.gen.load(ptr %t109, { ptr, i64, i64 } { ptr @.str.4081, i64 17, i64 0 }, { ptr, i64, i64 } %t110)
|
|
%t112 = load ptr, ptr %a1
|
|
%t113 = icmp eq ptr %t112, null
|
|
br i1 %t113, label %panic6236, label %ok6237
|
|
panic6236:
|
|
call void @finch_panic(ptr @.str.4082, i64 3492, ptr @.str.4083)
|
|
unreachable
|
|
ok6237:
|
|
%t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 39
|
|
store { ptr, i64, i64 } %t111, ptr %t114
|
|
%t115 = load ptr, ptr %a1
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = load { ptr, i64, i64 }, ptr %a60
|
|
%t118 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.4084, i64 3, i64 0 }, { ptr, i64, i64 } %t117)
|
|
%t119 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4085, i64 3, i64 0 })
|
|
%t120 = load %S.ast.Type, ptr %a3
|
|
%t121 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t115, { ptr, i64, i64 } %t118, %S.ast.Type %t119, %S.ast.Type %t120)
|
|
%t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0
|
|
%t123 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t123, ptr %a124
|
|
call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124)
|
|
%t126 = load %S.ast.Type, ptr %a125
|
|
%t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1
|
|
ret %S.gen.Val %t127
|
|
endif6233:
|
|
%t128 = load ptr, ptr %a1
|
|
%t129 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t128, { ptr, i64, i64 } { ptr @.str.4086, i64 6, i64 0 })
|
|
store { ptr, i64, i64 } %t129, ptr %a130
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = load { ptr, i64, i64 }, ptr %a130
|
|
call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } { ptr @.str.4087, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4088, i64 3, i64 0 }, { ptr, i64, i64 } %t132)
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = load ptr, ptr %a1
|
|
%t135 = load %S.gen.Val, ptr %a17
|
|
%t136 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t134, %S.gen.Val %t135)
|
|
store { ptr, i64, i64 } { ptr @.str.4089, i64 34, i64 0 }, ptr %a138
|
|
store { ptr, i64, i64 } %t136, ptr %a139
|
|
call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139)
|
|
%t140 = load { ptr, i64, i64 }, ptr %a137
|
|
store { ptr, i64, i64 } %t140, ptr %a142
|
|
store { ptr, i64, i64 } { ptr @.str.4090, i64 6, i64 0 }, ptr %a143
|
|
call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143)
|
|
%t144 = load { ptr, i64, i64 }, ptr %a141
|
|
%t145 = load { ptr, i64, i64 }, ptr %a130
|
|
store { ptr, i64, i64 } %t144, ptr %a147
|
|
store { ptr, i64, i64 } %t145, ptr %a148
|
|
call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148)
|
|
%t149 = load { ptr, i64, i64 }, ptr %a146
|
|
store { ptr, i64, i64 } %t149, ptr %a151
|
|
store { ptr, i64, i64 } { ptr @.str.4091, i64 6, i64 0 }, ptr %a152
|
|
call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152)
|
|
%t153 = load { ptr, i64, i64 }, ptr %a150
|
|
%t154 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } %t153, ptr %a156
|
|
store { ptr, i64, i64 } %t154, ptr %a157
|
|
call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157)
|
|
%t158 = load { ptr, i64, i64 }, ptr %a155
|
|
store { ptr, i64, i64 } %t158, ptr %a160
|
|
store { ptr, i64, i64 } { ptr @.str.4092, i64 1, i64 0 }, ptr %a161
|
|
call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161)
|
|
%t162 = load { ptr, i64, i64 }, ptr %a159
|
|
%t163 = call { ptr, i64, i64 } @finch.gen.op(ptr %t133, { ptr, i64, i64 } %t162)
|
|
store { ptr, i64, i64 } %t163, ptr %a164
|
|
%t165 = load ptr, ptr %a1
|
|
%t166 = load { ptr, i64, i64 }, ptr %a164
|
|
store { ptr, i64, i64 } { ptr @.str.4093, i64 12, i64 0 }, ptr %a168
|
|
store { ptr, i64, i64 } %t166, ptr %a169
|
|
call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169)
|
|
%t170 = load { ptr, i64, i64 }, ptr %a167
|
|
store { ptr, i64, i64 } %t170, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4094, i64 3, i64 0 }, ptr %a173
|
|
call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173)
|
|
%t174 = load { ptr, i64, i64 }, ptr %a171
|
|
%t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t165, { ptr, i64, i64 } %t174)
|
|
%t176 = load ptr, ptr %a1
|
|
%t177 = icmp eq ptr %t176, null
|
|
br i1 %t177, label %panic6238, label %ok6239
|
|
panic6238:
|
|
call void @finch_panic(ptr @.str.4095, i64 3498, ptr @.str.4096)
|
|
unreachable
|
|
ok6239:
|
|
%t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 38
|
|
store { ptr, i64, i64 } %t175, ptr %t178
|
|
%t179 = load ptr, ptr %a1
|
|
%t180 = load { ptr, i64, i64 }, ptr %a53
|
|
%t181 = call { ptr, i64, i64 } @finch.gen.load(ptr %t179, { ptr, i64, i64 } { ptr @.str.4097, i64 17, i64 0 }, { ptr, i64, i64 } %t180)
|
|
%t182 = load ptr, ptr %a1
|
|
%t183 = icmp eq ptr %t182, null
|
|
br i1 %t183, label %panic6240, label %ok6241
|
|
panic6240:
|
|
call void @finch_panic(ptr @.str.4098, i64 3499, ptr @.str.4099)
|
|
unreachable
|
|
ok6241:
|
|
%t184 = getelementptr inbounds %S.gen.Gen, ptr %t182, i32 0, i32 39
|
|
store { ptr, i64, i64 } %t181, ptr %t184
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = load ptr, ptr %a1
|
|
%t187 = load { ptr, i64, i64 }, ptr %a130
|
|
%t188 = call { ptr, i64, i64 } @finch.gen.load(ptr %t186, { ptr, i64, i64 } { ptr @.str.4100, i64 6, i64 0 }, { ptr, i64, i64 } %t187)
|
|
%t189 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4101, i64 5, i64 0 })
|
|
%t190 = load %S.ast.Type, ptr %a3
|
|
%t191 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t185, { ptr, i64, i64 } %t188, %S.ast.Type %t189, %S.ast.Type %t190)
|
|
%t192 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t191, 0
|
|
%t193 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t193, ptr %a194
|
|
call void @finch.copy.S_ast_Type(ptr %a195, ptr %a194)
|
|
%t196 = load %S.ast.Type, ptr %a195
|
|
%t197 = insertvalue %S.gen.Val %t192, %S.ast.Type %t196, 1
|
|
ret %S.gen.Val %t197
|
|
endif6230:
|
|
%t198 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t199 = load { ptr, i64, i64 }, ptr %t198
|
|
store { ptr, i64, i64 } %t199, ptr %a200
|
|
store { ptr, i64, i64 } { ptr @.str.4102, i64 3, i64 0 }, ptr %a201
|
|
%t202 = call i32 @finch_str_eq(ptr %a200, ptr %a201)
|
|
%t203 = icmp ne i32 %t202, 0
|
|
br label %logic.from6242
|
|
logic.from6242:
|
|
br i1 %t203, label %logic.rhs6243, label %logic.end6244
|
|
logic.rhs6243:
|
|
%t204 = load %S.ast.Type, ptr %a3
|
|
%t205 = call i1 @finch.gen.isNumber(%S.ast.Type %t204)
|
|
br label %logic.rend6245
|
|
logic.rend6245:
|
|
br label %logic.end6244
|
|
logic.end6244:
|
|
%t206 = phi i1 [ false, %logic.from6242 ], [ %t205, %logic.rend6245 ]
|
|
br i1 %t206, label %then6246, label %endif6248
|
|
then6246:
|
|
%t207 = load ptr, ptr %a1
|
|
%t208 = load ptr, ptr %a1
|
|
%t209 = icmp eq ptr %t208, null
|
|
br i1 %t209, label %panic6249, label %ok6250
|
|
panic6249:
|
|
call void @finch_panic(ptr @.str.4103, i64 3503, ptr @.str.4104)
|
|
unreachable
|
|
ok6250:
|
|
%t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 1
|
|
%t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t212 = load i64, ptr %t211
|
|
%t213 = load { ptr, i64, i64 }, ptr %t210
|
|
%t214 = extractvalue { ptr, i64, i64 } %t213, 1
|
|
%t215 = icmp uge i64 %t212, %t214
|
|
br i1 %t215, label %range6251, label %inrange6252
|
|
range6251:
|
|
call void @finch_panic_index(ptr @.str.4105, i64 3503, i64 %t212, i64 %t214)
|
|
unreachable
|
|
inrange6252:
|
|
%t216 = extractvalue { ptr, i64, i64 } %t213, 0
|
|
%t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t212
|
|
%t218 = load { ptr, i64, i64 }, ptr %t217
|
|
%t219 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t207, { ptr, i64, i64 } %t218)
|
|
store { ptr, i64, i64 } %t219, ptr %a220
|
|
%t221 = load %S.ast.Type, ptr %a3
|
|
%t222 = call i1 @finch.gen.isInt(%S.ast.Type %t221)
|
|
br i1 %t222, label %then6253, label %endif6255
|
|
then6253:
|
|
%t223 = load ptr, ptr %a1
|
|
%t224 = load ptr, ptr %a1
|
|
%t225 = load %S.gen.Val, ptr %a17
|
|
%t226 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t224, %S.gen.Val %t225)
|
|
store { ptr, i64, i64 } { ptr @.str.4106, i64 31, i64 0 }, ptr %a228
|
|
store { ptr, i64, i64 } %t226, ptr %a229
|
|
call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229)
|
|
%t230 = load { ptr, i64, i64 }, ptr %a227
|
|
store { ptr, i64, i64 } %t230, ptr %a232
|
|
store { ptr, i64, i64 } { ptr @.str.4107, i64 6, i64 0 }, ptr %a233
|
|
call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233)
|
|
%t234 = load { ptr, i64, i64 }, ptr %a231
|
|
%t235 = load { ptr, i64, i64 }, ptr %a220
|
|
store { ptr, i64, i64 } %t234, ptr %a237
|
|
store { ptr, i64, i64 } %t235, ptr %a238
|
|
call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238)
|
|
%t239 = load { ptr, i64, i64 }, ptr %a236
|
|
store { ptr, i64, i64 } %t239, ptr %a241
|
|
store { ptr, i64, i64 } { ptr @.str.4108, i64 6, i64 0 }, ptr %a242
|
|
call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242)
|
|
%t243 = load { ptr, i64, i64 }, ptr %a240
|
|
%t244 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t245 = load i64, ptr %t244
|
|
call void @finch_str_from_int(ptr %a246, i64 %t245)
|
|
%t247 = load { ptr, i64, i64 }, ptr %a246
|
|
store { ptr, i64, i64 } %t243, ptr %a249
|
|
store { ptr, i64, i64 } %t247, ptr %a250
|
|
call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250)
|
|
%t251 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t251, ptr %a253
|
|
store { ptr, i64, i64 } { ptr @.str.4109, i64 1, i64 0 }, ptr %a254
|
|
call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254)
|
|
%t255 = load { ptr, i64, i64 }, ptr %a252
|
|
%t256 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t255)
|
|
store { ptr, i64, i64 } %t256, ptr %a257
|
|
%t258 = load ptr, ptr %a1
|
|
%t259 = load { ptr, i64, i64 }, ptr %a257
|
|
%t260 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4110, i64 3, i64 0 })
|
|
%t261 = load %S.ast.Type, ptr %a3
|
|
%t262 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t258, { ptr, i64, i64 } %t259, %S.ast.Type %t260, %S.ast.Type %t261)
|
|
%t263 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t262, 0
|
|
%t264 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t264, ptr %a265
|
|
call void @finch.copy.S_ast_Type(ptr %a266, ptr %a265)
|
|
%t267 = load %S.ast.Type, ptr %a266
|
|
%t268 = insertvalue %S.gen.Val %t263, %S.ast.Type %t267, 1
|
|
ret %S.gen.Val %t268
|
|
endif6255:
|
|
%t269 = load ptr, ptr %a1
|
|
%t270 = load ptr, ptr %a1
|
|
%t271 = load %S.gen.Val, ptr %a17
|
|
%t272 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t270, %S.gen.Val %t271)
|
|
store { ptr, i64, i64 } { ptr @.str.4111, i64 36, i64 0 }, ptr %a274
|
|
store { ptr, i64, i64 } %t272, ptr %a275
|
|
call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275)
|
|
%t276 = load { ptr, i64, i64 }, ptr %a273
|
|
store { ptr, i64, i64 } %t276, ptr %a278
|
|
store { ptr, i64, i64 } { ptr @.str.4112, i64 6, i64 0 }, ptr %a279
|
|
call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279)
|
|
%t280 = load { ptr, i64, i64 }, ptr %a277
|
|
%t281 = load { ptr, i64, i64 }, ptr %a220
|
|
store { ptr, i64, i64 } %t280, ptr %a283
|
|
store { ptr, i64, i64 } %t281, ptr %a284
|
|
call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284)
|
|
%t285 = load { ptr, i64, i64 }, ptr %a282
|
|
store { ptr, i64, i64 } %t285, ptr %a287
|
|
store { ptr, i64, i64 } { ptr @.str.4113, i64 6, i64 0 }, ptr %a288
|
|
call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288)
|
|
%t289 = load { ptr, i64, i64 }, ptr %a286
|
|
%t290 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t291 = load i64, ptr %t290
|
|
call void @finch_str_from_int(ptr %a292, i64 %t291)
|
|
%t293 = load { ptr, i64, i64 }, ptr %a292
|
|
store { ptr, i64, i64 } %t289, ptr %a295
|
|
store { ptr, i64, i64 } %t293, ptr %a296
|
|
call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296)
|
|
%t297 = load { ptr, i64, i64 }, ptr %a294
|
|
store { ptr, i64, i64 } %t297, ptr %a299
|
|
store { ptr, i64, i64 } { ptr @.str.4114, i64 1, i64 0 }, ptr %a300
|
|
call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300)
|
|
%t301 = load { ptr, i64, i64 }, ptr %a298
|
|
%t302 = call { ptr, i64, i64 } @finch.gen.op(ptr %t269, { ptr, i64, i64 } %t301)
|
|
store { ptr, i64, i64 } %t302, ptr %a303
|
|
%t304 = load ptr, ptr %a1
|
|
%t305 = load { ptr, i64, i64 }, ptr %a303
|
|
%t306 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4115, i64 5, i64 0 })
|
|
%t307 = load %S.ast.Type, ptr %a3
|
|
%t308 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t304, { ptr, i64, i64 } %t305, %S.ast.Type %t306, %S.ast.Type %t307)
|
|
%t309 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t308, 0
|
|
%t310 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t310, ptr %a311
|
|
call void @finch.copy.S_ast_Type(ptr %a312, ptr %a311)
|
|
%t313 = load %S.ast.Type, ptr %a312
|
|
%t314 = insertvalue %S.gen.Val %t309, %S.ast.Type %t313, 1
|
|
ret %S.gen.Val %t314
|
|
endif6248:
|
|
%t315 = load %S.ast.Type, ptr %a3
|
|
%t316 = call i1 @finch.gen.isInt(%S.ast.Type %t315)
|
|
br label %logic.from6256
|
|
logic.from6256:
|
|
br i1 %t316, label %logic.rhs6257, label %logic.end6258
|
|
logic.rhs6257:
|
|
%t317 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t318 = load { ptr, i64, i64 }, ptr %t317
|
|
store { ptr, i64, i64 } %t318, ptr %a319
|
|
store { ptr, i64, i64 } { ptr @.str.4116, i64 4, i64 0 }, ptr %a320
|
|
%t321 = call i32 @finch_str_eq(ptr %a319, ptr %a320)
|
|
%t322 = icmp ne i32 %t321, 0
|
|
br label %logic.rend6259
|
|
logic.rend6259:
|
|
br label %logic.end6258
|
|
logic.end6258:
|
|
%t323 = phi i1 [ false, %logic.from6256 ], [ %t322, %logic.rend6259 ]
|
|
br i1 %t323, label %then6260, label %endif6262
|
|
then6260:
|
|
%t324 = load ptr, ptr %a1
|
|
%t325 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t326 = load { ptr, i64, i64 }, ptr %t325
|
|
%t327 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4117, i64 3, i64 0 })
|
|
%t328 = load %S.ast.Type, ptr %a3
|
|
%t329 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t324, { ptr, i64, i64 } %t326, %S.ast.Type %t327, %S.ast.Type %t328)
|
|
%t330 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t329, 0
|
|
%t331 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t331, ptr %a332
|
|
call void @finch.copy.S_ast_Type(ptr %a333, ptr %a332)
|
|
%t334 = load %S.ast.Type, ptr %a333
|
|
%t335 = insertvalue %S.gen.Val %t330, %S.ast.Type %t334, 1
|
|
ret %S.gen.Val %t335
|
|
endif6262:
|
|
%t336 = load %S.ast.Type, ptr %a3
|
|
%t337 = call i1 @finch.gen.isInt(%S.ast.Type %t336)
|
|
br label %logic.from6263
|
|
logic.from6263:
|
|
br i1 %t337, label %logic.end6265, label %logic.rhs6264
|
|
logic.rhs6264:
|
|
%t338 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t339 = load { ptr, i64, i64 }, ptr %t338
|
|
store { ptr, i64, i64 } %t339, ptr %a340
|
|
store { ptr, i64, i64 } { ptr @.str.4118, i64 4, i64 0 }, ptr %a341
|
|
%t342 = call i32 @finch_str_eq(ptr %a340, ptr %a341)
|
|
%t343 = icmp ne i32 %t342, 0
|
|
br label %logic.rend6266
|
|
logic.rend6266:
|
|
br label %logic.end6265
|
|
logic.end6265:
|
|
%t344 = phi i1 [ true, %logic.from6263 ], [ %t343, %logic.rend6266 ]
|
|
br i1 %t344, label %then6267, label %endif6269
|
|
then6267:
|
|
%t345 = load %S.ast.Type, ptr %a23
|
|
%t346 = call i1 @finch.gen.isInt(%S.ast.Type %t345)
|
|
br label %logic.from6270
|
|
logic.from6270:
|
|
br i1 %t346, label %logic.end6272, label %logic.rhs6271
|
|
logic.rhs6271:
|
|
%t347 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t348 = load { ptr, i64, i64 }, ptr %t347
|
|
store { ptr, i64, i64 } %t348, ptr %a349
|
|
store { ptr, i64, i64 } { ptr @.str.4119, i64 4, i64 0 }, ptr %a350
|
|
%t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350)
|
|
%t352 = icmp ne i32 %t351, 0
|
|
br label %logic.rend6273
|
|
logic.rend6273:
|
|
br label %logic.end6272
|
|
logic.end6272:
|
|
%t353 = phi i1 [ true, %logic.from6270 ], [ %t352, %logic.rend6273 ]
|
|
br i1 %t353, label %then6274, label %endif6276
|
|
then6274:
|
|
%t354 = load ptr, ptr %a1
|
|
%t355 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t356 = load { ptr, i64, i64 }, ptr %t355
|
|
%t357 = load %S.ast.Type, ptr %a23
|
|
%t358 = load %S.ast.Type, ptr %a3
|
|
%t359 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t354, { ptr, i64, i64 } %t356, %S.ast.Type %t357, %S.ast.Type %t358)
|
|
%t360 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t359, 0
|
|
%t361 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t361, ptr %a362
|
|
call void @finch.copy.S_ast_Type(ptr %a363, ptr %a362)
|
|
%t364 = load %S.ast.Type, ptr %a363
|
|
%t365 = insertvalue %S.gen.Val %t360, %S.ast.Type %t364, 1
|
|
ret %S.gen.Val %t365
|
|
endif6276:
|
|
%t366 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t367 = load { ptr, i64, i64 }, ptr %t366
|
|
store { ptr, i64, i64 } %t367, ptr %a368
|
|
store { ptr, i64, i64 } { ptr @.str.4120, i64 4, i64 0 }, ptr %a369
|
|
%t370 = call i32 @finch_str_eq(ptr %a368, ptr %a369)
|
|
%t371 = icmp ne i32 %t370, 0
|
|
br i1 %t371, label %then6277, label %endif6279
|
|
then6277:
|
|
%t372 = load ptr, ptr %a1
|
|
%t373 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t374 = load { ptr, i64, i64 }, ptr %t373
|
|
store { ptr, i64, i64 } { ptr @.str.4121, i64 8, i64 0 }, ptr %a376
|
|
store { ptr, i64, i64 } %t374, ptr %a377
|
|
call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377)
|
|
%t378 = load { ptr, i64, i64 }, ptr %a375
|
|
store { ptr, i64, i64 } %t378, ptr %a380
|
|
store { ptr, i64, i64 } { ptr @.str.4122, i64 4, i64 0 }, ptr %a381
|
|
call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381)
|
|
%t382 = load { ptr, i64, i64 }, ptr %a379
|
|
%t383 = load ptr, ptr %a1
|
|
%t384 = load %S.ast.Type, ptr %a3
|
|
%t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384)
|
|
store { ptr, i64, i64 } %t382, ptr %a387
|
|
store { ptr, i64, i64 } %t385, ptr %a388
|
|
call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388)
|
|
%t389 = load { ptr, i64, i64 }, ptr %a386
|
|
%t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t372, { ptr, i64, i64 } %t389)
|
|
%t391 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0
|
|
%t392 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t392, ptr %a393
|
|
call void @finch.copy.S_ast_Type(ptr %a394, ptr %a393)
|
|
%t395 = load %S.ast.Type, ptr %a394
|
|
%t396 = insertvalue %S.gen.Val %t391, %S.ast.Type %t395, 1
|
|
ret %S.gen.Val %t396
|
|
endif6279:
|
|
%t397 = load %S.ast.Type, ptr %a23
|
|
%t398 = call i1 @finch.gen.isFloat(%S.ast.Type %t397)
|
|
br label %logic.from6280
|
|
logic.from6280:
|
|
br i1 %t398, label %logic.rhs6281, label %logic.end6282
|
|
logic.rhs6281:
|
|
%t399 = load %S.ast.Type, ptr %a3
|
|
%t400 = call i1 @finch.gen.isInt(%S.ast.Type %t399)
|
|
br label %logic.rend6283
|
|
logic.rend6283:
|
|
br label %logic.end6282
|
|
logic.end6282:
|
|
%t401 = phi i1 [ false, %logic.from6280 ], [ %t400, %logic.rend6283 ]
|
|
br i1 %t401, label %then6284, label %endif6286
|
|
then6284:
|
|
store { ptr, i64, i64 } { ptr @.str.4123, i64 6, i64 0 }, ptr %a402
|
|
%t403 = load %S.ast.Type, ptr %a3
|
|
%t404 = call i1 @finch.gen.isSigned(%S.ast.Type %t403)
|
|
br i1 %t404, label %then6287, label %endif6289
|
|
then6287:
|
|
store { ptr, i64, i64 } { ptr @.str.4124, i64 6, i64 0 }, ptr %a402
|
|
br label %endif6289
|
|
endif6289:
|
|
%t405 = load ptr, ptr %a1
|
|
%t406 = load { ptr, i64, i64 }, ptr %a402
|
|
store { ptr, i64, i64 } %t406, ptr %a408
|
|
store { ptr, i64, i64 } { ptr @.str.4125, i64 1, i64 0 }, ptr %a409
|
|
call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409)
|
|
%t410 = load { ptr, i64, i64 }, ptr %a407
|
|
%t411 = load ptr, ptr %a1
|
|
%t412 = load %S.ast.Type, ptr %a23
|
|
%t413 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t411, %S.ast.Type %t412)
|
|
store { ptr, i64, i64 } %t410, ptr %a415
|
|
store { ptr, i64, i64 } %t413, ptr %a416
|
|
call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416)
|
|
%t417 = load { ptr, i64, i64 }, ptr %a414
|
|
store { ptr, i64, i64 } %t417, ptr %a419
|
|
store { ptr, i64, i64 } { ptr @.str.4126, i64 1, i64 0 }, ptr %a420
|
|
call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420)
|
|
%t421 = load { ptr, i64, i64 }, ptr %a418
|
|
%t422 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t423 = load { ptr, i64, i64 }, ptr %t422
|
|
store { ptr, i64, i64 } %t421, ptr %a425
|
|
store { ptr, i64, i64 } %t423, ptr %a426
|
|
call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426)
|
|
%t427 = load { ptr, i64, i64 }, ptr %a424
|
|
store { ptr, i64, i64 } %t427, ptr %a429
|
|
store { ptr, i64, i64 } { ptr @.str.4127, i64 4, i64 0 }, ptr %a430
|
|
call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430)
|
|
%t431 = load { ptr, i64, i64 }, ptr %a428
|
|
%t432 = load ptr, ptr %a1
|
|
%t433 = load %S.ast.Type, ptr %a3
|
|
%t434 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t432, %S.ast.Type %t433)
|
|
store { ptr, i64, i64 } %t431, ptr %a436
|
|
store { ptr, i64, i64 } %t434, ptr %a437
|
|
call void @finch_str_concat(ptr %a435, ptr %a436, ptr %a437)
|
|
%t438 = load { ptr, i64, i64 }, ptr %a435
|
|
%t439 = call { ptr, i64, i64 } @finch.gen.op(ptr %t405, { ptr, i64, i64 } %t438)
|
|
%t440 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t439, 0
|
|
%t441 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t441, ptr %a442
|
|
call void @finch.copy.S_ast_Type(ptr %a443, ptr %a442)
|
|
%t444 = load %S.ast.Type, ptr %a443
|
|
%t445 = insertvalue %S.gen.Val %t440, %S.ast.Type %t444, 1
|
|
ret %S.gen.Val %t445
|
|
endif6286:
|
|
br label %endif6269
|
|
endif6269:
|
|
%t446 = load %S.ast.Type, ptr %a3
|
|
%t447 = call i1 @finch.gen.isFloat(%S.ast.Type %t446)
|
|
br i1 %t447, label %then6290, label %endif6292
|
|
then6290:
|
|
%t448 = load %S.ast.Type, ptr %a23
|
|
%t449 = call i1 @finch.gen.isInt(%S.ast.Type %t448)
|
|
br i1 %t449, label %then6293, label %endif6295
|
|
then6293:
|
|
%t450 = load ptr, ptr %a1
|
|
%t451 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t452 = load { ptr, i64, i64 }, ptr %t451
|
|
%t453 = load %S.ast.Type, ptr %a23
|
|
%t454 = load %S.ast.Type, ptr %a3
|
|
%t455 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t450, { ptr, i64, i64 } %t452, %S.ast.Type %t453, %S.ast.Type %t454)
|
|
%t456 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t455, 0
|
|
%t457 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t457, ptr %a458
|
|
call void @finch.copy.S_ast_Type(ptr %a459, ptr %a458)
|
|
%t460 = load %S.ast.Type, ptr %a459
|
|
%t461 = insertvalue %S.gen.Val %t456, %S.ast.Type %t460, 1
|
|
ret %S.gen.Val %t461
|
|
endif6295:
|
|
%t462 = load %S.ast.Type, ptr %a23
|
|
%t463 = call i1 @finch.gen.isFloat(%S.ast.Type %t462)
|
|
br i1 %t463, label %then6296, label %endif6298
|
|
then6296:
|
|
%t464 = load ptr, ptr %a1
|
|
%t465 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t466 = load { ptr, i64, i64 }, ptr %t465
|
|
%t467 = load %S.ast.Type, ptr %a23
|
|
%t468 = load %S.ast.Type, ptr %a3
|
|
%t469 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t464, { ptr, i64, i64 } %t466, %S.ast.Type %t467, %S.ast.Type %t468)
|
|
%t470 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t469, 0
|
|
%t471 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t471, ptr %a472
|
|
call void @finch.copy.S_ast_Type(ptr %a473, ptr %a472)
|
|
%t474 = load %S.ast.Type, ptr %a473
|
|
%t475 = insertvalue %S.gen.Val %t470, %S.ast.Type %t474, 1
|
|
ret %S.gen.Val %t475
|
|
endif6298:
|
|
br label %endif6292
|
|
endif6292:
|
|
%t476 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t477 = load { ptr, i64, i64 }, ptr %t476
|
|
store { ptr, i64, i64 } %t477, ptr %a478
|
|
store { ptr, i64, i64 } { ptr @.str.4128, i64 4, i64 0 }, ptr %a479
|
|
%t480 = call i32 @finch_str_eq(ptr %a478, ptr %a479)
|
|
%t481 = icmp ne i32 %t480, 0
|
|
br label %logic.from6299
|
|
logic.from6299:
|
|
br i1 %t481, label %logic.rhs6300, label %logic.end6301
|
|
logic.rhs6300:
|
|
%t482 = load %S.ast.Type, ptr %a23
|
|
%t483 = call i1 @finch.gen.isInt(%S.ast.Type %t482)
|
|
br label %logic.rend6302
|
|
logic.rend6302:
|
|
br label %logic.end6301
|
|
logic.end6301:
|
|
%t484 = phi i1 [ false, %logic.from6299 ], [ %t483, %logic.rend6302 ]
|
|
br i1 %t484, label %then6303, label %endif6305
|
|
then6303:
|
|
%t485 = load ptr, ptr %a1
|
|
%t486 = load ptr, ptr %a1
|
|
%t487 = load %S.ast.Type, ptr %a23
|
|
%t488 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t486, %S.ast.Type %t487)
|
|
store { ptr, i64, i64 } { ptr @.str.4129, i64 8, i64 0 }, ptr %a490
|
|
store { ptr, i64, i64 } %t488, ptr %a491
|
|
call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491)
|
|
%t492 = load { ptr, i64, i64 }, ptr %a489
|
|
store { ptr, i64, i64 } %t492, ptr %a494
|
|
store { ptr, i64, i64 } { ptr @.str.4130, i64 1, i64 0 }, ptr %a495
|
|
call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495)
|
|
%t496 = load { ptr, i64, i64 }, ptr %a493
|
|
%t497 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t498 = load { ptr, i64, i64 }, ptr %t497
|
|
store { ptr, i64, i64 } %t496, ptr %a500
|
|
store { ptr, i64, i64 } %t498, ptr %a501
|
|
call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501)
|
|
%t502 = load { ptr, i64, i64 }, ptr %a499
|
|
store { ptr, i64, i64 } %t502, ptr %a504
|
|
store { ptr, i64, i64 } { ptr @.str.4131, i64 3, i64 0 }, ptr %a505
|
|
call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505)
|
|
%t506 = load { ptr, i64, i64 }, ptr %a503
|
|
%t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t485, { ptr, i64, i64 } %t506)
|
|
%t508 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0
|
|
%t509 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t509, ptr %a510
|
|
call void @finch.copy.S_ast_Type(ptr %a511, ptr %a510)
|
|
%t512 = load %S.ast.Type, ptr %a511
|
|
%t513 = insertvalue %S.gen.Val %t508, %S.ast.Type %t512, 1
|
|
ret %S.gen.Val %t513
|
|
endif6305:
|
|
%t514 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t515 = load { ptr, i64, i64 }, ptr %t514
|
|
store { ptr, i64, i64 } %t515, ptr %a516
|
|
store { ptr, i64, i64 } { ptr @.str.4132, i64 3, i64 0 }, ptr %a517
|
|
%t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517)
|
|
%t519 = icmp ne i32 %t518, 0
|
|
br label %logic.from6306
|
|
logic.from6306:
|
|
br i1 %t519, label %logic.rhs6307, label %logic.end6308
|
|
logic.rhs6307:
|
|
%t520 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t521 = load { ptr, i64, i64 }, ptr %t520
|
|
store { ptr, i64, i64 } %t521, ptr %a522
|
|
store { ptr, i64, i64 } { ptr @.str.4133, i64 3, i64 0 }, ptr %a523
|
|
%t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523)
|
|
%t525 = icmp ne i32 %t524, 0
|
|
br label %logic.from6309
|
|
logic.from6309:
|
|
br i1 %t525, label %logic.end6311, label %logic.rhs6310
|
|
logic.rhs6310:
|
|
%t526 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t527 = load { ptr, i64, i64 }, ptr %t526
|
|
store { ptr, i64, i64 } %t527, ptr %a528
|
|
store { ptr, i64, i64 } { ptr @.str.4134, i64 4, i64 0 }, ptr %a529
|
|
%t530 = call i32 @finch_str_eq(ptr %a528, ptr %a529)
|
|
%t531 = icmp ne i32 %t530, 0
|
|
br label %logic.rend6312
|
|
logic.rend6312:
|
|
br label %logic.end6311
|
|
logic.end6311:
|
|
%t532 = phi i1 [ true, %logic.from6309 ], [ %t531, %logic.rend6312 ]
|
|
br label %logic.rend6313
|
|
logic.rend6313:
|
|
br label %logic.end6308
|
|
logic.end6308:
|
|
%t533 = phi i1 [ false, %logic.from6306 ], [ %t532, %logic.rend6313 ]
|
|
br i1 %t533, label %then6314, label %endif6316
|
|
then6314:
|
|
%t534 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t535 = load { ptr, i64, i64 }, ptr %t534
|
|
store { ptr, i64, i64 } %t535, ptr %a536
|
|
call void @finch_str_copy(ptr %a537, ptr %a536)
|
|
%t538 = load { ptr, i64, i64 }, ptr %a537
|
|
%t539 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t538, 0
|
|
%t540 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t540, ptr %a541
|
|
call void @finch.copy.S_ast_Type(ptr %a542, ptr %a541)
|
|
%t543 = load %S.ast.Type, ptr %a542
|
|
%t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1
|
|
ret %S.gen.Val %t544
|
|
endif6316:
|
|
%t545 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t546 = load { ptr, i64, i64 }, ptr %t545
|
|
store { ptr, i64, i64 } %t546, ptr %a547
|
|
store { ptr, i64, i64 } { ptr @.str.4135, i64 3, i64 0 }, ptr %a548
|
|
%t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548)
|
|
%t550 = icmp ne i32 %t549, 0
|
|
br label %logic.from6317
|
|
logic.from6317:
|
|
br i1 %t550, label %logic.rhs6318, label %logic.end6319
|
|
logic.rhs6318:
|
|
%t551 = load %S.ast.Type, ptr %a23
|
|
%t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551)
|
|
br label %logic.rend6320
|
|
logic.rend6320:
|
|
br label %logic.end6319
|
|
logic.end6319:
|
|
%t553 = phi i1 [ false, %logic.from6317 ], [ %t552, %logic.rend6320 ]
|
|
br i1 %t553, label %then6321, label %endif6323
|
|
then6321:
|
|
%t554 = load ptr, ptr %a1
|
|
%t555 = load ptr, ptr %a1
|
|
%t556 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t557 = load { ptr, i64, i64 }, ptr %t556
|
|
%t558 = load %S.ast.Type, ptr %a23
|
|
%t559 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4137, i64 3, i64 0 })
|
|
%t560 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t555, { ptr, i64, i64 } %t557, %S.ast.Type %t558, %S.ast.Type %t559)
|
|
store { ptr, i64, i64 } { ptr @.str.4136, i64 13, i64 0 }, ptr %a562
|
|
store { ptr, i64, i64 } %t560, ptr %a563
|
|
call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563)
|
|
%t564 = load { ptr, i64, i64 }, ptr %a561
|
|
store { ptr, i64, i64 } %t564, ptr %a566
|
|
store { ptr, i64, i64 } { ptr @.str.4138, i64 7, i64 0 }, ptr %a567
|
|
call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567)
|
|
%t568 = load { ptr, i64, i64 }, ptr %a565
|
|
%t569 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t568)
|
|
%t570 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t569, 0
|
|
%t571 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t571, ptr %a572
|
|
call void @finch.copy.S_ast_Type(ptr %a573, ptr %a572)
|
|
%t574 = load %S.ast.Type, ptr %a573
|
|
%t575 = insertvalue %S.gen.Val %t570, %S.ast.Type %t574, 1
|
|
ret %S.gen.Val %t575
|
|
endif6323:
|
|
%t576 = load %S.ast.Type, ptr %a3
|
|
%t577 = call i1 @finch.gen.isInt(%S.ast.Type %t576)
|
|
br label %logic.from6324
|
|
logic.from6324:
|
|
br i1 %t577, label %logic.rhs6325, label %logic.end6326
|
|
logic.rhs6325:
|
|
%t578 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t579 = load { ptr, i64, i64 }, ptr %t578
|
|
store { ptr, i64, i64 } %t579, ptr %a580
|
|
store { ptr, i64, i64 } { ptr @.str.4139, i64 3, i64 0 }, ptr %a581
|
|
%t582 = call i32 @finch_str_eq(ptr %a580, ptr %a581)
|
|
%t583 = icmp ne i32 %t582, 0
|
|
br label %logic.rend6327
|
|
logic.rend6327:
|
|
br label %logic.end6326
|
|
logic.end6326:
|
|
%t584 = phi i1 [ false, %logic.from6324 ], [ %t583, %logic.rend6327 ]
|
|
br i1 %t584, label %then6328, label %endif6330
|
|
then6328:
|
|
%t585 = load ptr, ptr %a1
|
|
%t586 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0
|
|
%t587 = load { ptr, i64, i64 }, ptr %t586
|
|
store { ptr, i64, i64 } { ptr @.str.4140, i64 13, i64 0 }, ptr %a589
|
|
store { ptr, i64, i64 } %t587, ptr %a590
|
|
call void @finch_str_concat(ptr %a588, ptr %a589, ptr %a590)
|
|
%t591 = load { ptr, i64, i64 }, ptr %a588
|
|
store { ptr, i64, i64 } %t591, ptr %a593
|
|
store { ptr, i64, i64 } { ptr @.str.4141, i64 4, i64 0 }, ptr %a594
|
|
call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594)
|
|
%t595 = load { ptr, i64, i64 }, ptr %a592
|
|
%t596 = load ptr, ptr %a1
|
|
%t597 = load %S.ast.Type, ptr %a3
|
|
%t598 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t596, %S.ast.Type %t597)
|
|
store { ptr, i64, i64 } %t595, ptr %a600
|
|
store { ptr, i64, i64 } %t598, ptr %a601
|
|
call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601)
|
|
%t602 = load { ptr, i64, i64 }, ptr %a599
|
|
%t603 = call { ptr, i64, i64 } @finch.gen.op(ptr %t585, { ptr, i64, i64 } %t602)
|
|
%t604 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t603, 0
|
|
%t605 = load %S.ast.Type, ptr %a3
|
|
store %S.ast.Type %t605, ptr %a606
|
|
call void @finch.copy.S_ast_Type(ptr %a607, ptr %a606)
|
|
%t608 = load %S.ast.Type, ptr %a607
|
|
%t609 = insertvalue %S.gen.Val %t604, %S.ast.Type %t608, 1
|
|
ret %S.gen.Val %t609
|
|
endif6330:
|
|
%t610 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0
|
|
%t611 = load { ptr, i64, i64 }, ptr %t610
|
|
store { ptr, i64, i64 } %t611, ptr %a612
|
|
store { ptr, i64, i64 } { ptr @.str.4142, i64 3, i64 0 }, ptr %a613
|
|
%t614 = call i32 @finch_str_eq(ptr %a612, ptr %a613)
|
|
%t615 = icmp ne i32 %t614, 0
|
|
br label %logic.from6331
|
|
logic.from6331:
|
|
br i1 %t615, label %logic.rhs6332, label %logic.end6333
|
|
logic.rhs6332:
|
|
%t616 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0
|
|
%t617 = load { ptr, i64, i64 }, ptr %t616
|
|
store { ptr, i64, i64 } %t617, ptr %a618
|
|
store { ptr, i64, i64 } { ptr @.str.4143, i64 3, i64 0 }, ptr %a619
|
|
%t620 = call i32 @finch_str_eq(ptr %a618, ptr %a619)
|
|
%t621 = icmp ne i32 %t620, 0
|
|
br label %logic.rend6334
|
|
logic.rend6334:
|
|
br label %logic.end6333
|
|
logic.end6333:
|
|
%t622 = phi i1 [ false, %logic.from6331 ], [ %t621, %logic.rend6334 ]
|
|
br i1 %t622, label %then6335, label %endif6337
|
|
then6335:
|
|
%t623 = load ptr, ptr %a1
|
|
%t624 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t625 = load { ptr, i64, i64 }, ptr %t624
|
|
%t626 = extractvalue { ptr, i64, i64 } %t625, 1
|
|
%t627 = icmp uge i64 0, %t626
|
|
br i1 %t627, label %range6338, label %inrange6339
|
|
range6338:
|
|
call void @finch_panic_index(ptr @.str.4144, i64 3550, i64 0, i64 %t626)
|
|
unreachable
|
|
inrange6339:
|
|
%t628 = extractvalue { ptr, i64, i64 } %t625, 0
|
|
%t629 = getelementptr inbounds %S.ast.Node, ptr %t628, i64 0
|
|
%t630 = load %S.ast.Node, ptr %t629
|
|
call void @finch.gen.fail(ptr %t623, %S.ast.Node %t630, { ptr, i64, i64 } { ptr @.str.4145, i64 70, i64 0 })
|
|
br label %endif6337
|
|
endif6337:
|
|
%t631 = load ptr, ptr %a1
|
|
%t632 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t633 = load { ptr, i64, i64 }, ptr %t632
|
|
%t634 = extractvalue { ptr, i64, i64 } %t633, 1
|
|
%t635 = icmp uge i64 0, %t634
|
|
br i1 %t635, label %range6340, label %inrange6341
|
|
range6340:
|
|
call void @finch_panic_index(ptr @.str.4146, i64 3552, i64 0, i64 %t634)
|
|
unreachable
|
|
inrange6341:
|
|
%t636 = extractvalue { ptr, i64, i64 } %t633, 0
|
|
%t637 = getelementptr inbounds %S.ast.Node, ptr %t636, i64 0
|
|
%t638 = load %S.ast.Node, ptr %t637
|
|
%t639 = load %S.ast.Type, ptr %a23
|
|
%t640 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t639)
|
|
store { ptr, i64, i64 } { ptr @.str.4147, i64 11, i64 0 }, ptr %a642
|
|
store { ptr, i64, i64 } %t640, ptr %a643
|
|
call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643)
|
|
%t644 = load { ptr, i64, i64 }, ptr %a641
|
|
store { ptr, i64, i64 } %t644, ptr %a646
|
|
store { ptr, i64, i64 } { ptr @.str.4148, i64 6, i64 0 }, ptr %a647
|
|
call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647)
|
|
%t648 = load { ptr, i64, i64 }, ptr %a645
|
|
%t649 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t650 = load { ptr, i64, i64 }, ptr %t649
|
|
store { ptr, i64, i64 } %t648, ptr %a652
|
|
store { ptr, i64, i64 } %t650, ptr %a653
|
|
call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653)
|
|
%t654 = load { ptr, i64, i64 }, ptr %a651
|
|
call void @finch.gen.fail(ptr %t631, %S.ast.Node %t638, { ptr, i64, i64 } %t654)
|
|
%t655 = load %S.gen.Val, ptr %a17
|
|
store %S.gen.Val %t655, ptr %a656
|
|
call void @finch.copy.S_gen_Val(ptr %a657, ptr %a656)
|
|
%t658 = load %S.gen.Val, ptr %a657
|
|
ret %S.gen.Val %t658
|
|
}
|
|
|
|
define internal i64 @finch.gen.sizeBytes(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.4149, i64 6, i64 0 }, ptr %a6
|
|
%t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6)
|
|
%t8 = icmp ne i32 %t7, 0
|
|
br i1 %t8, label %then6342, label %endif6344
|
|
then6342:
|
|
%t9 = load ptr, ptr %a1
|
|
%t10 = icmp eq ptr %t9, null
|
|
br i1 %t10, label %panic6345, label %ok6346
|
|
panic6345:
|
|
call void @finch_panic(ptr @.str.4150, i64 3585, ptr @.str.4151)
|
|
unreachable
|
|
ok6346:
|
|
%t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 15
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t14 = load { ptr, i64, i64 }, ptr %t13
|
|
%t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t16 = load { ptr, i64, i64 }, ptr %t15
|
|
%t17 = call i64 @finch.gen.findStruct(ptr %t12, { ptr, i64, i64 } %t14, { ptr, i64, i64 } %t16)
|
|
%t18 = load { ptr, i64, i64 }, ptr %t11
|
|
%t19 = extractvalue { ptr, i64, i64 } %t18, 1
|
|
%t20 = icmp uge i64 %t17, %t19
|
|
br i1 %t20, label %range6347, label %inrange6348
|
|
range6347:
|
|
call void @finch_panic_index(ptr @.str.4152, i64 3585, i64 %t17, i64 %t19)
|
|
unreachable
|
|
inrange6348:
|
|
%t21 = extractvalue { ptr, i64, i64 } %t18, 0
|
|
%t22 = getelementptr inbounds %S.gen.StructDef, ptr %t21, i64 %t17
|
|
%t23 = getelementptr inbounds %S.gen.StructDef, ptr %t22, i32 0, i32 9
|
|
%t24 = load i64, ptr %t23
|
|
ret i64 %t24
|
|
endif6344:
|
|
%t25 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t26 = load { ptr, i64, i64 }, ptr %t25
|
|
store { ptr, i64, i64 } %t26, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.4153, i64 5, i64 0 }, ptr %a28
|
|
%t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28)
|
|
%t30 = icmp ne i32 %t29, 0
|
|
br i1 %t30, label %then6349, label %endif6351
|
|
then6349:
|
|
%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 %range6352, label %inrange6353
|
|
range6352:
|
|
call void @finch_panic_index(ptr @.str.4154, i64 3588, i64 0, i64 %t36)
|
|
unreachable
|
|
inrange6353:
|
|
%t38 = extractvalue { ptr, i64, i64 } %t35, 0
|
|
%t39 = getelementptr inbounds %S.ast.Type, ptr %t38, i64 0
|
|
%t40 = load %S.ast.Type, ptr %t39
|
|
%t41 = call i64 @finch.gen.sizeBytes(ptr %t33, %S.ast.Type %t40)
|
|
%t42 = mul i64 %t32, %t41
|
|
ret i64 %t42
|
|
endif6351:
|
|
%t43 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t44 = load { ptr, i64, i64 }, ptr %t43
|
|
store { ptr, i64, i64 } %t44, ptr %a45
|
|
store { ptr, i64, i64 } { ptr @.str.4155, i64 3, i64 0 }, ptr %a46
|
|
%t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46)
|
|
%t48 = icmp ne i32 %t47, 0
|
|
br label %logic.from6354
|
|
logic.from6354:
|
|
br i1 %t48, label %logic.end6356, label %logic.rhs6355
|
|
logic.rhs6355:
|
|
%t49 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t50 = load { ptr, i64, i64 }, ptr %t49
|
|
store { ptr, i64, i64 } %t50, ptr %a51
|
|
store { ptr, i64, i64 } { ptr @.str.4156, i64 3, i64 0 }, ptr %a52
|
|
%t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52)
|
|
%t54 = icmp ne i32 %t53, 0
|
|
br label %logic.rend6357
|
|
logic.rend6357:
|
|
br label %logic.end6356
|
|
logic.end6356:
|
|
%t55 = phi i1 [ true, %logic.from6354 ], [ %t54, %logic.rend6357 ]
|
|
br i1 %t55, label %then6358, label %endif6360
|
|
then6358:
|
|
ret i64 8
|
|
endif6360:
|
|
%t56 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t57 = load { ptr, i64, i64 }, ptr %t56
|
|
store { ptr, i64, i64 } %t57, ptr %a58
|
|
store { ptr, i64, i64 } { ptr @.str.4157, i64 5, i64 0 }, ptr %a59
|
|
%t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59)
|
|
%t61 = icmp ne i32 %t60, 0
|
|
br i1 %t61, label %then6361, label %endif6363
|
|
then6361:
|
|
ret i64 8
|
|
endif6363:
|
|
%t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t63 = load { ptr, i64, i64 }, ptr %t62
|
|
store { ptr, i64, i64 } %t63, ptr %a64
|
|
store { ptr, i64, i64 } { ptr @.str.4158, i64 3, i64 0 }, ptr %a65
|
|
%t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65)
|
|
%t67 = icmp ne i32 %t66, 0
|
|
br i1 %t67, label %then6364, label %endif6366
|
|
then6364:
|
|
ret i64 4
|
|
endif6366:
|
|
%t68 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t69 = load { ptr, i64, i64 }, ptr %t68
|
|
store { ptr, i64, i64 } %t69, ptr %a70
|
|
store { ptr, i64, i64 } { ptr @.str.4159, i64 4, i64 0 }, ptr %a71
|
|
%t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71)
|
|
%t73 = icmp ne i32 %t72, 0
|
|
br i1 %t73, label %then6367, label %endif6369
|
|
then6367:
|
|
ret i64 1
|
|
endif6369:
|
|
%t74 = load %S.ast.Type, ptr %a2
|
|
%t75 = call i64 @finch.gen.bitsOf(%S.ast.Type %t74)
|
|
%t76 = sdiv i64 %t75, 8
|
|
ret i64 %t76
|
|
}
|
|
|
|
define internal void @finch.copy.arr_S_gen_Leaf(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Leaf, ptr null, i32 1) to i64))
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.leavesOf(ptr %p0, %S.ast.Type %p1, i64 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca i64, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca %S.gen.StructDef, align 16
|
|
%a27 = alloca %S.gen.StructDef, align 16
|
|
%a29 = alloca %S.gen.StructDef, align 16
|
|
%a33 = alloca i64, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca i64, align 16
|
|
%a65 = alloca %S.gen.Leaf, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca i64, align 16
|
|
%a94 = alloca i64, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca i64, align 16
|
|
%a120 = alloca %S.gen.Leaf, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
store i64 %p2, ptr %a3
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a4
|
|
%t5 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
store { ptr, i64, i64 } { ptr @.str.4160, i64 6, i64 0 }, ptr %a8
|
|
%t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8)
|
|
%t10 = icmp ne i32 %t9, 0
|
|
br i1 %t10, label %then6370, label %else6371
|
|
then6370:
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = icmp eq ptr %t11, null
|
|
br i1 %t12, label %panic6373, label %ok6374
|
|
panic6373:
|
|
call void @finch_panic(ptr @.str.4161, i64 3609, ptr @.str.4162)
|
|
unreachable
|
|
ok6374:
|
|
%t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 15
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t16 = load { ptr, i64, i64 }, ptr %t15
|
|
%t17 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t18 = load { ptr, i64, i64 }, ptr %t17
|
|
%t19 = call i64 @finch.gen.findStruct(ptr %t14, { ptr, i64, i64 } %t16, { ptr, i64, i64 } %t18)
|
|
%t20 = load { ptr, i64, i64 }, ptr %t13
|
|
%t21 = extractvalue { ptr, i64, i64 } %t20, 1
|
|
%t22 = icmp uge i64 %t19, %t21
|
|
br i1 %t22, label %range6375, label %inrange6376
|
|
range6375:
|
|
call void @finch_panic_index(ptr @.str.4163, i64 3609, i64 %t19, i64 %t21)
|
|
unreachable
|
|
inrange6376:
|
|
%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.cond6377
|
|
for.cond6377:
|
|
%t34 = load i64, ptr %a33
|
|
%t35 = icmp slt i64 %t34, %t32
|
|
br i1 %t35, label %for.body6378, label %for.end6380
|
|
for.body6378:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = getelementptr inbounds %S.gen.StructDef, ptr %a29, i32 0, i32 12
|
|
%t38 = load i64, ptr %a33
|
|
%t39 = load { ptr, i64, i64 }, ptr %t37
|
|
%t40 = extractvalue { ptr, i64, i64 } %t39, 1
|
|
%t41 = icmp uge i64 %t38, %t40
|
|
br i1 %t41, label %range6381, label %inrange6382
|
|
range6381:
|
|
call void @finch_panic_index(ptr @.str.4164, i64 3611, i64 %t38, i64 %t40)
|
|
unreachable
|
|
inrange6382:
|
|
%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 %range6383, label %inrange6384
|
|
range6383:
|
|
call void @finch_panic_index(ptr @.str.4165, i64 3611, i64 %t47, i64 %t49)
|
|
unreachable
|
|
inrange6384:
|
|
%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.cond6385
|
|
each.cond6385:
|
|
%t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %a56, i32 0, i32 1
|
|
%t59 = load i64, ptr %t58
|
|
%t60 = load i64, ptr %a57
|
|
%t61 = icmp slt i64 %t60, %t59
|
|
br i1 %t61, label %each.body6386, label %each.end6388
|
|
each.body6386:
|
|
%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.step6387
|
|
each.step6387:
|
|
%t72 = load i64, ptr %a57
|
|
%t73 = add i64 %t72, 1
|
|
store i64 %t73, ptr %a57
|
|
br label %each.cond6385
|
|
each.end6388:
|
|
br label %for.step6379
|
|
for.step6379:
|
|
%t74 = load i64, ptr %a33
|
|
%t75 = add i64 %t74, 1
|
|
store i64 %t75, ptr %a33
|
|
br label %for.cond6377
|
|
for.end6380:
|
|
br label %endif6372
|
|
else6371:
|
|
%t76 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t77 = load { ptr, i64, i64 }, ptr %t76
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
store { ptr, i64, i64 } { ptr @.str.4166, i64 5, i64 0 }, ptr %a79
|
|
%t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79)
|
|
%t81 = icmp ne i32 %t80, 0
|
|
br i1 %t81, label %then6389, label %else6390
|
|
then6389:
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t84 = load { ptr, i64, i64 }, ptr %t83
|
|
%t85 = extractvalue { ptr, i64, i64 } %t84, 1
|
|
%t86 = icmp uge i64 0, %t85
|
|
br i1 %t86, label %range6392, label %inrange6393
|
|
range6392:
|
|
call void @finch_panic_index(ptr @.str.4167, i64 3616, i64 0, i64 %t85)
|
|
unreachable
|
|
inrange6393:
|
|
%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.cond6394
|
|
for.cond6394:
|
|
%t95 = load i64, ptr %a94
|
|
%t96 = icmp slt i64 %t95, %t93
|
|
br i1 %t96, label %for.body6395, label %for.end6397
|
|
for.body6395:
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1
|
|
%t99 = load { ptr, i64, i64 }, ptr %t98
|
|
%t100 = extractvalue { ptr, i64, i64 } %t99, 1
|
|
%t101 = icmp uge i64 0, %t100
|
|
br i1 %t101, label %range6398, label %inrange6399
|
|
range6398:
|
|
call void @finch_panic_index(ptr @.str.4168, i64 3618, i64 0, i64 %t100)
|
|
unreachable
|
|
inrange6399:
|
|
%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.cond6400
|
|
each.cond6400:
|
|
%t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1
|
|
%t114 = load i64, ptr %t113
|
|
%t115 = load i64, ptr %a112
|
|
%t116 = icmp slt i64 %t115, %t114
|
|
br i1 %t116, label %each.body6401, label %each.end6403
|
|
each.body6401:
|
|
%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.step6402
|
|
each.step6402:
|
|
%t127 = load i64, ptr %a112
|
|
%t128 = add i64 %t127, 1
|
|
store i64 %t128, ptr %a112
|
|
br label %each.cond6400
|
|
each.end6403:
|
|
br label %for.step6396
|
|
for.step6396:
|
|
%t129 = load i64, ptr %a94
|
|
%t130 = add i64 %t129, 1
|
|
store i64 %t130, ptr %a94
|
|
br label %for.cond6394
|
|
for.end6397:
|
|
br label %endif6391
|
|
else6390:
|
|
%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.4169, 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 %endif6391
|
|
endif6391:
|
|
br label %endif6372
|
|
endif6372:
|
|
%t152 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t152, ptr %a153
|
|
call void @finch.copy.arr_S_gen_Leaf(ptr %a154, ptr %a153)
|
|
%t155 = load { ptr, i64, i64 }, ptr %a154
|
|
ret { ptr, i64, i64 } %t155
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Abi(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Abi, ptr %src
|
|
store %S.gen.Abi %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Abi, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Abi, ptr %src, i32 0, i32 0
|
|
call void @finch_str_copy(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Abi, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Abi, ptr %src, i32 0, i32 1
|
|
call void @finch.copy.arr_str(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.gen.Abi, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.gen.Abi, ptr %src, i32 0, i32 2
|
|
call void @finch_str_copy(ptr %t6, ptr %t7)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Abi @finch.gen.classifyArm64(ptr %p0, %S.ast.Type %p1, %S.gen.Abi %p2, i64 %p3, i64 %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca %S.gen.Abi, align 16
|
|
%a4 = alloca i64, align 16
|
|
%a5 = alloca i64, align 16
|
|
%a7 = alloca %S.gen.Abi, align 16
|
|
%a8 = alloca %S.gen.Abi, align 16
|
|
%a10 = alloca %S.gen.Abi, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca i1, align 16
|
|
%a23 = alloca i64, align 16
|
|
%a31 = alloca %S.gen.Leaf, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca i64, align 16
|
|
%a94 = alloca %S.gen.Leaf, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca %S.gen.Abi, align 16
|
|
%a121 = alloca %S.gen.Abi, align 16
|
|
%a127 = alloca %S.gen.Abi, align 16
|
|
%a128 = alloca %S.gen.Abi, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca %S.gen.Abi, align 16
|
|
%a166 = alloca %S.gen.Abi, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
store %S.gen.Abi %p2, ptr %a3
|
|
store i64 %p3, ptr %a4
|
|
store i64 %p4, ptr %a5
|
|
%t6 = load %S.gen.Abi, ptr %a3
|
|
store %S.gen.Abi %t6, ptr %a7
|
|
call void @finch.copy.S_gen_Abi(ptr %a8, ptr %a7)
|
|
%t9 = load %S.gen.Abi, ptr %a8
|
|
store %S.gen.Abi %t9, ptr %a10
|
|
%t11 = load ptr, ptr %a1
|
|
%t12 = load %S.ast.Type, ptr %a2
|
|
%t13 = call { ptr, i64, i64 } @finch.gen.leavesOf(ptr %t11, %S.ast.Type %t12, i64 0)
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t16 = load i64, ptr %t15
|
|
%t17 = icmp sgt i64 %t16, 0
|
|
br label %logic.from6404
|
|
logic.from6404:
|
|
br i1 %t17, label %logic.rhs6405, label %logic.end6406
|
|
logic.rhs6405:
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t19 = load i64, ptr %t18
|
|
%t20 = icmp sle i64 %t19, 4
|
|
br label %logic.rend6407
|
|
logic.rend6407:
|
|
br label %logic.end6406
|
|
logic.end6406:
|
|
%t21 = phi i1 [ false, %logic.from6404 ], [ %t20, %logic.rend6407 ]
|
|
store i1 %t21, ptr %a22
|
|
store i64 0, ptr %a23
|
|
br label %each.cond6408
|
|
each.cond6408:
|
|
%t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t25 = load i64, ptr %t24
|
|
%t26 = load i64, ptr %a23
|
|
%t27 = icmp slt i64 %t26, %t25
|
|
br i1 %t27, label %each.body6409, label %each.end6411
|
|
each.body6409:
|
|
%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.from6412
|
|
logic.from6412:
|
|
br i1 %t34, label %logic.end6414, label %logic.rhs6413
|
|
logic.rhs6413:
|
|
%t35 = getelementptr inbounds %S.gen.Leaf, ptr %a31, i32 0, i32 3
|
|
%t36 = load i1, ptr %t35
|
|
%t37 = load { ptr, i64, i64 }, ptr %a14
|
|
%t38 = extractvalue { ptr, i64, i64 } %t37, 1
|
|
%t39 = icmp uge i64 0, %t38
|
|
br i1 %t39, label %range6415, label %inrange6416
|
|
range6415:
|
|
call void @finch_panic_index(ptr @.str.4170, i64 3635, i64 0, i64 %t38)
|
|
unreachable
|
|
inrange6416:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds %S.gen.Leaf, ptr %t40, i64 0
|
|
%t42 = getelementptr inbounds %S.gen.Leaf, ptr %t41, i32 0, i32 3
|
|
%t43 = load i1, ptr %t42
|
|
%t44 = icmp ne i1 %t36, %t43
|
|
br label %logic.rend6417
|
|
logic.rend6417:
|
|
br label %logic.end6414
|
|
logic.end6414:
|
|
%t45 = phi i1 [ true, %logic.from6412 ], [ %t44, %logic.rend6417 ]
|
|
br i1 %t45, label %then6418, label %endif6420
|
|
then6418:
|
|
store i1 false, ptr %a22
|
|
br label %endif6420
|
|
endif6420:
|
|
br label %each.step6410
|
|
each.step6410:
|
|
%t46 = load i64, ptr %a23
|
|
%t47 = add i64 %t46, 1
|
|
store i64 %t47, ptr %a23
|
|
br label %each.cond6408
|
|
each.end6411:
|
|
%t48 = load i1, ptr %a22
|
|
br i1 %t48, label %then6421, label %endif6423
|
|
then6421:
|
|
store { ptr, i64, i64 } { ptr @.str.4171, i64 5, i64 0 }, ptr %a49
|
|
%t50 = load { ptr, i64, i64 }, ptr %a14
|
|
%t51 = extractvalue { ptr, i64, i64 } %t50, 1
|
|
%t52 = icmp uge i64 0, %t51
|
|
br i1 %t52, label %range6424, label %inrange6425
|
|
range6424:
|
|
call void @finch_panic_index(ptr @.str.4172, i64 3641, i64 0, i64 %t51)
|
|
unreachable
|
|
inrange6425:
|
|
%t53 = extractvalue { ptr, i64, i64 } %t50, 0
|
|
%t54 = getelementptr inbounds %S.gen.Leaf, ptr %t53, i64 0
|
|
%t55 = getelementptr inbounds %S.gen.Leaf, ptr %t54, i32 0, i32 3
|
|
%t56 = load i1, ptr %t55
|
|
br i1 %t56, label %then6426, label %endif6428
|
|
then6426:
|
|
store { ptr, i64, i64 } { ptr @.str.4173, i64 6, i64 0 }, ptr %a49
|
|
br label %endif6428
|
|
endif6428:
|
|
%t57 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4174, i64 6, i64 0 }, ptr %t57
|
|
%t58 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1
|
|
%t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i32 0, i32 1
|
|
%t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t61 = load i64, ptr %t60
|
|
call void @finch_str_from_int(ptr %a62, i64 %t61)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a62
|
|
store { ptr, i64, i64 } { ptr @.str.4175, i64 1, i64 0 }, ptr %a65
|
|
store { ptr, i64, i64 } %t63, ptr %a66
|
|
call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a64
|
|
store { ptr, i64, i64 } %t67, ptr %a69
|
|
store { ptr, i64, i64 } { ptr @.str.4176, i64 3, i64 0 }, ptr %a70
|
|
call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70)
|
|
%t71 = load { ptr, i64, i64 }, ptr %a68
|
|
%t72 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t71, ptr %a74
|
|
store { ptr, i64, i64 } %t72, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
store { ptr, i64, i64 } %t76, ptr %a78
|
|
store { ptr, i64, i64 } { ptr @.str.4177, i64 1, i64 0 }, ptr %a79
|
|
call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79)
|
|
%t80 = load { ptr, i64, i64 }, ptr %a77
|
|
%t81 = load i64, ptr %t59
|
|
%t82 = add i64 %t81, 1
|
|
call void @finch_arr_reserve(ptr %t58, i64 %t82, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t83 = load ptr, ptr %t58
|
|
%t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81
|
|
store { ptr, i64, i64 } %t80, ptr %t84
|
|
store i64 %t82, ptr %t59
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a85
|
|
store i64 0, ptr %a86
|
|
br label %each.cond6429
|
|
each.cond6429:
|
|
%t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t88 = load i64, ptr %t87
|
|
%t89 = load i64, ptr %a86
|
|
%t90 = icmp slt i64 %t89, %t88
|
|
br i1 %t90, label %each.body6430, label %each.end6432
|
|
each.body6430:
|
|
%t91 = load ptr, ptr %a14
|
|
%t92 = getelementptr inbounds %S.gen.Leaf, ptr %t91, i64 %t89
|
|
%t93 = load %S.gen.Leaf, ptr %t92
|
|
store %S.gen.Leaf %t93, ptr %a94
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a85, i32 0, i32 1
|
|
%t96 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t96, ptr %a97
|
|
call void @finch_str_copy(ptr %a98, ptr %a97)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a98
|
|
%t100 = load i64, ptr %t95
|
|
%t101 = add i64 %t100, 1
|
|
call void @finch_arr_reserve(ptr %a85, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t102 = load ptr, ptr %a85
|
|
%t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100
|
|
store { ptr, i64, i64 } %t99, ptr %t103
|
|
store i64 %t101, ptr %t95
|
|
br label %each.step6431
|
|
each.step6431:
|
|
%t104 = load i64, ptr %a86
|
|
%t105 = add i64 %t104, 1
|
|
store i64 %t105, ptr %a86
|
|
br label %each.cond6429
|
|
each.end6432:
|
|
%t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %a85, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4179, i64 2, i64 0 }, ptr %a107
|
|
call void @finch_str_join(ptr %a108, ptr %a85, ptr %a107)
|
|
%t109 = load { ptr, i64, i64 }, ptr %a108
|
|
store { ptr, i64, i64 } { ptr @.str.4178, i64 2, i64 0 }, ptr %a111
|
|
store { ptr, i64, i64 } %t109, ptr %a112
|
|
call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112)
|
|
%t113 = load { ptr, i64, i64 }, ptr %a110
|
|
store { ptr, i64, i64 } %t113, ptr %a115
|
|
store { ptr, i64, i64 } { ptr @.str.4180, i64 2, i64 0 }, ptr %a116
|
|
call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a114
|
|
%t118 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t117, ptr %t118
|
|
%t119 = load %S.gen.Abi, ptr %a10
|
|
store %S.gen.Abi %t119, ptr %a120
|
|
call void @finch.copy.S_gen_Abi(ptr %a121, ptr %a120)
|
|
%t122 = load %S.gen.Abi, ptr %a121
|
|
ret %S.gen.Abi %t122
|
|
endif6423:
|
|
%t123 = load i64, ptr %a4
|
|
%t124 = icmp sgt i64 %t123, 16
|
|
br i1 %t124, label %then6433, label %endif6435
|
|
then6433:
|
|
%t125 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4181, i64 8, i64 0 }, ptr %t125
|
|
%t126 = load %S.gen.Abi, ptr %a10
|
|
store %S.gen.Abi %t126, ptr %a127
|
|
call void @finch.copy.S_gen_Abi(ptr %a128, ptr %a127)
|
|
%t129 = load %S.gen.Abi, ptr %a128
|
|
ret %S.gen.Abi %t129
|
|
endif6435:
|
|
%t130 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4182, i64 6, i64 0 }, ptr %t130
|
|
%t131 = load i64, ptr %a5
|
|
%t132 = icmp sge i64 %t131, 16
|
|
br i1 %t132, label %then6436, label %else6437
|
|
then6436:
|
|
%t133 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1
|
|
%t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1
|
|
%t135 = load i64, ptr %t134
|
|
%t136 = add i64 %t135, 1
|
|
call void @finch_arr_reserve(ptr %t133, i64 %t136, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t137 = load ptr, ptr %t133
|
|
%t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i64 %t135
|
|
store { ptr, i64, i64 } { ptr @.str.4183, i64 4, i64 0 }, ptr %t138
|
|
store i64 %t136, ptr %t134
|
|
%t139 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2
|
|
store { ptr, i64, i64 } { ptr @.str.4184, i64 4, i64 0 }, ptr %t139
|
|
br label %endif6438
|
|
else6437:
|
|
%t140 = load i64, ptr %a4
|
|
%t141 = icmp sle i64 %t140, 8
|
|
br i1 %t141, label %then6439, label %else6440
|
|
then6439:
|
|
%t142 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1
|
|
%t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1
|
|
%t144 = load i64, ptr %t143
|
|
%t145 = add i64 %t144, 1
|
|
call void @finch_arr_reserve(ptr %t142, i64 %t145, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t146 = load ptr, ptr %t142
|
|
%t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t144
|
|
store { ptr, i64, i64 } { ptr @.str.4185, i64 3, i64 0 }, ptr %t147
|
|
store i64 %t145, ptr %t143
|
|
%t148 = load i64, ptr %a4
|
|
%t149 = mul i64 %t148, 8
|
|
call void @finch_str_from_int(ptr %a150, i64 %t149)
|
|
%t151 = load { ptr, i64, i64 }, ptr %a150
|
|
store { ptr, i64, i64 } { ptr @.str.4186, i64 1, i64 0 }, ptr %a153
|
|
store { ptr, i64, i64 } %t151, ptr %a154
|
|
call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154)
|
|
%t155 = load { ptr, i64, i64 }, ptr %a152
|
|
%t156 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t155, ptr %t156
|
|
br label %endif6441
|
|
else6440:
|
|
%t157 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1
|
|
%t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i32 0, i32 1
|
|
%t159 = load i64, ptr %t158
|
|
%t160 = add i64 %t159, 1
|
|
call void @finch_arr_reserve(ptr %t157, i64 %t160, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t161 = load ptr, ptr %t157
|
|
%t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t159
|
|
store { ptr, i64, i64 } { ptr @.str.4187, i64 9, i64 0 }, ptr %t162
|
|
store i64 %t160, ptr %t158
|
|
%t163 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2
|
|
store { ptr, i64, i64 } { ptr @.str.4188, i64 9, i64 0 }, ptr %t163
|
|
br label %endif6441
|
|
endif6441:
|
|
br label %endif6438
|
|
endif6438:
|
|
%t164 = load %S.gen.Abi, ptr %a10
|
|
store %S.gen.Abi %t164, ptr %a165
|
|
call void @finch.copy.S_gen_Abi(ptr %a166, ptr %a165)
|
|
%t167 = load %S.gen.Abi, ptr %a166
|
|
ret %S.gen.Abi %t167
|
|
}
|
|
|
|
define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca %S.gen.Abi, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca %S.gen.Abi, align 16
|
|
%a13 = alloca %S.gen.Abi, align 16
|
|
%a30 = alloca %S.gen.StructDef, align 16
|
|
%a31 = alloca %S.gen.StructDef, align 16
|
|
%a33 = alloca %S.gen.StructDef, align 16
|
|
%a36 = alloca i64, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca %S.gen.Abi, align 16
|
|
%a101 = alloca %S.gen.Abi, align 16
|
|
%a110 = alloca %S.gen.Abi, align 16
|
|
%a111 = alloca %S.gen.Abi, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca i64, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca i64, align 16
|
|
%a145 = alloca %S.gen.Leaf, align 16
|
|
%a148 = alloca i64, align 16
|
|
%a159 = alloca %S.gen.Abi, align 16
|
|
%a160 = alloca %S.gen.Abi, align 16
|
|
%a165 = alloca i64, align 16
|
|
%a202 = alloca i64, align 16
|
|
%a209 = alloca i64, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca %S.gen.Abi, align 16
|
|
%a294 = alloca %S.gen.Abi, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4189, i64 6, i64 0 }, 0
|
|
store %S.gen.Abi %t3, ptr %a4
|
|
%t5 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
store { ptr, i64, i64 } { ptr @.str.4190, i64 6, i64 0 }, ptr %a8
|
|
%t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8)
|
|
%t10 = icmp eq i32 %t9, 0
|
|
br i1 %t10, label %then6442, label %endif6444
|
|
then6442:
|
|
%t11 = load %S.gen.Abi, ptr %a4
|
|
store %S.gen.Abi %t11, ptr %a12
|
|
call void @finch.copy.S_gen_Abi(ptr %a13, ptr %a12)
|
|
%t14 = load %S.gen.Abi, ptr %a13
|
|
ret %S.gen.Abi %t14
|
|
endif6444:
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = icmp eq ptr %t15, null
|
|
br i1 %t16, label %panic6445, label %ok6446
|
|
panic6445:
|
|
call void @finch_panic(ptr @.str.4191, i64 3676, ptr @.str.4192)
|
|
unreachable
|
|
ok6446:
|
|
%t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 15
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3
|
|
%t20 = load { ptr, i64, i64 }, ptr %t19
|
|
%t21 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
%t23 = call i64 @finch.gen.findStruct(ptr %t18, { ptr, i64, i64 } %t20, { ptr, i64, i64 } %t22)
|
|
%t24 = load { ptr, i64, i64 }, ptr %t17
|
|
%t25 = extractvalue { ptr, i64, i64 } %t24, 1
|
|
%t26 = icmp uge i64 %t23, %t25
|
|
br i1 %t26, label %range6447, label %inrange6448
|
|
range6447:
|
|
call void @finch_panic_index(ptr @.str.4193, i64 3676, i64 %t23, i64 %t25)
|
|
unreachable
|
|
inrange6448:
|
|
%t27 = extractvalue { ptr, i64, i64 } %t24, 0
|
|
%t28 = getelementptr inbounds %S.gen.StructDef, ptr %t27, i64 %t23
|
|
%t29 = load %S.gen.StructDef, ptr %t28
|
|
store %S.gen.StructDef %t29, ptr %a30
|
|
call void @finch.copy.S_gen_StructDef(ptr %a31, ptr %a30)
|
|
%t32 = load %S.gen.StructDef, ptr %a31
|
|
store %S.gen.StructDef %t32, ptr %a33
|
|
%t34 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 9
|
|
%t35 = load i64, ptr %t34
|
|
store i64 %t35, ptr %a36
|
|
%t37 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3
|
|
store i64 8, ptr %t37
|
|
%t38 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10
|
|
%t39 = load i64, ptr %t38
|
|
%t40 = icmp sgt i64 %t39, 8
|
|
br i1 %t40, label %then6449, label %endif6451
|
|
then6449:
|
|
%t41 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10
|
|
%t42 = load i64, ptr %t41
|
|
%t43 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3
|
|
store i64 %t42, ptr %t43
|
|
br label %endif6451
|
|
endif6451:
|
|
%t44 = load ptr, ptr %a1
|
|
%t45 = icmp eq ptr %t44, null
|
|
br i1 %t45, label %panic6452, label %ok6453
|
|
panic6452:
|
|
call void @finch_panic(ptr @.str.4194, i64 3682, ptr @.str.4195)
|
|
unreachable
|
|
ok6453:
|
|
%t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 27
|
|
%t47 = getelementptr inbounds %S.platform.Target, ptr %t46, i32 0, i32 4
|
|
%t48 = load i1, ptr %t47
|
|
br i1 %t48, label %then6454, label %endif6456
|
|
then6454:
|
|
%t49 = load ptr, ptr %a1
|
|
%t50 = load %S.ast.Type, ptr %a2
|
|
%t51 = load %S.gen.Abi, ptr %a4
|
|
%t52 = load i64, ptr %a36
|
|
%t53 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10
|
|
%t54 = load i64, ptr %t53
|
|
%t55 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t49, %S.ast.Type %t50, %S.gen.Abi %t51, i64 %t52, i64 %t54)
|
|
ret %S.gen.Abi %t55
|
|
endif6456:
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = icmp eq ptr %t56, null
|
|
br i1 %t57, label %panic6457, label %ok6458
|
|
panic6457:
|
|
call void @finch_panic(ptr @.str.4196, i64 3685, ptr @.str.4197)
|
|
unreachable
|
|
ok6458:
|
|
%t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 27
|
|
%t59 = getelementptr inbounds %S.platform.Target, ptr %t58, i32 0, i32 1
|
|
%t60 = load i1, ptr %t59
|
|
br i1 %t60, label %then6459, label %endif6461
|
|
then6459:
|
|
%t61 = load i64, ptr %a36
|
|
%t62 = icmp eq i64 %t61, 1
|
|
br label %logic.from6462
|
|
logic.from6462:
|
|
br i1 %t62, label %logic.end6464, label %logic.rhs6463
|
|
logic.rhs6463:
|
|
%t63 = load i64, ptr %a36
|
|
%t64 = icmp eq i64 %t63, 2
|
|
br label %logic.rend6465
|
|
logic.rend6465:
|
|
br label %logic.end6464
|
|
logic.end6464:
|
|
%t65 = phi i1 [ true, %logic.from6462 ], [ %t64, %logic.rend6465 ]
|
|
br label %logic.from6466
|
|
logic.from6466:
|
|
br i1 %t65, label %logic.end6468, label %logic.rhs6467
|
|
logic.rhs6467:
|
|
%t66 = load i64, ptr %a36
|
|
%t67 = icmp eq i64 %t66, 4
|
|
br label %logic.rend6469
|
|
logic.rend6469:
|
|
br label %logic.end6468
|
|
logic.end6468:
|
|
%t68 = phi i1 [ true, %logic.from6466 ], [ %t67, %logic.rend6469 ]
|
|
br label %logic.from6470
|
|
logic.from6470:
|
|
br i1 %t68, label %logic.end6472, label %logic.rhs6471
|
|
logic.rhs6471:
|
|
%t69 = load i64, ptr %a36
|
|
%t70 = icmp eq i64 %t69, 8
|
|
br label %logic.rend6473
|
|
logic.rend6473:
|
|
br label %logic.end6472
|
|
logic.end6472:
|
|
%t71 = phi i1 [ true, %logic.from6470 ], [ %t70, %logic.rend6473 ]
|
|
br i1 %t71, label %then6474, label %else6475
|
|
then6474:
|
|
%t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4198, i64 6, i64 0 }, ptr %t72
|
|
%t73 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1
|
|
%t75 = load i64, ptr %a36
|
|
%t76 = mul i64 %t75, 8
|
|
call void @finch_str_from_int(ptr %a77, i64 %t76)
|
|
%t78 = load { ptr, i64, i64 }, ptr %a77
|
|
store { ptr, i64, i64 } { ptr @.str.4199, i64 1, i64 0 }, ptr %a80
|
|
store { ptr, i64, i64 } %t78, ptr %a81
|
|
call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81)
|
|
%t82 = load { ptr, i64, i64 }, ptr %a79
|
|
%t83 = load i64, ptr %t74
|
|
%t84 = add i64 %t83, 1
|
|
call void @finch_arr_reserve(ptr %t73, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t85 = load ptr, ptr %t73
|
|
%t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83
|
|
store { ptr, i64, i64 } %t82, ptr %t86
|
|
store i64 %t84, ptr %t74
|
|
%t87 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t88 = load { ptr, i64, i64 }, ptr %t87
|
|
%t89 = extractvalue { ptr, i64, i64 } %t88, 1
|
|
%t90 = icmp uge i64 0, %t89
|
|
br i1 %t90, label %range6477, label %inrange6478
|
|
range6477:
|
|
call void @finch_panic_index(ptr @.str.4200, i64 3691, i64 0, i64 %t89)
|
|
unreachable
|
|
inrange6478:
|
|
%t91 = extractvalue { ptr, i64, i64 } %t88, 0
|
|
%t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 0
|
|
%t93 = load { ptr, i64, i64 }, ptr %t92
|
|
%t94 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t93, ptr %a95
|
|
call void @finch_str_copy(ptr %a96, ptr %a95)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t97, ptr %t94
|
|
br label %endif6476
|
|
else6475:
|
|
%t98 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4201, i64 8, i64 0 }, ptr %t98
|
|
br label %endif6476
|
|
endif6476:
|
|
%t99 = load %S.gen.Abi, ptr %a4
|
|
store %S.gen.Abi %t99, ptr %a100
|
|
call void @finch.copy.S_gen_Abi(ptr %a101, ptr %a100)
|
|
%t102 = load %S.gen.Abi, ptr %a101
|
|
ret %S.gen.Abi %t102
|
|
endif6461:
|
|
%t103 = load i64, ptr %a36
|
|
%t104 = icmp sgt i64 %t103, 16
|
|
br label %logic.from6479
|
|
logic.from6479:
|
|
br i1 %t104, label %logic.end6481, label %logic.rhs6480
|
|
logic.rhs6480:
|
|
%t105 = load i64, ptr %a36
|
|
%t106 = icmp eq i64 %t105, 0
|
|
br label %logic.rend6482
|
|
logic.rend6482:
|
|
br label %logic.end6481
|
|
logic.end6481:
|
|
%t107 = phi i1 [ true, %logic.from6479 ], [ %t106, %logic.rend6482 ]
|
|
br i1 %t107, label %then6483, label %endif6485
|
|
then6483:
|
|
%t108 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4202, i64 6, i64 0 }, ptr %t108
|
|
%t109 = load %S.gen.Abi, ptr %a4
|
|
store %S.gen.Abi %t109, ptr %a110
|
|
call void @finch.copy.S_gen_Abi(ptr %a111, ptr %a110)
|
|
%t112 = load %S.gen.Abi, ptr %a111
|
|
ret %S.gen.Abi %t112
|
|
endif6485:
|
|
%t113 = load ptr, ptr %a1
|
|
%t114 = load %S.ast.Type, ptr %a2
|
|
%t115 = call { ptr, i64, i64 } @finch.gen.leavesOf(ptr %t113, %S.ast.Type %t114, i64 0)
|
|
store { ptr, i64, i64 } %t115, ptr %a116
|
|
%t117 = load i64, ptr %a36
|
|
%t118 = add i64 %t117, 7
|
|
%t119 = sdiv i64 %t118, 8
|
|
store i64 %t119, ptr %a120
|
|
%t121 = mul i64 2, ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)
|
|
%t122 = call ptr @finch_alloc(i64 %t121)
|
|
%t123 = getelementptr inbounds i64, ptr %t122, i64 0
|
|
store i64 0, ptr %t123
|
|
%t124 = getelementptr inbounds i64, ptr %t122, i64 1
|
|
store i64 0, ptr %t124
|
|
%t125 = insertvalue { ptr, i64, i64 } undef, ptr %t122, 0
|
|
%t126 = insertvalue { ptr, i64, i64 } %t125, i64 2, 1
|
|
%t127 = insertvalue { ptr, i64, i64 } %t126, i64 2, 2
|
|
store { ptr, i64, i64 } %t127, ptr %a128
|
|
%t129 = mul i64 2, ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)
|
|
%t130 = call ptr @finch_alloc(i64 %t129)
|
|
%t131 = getelementptr inbounds i1, ptr %t130, i64 0
|
|
store i1 false, ptr %t131
|
|
%t132 = getelementptr inbounds i1, ptr %t130, i64 1
|
|
store i1 false, ptr %t132
|
|
%t133 = insertvalue { ptr, i64, i64 } undef, ptr %t130, 0
|
|
%t134 = insertvalue { ptr, i64, i64 } %t133, i64 2, 1
|
|
%t135 = insertvalue { ptr, i64, i64 } %t134, i64 2, 2
|
|
store { ptr, i64, i64 } %t135, ptr %a136
|
|
store i64 0, ptr %a137
|
|
br label %each.cond6486
|
|
each.cond6486:
|
|
%t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %a116, i32 0, i32 1
|
|
%t139 = load i64, ptr %t138
|
|
%t140 = load i64, ptr %a137
|
|
%t141 = icmp slt i64 %t140, %t139
|
|
br i1 %t141, label %each.body6487, label %each.end6489
|
|
each.body6487:
|
|
%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 %then6490, label %endif6492
|
|
then6490:
|
|
store i64 8, ptr %a148
|
|
br label %endif6492
|
|
endif6492:
|
|
%t151 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0
|
|
%t152 = load i64, ptr %t151
|
|
%t153 = load i64, ptr %a148
|
|
%t154 = icmp eq i64 %t153, 0
|
|
br i1 %t154, label %panic6493, label %ok6494
|
|
panic6493:
|
|
call void @finch_panic(ptr @.str.4203, i64 3710, ptr @.str.4204)
|
|
unreachable
|
|
ok6494:
|
|
%t155 = srem i64 %t152, %t153
|
|
%t156 = icmp ne i64 %t155, 0
|
|
br i1 %t156, label %then6495, label %endif6497
|
|
then6495:
|
|
%t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4205, i64 6, i64 0 }, ptr %t157
|
|
%t158 = load %S.gen.Abi, ptr %a4
|
|
store %S.gen.Abi %t158, ptr %a159
|
|
call void @finch.copy.S_gen_Abi(ptr %a160, ptr %a159)
|
|
%t161 = load %S.gen.Abi, ptr %a160
|
|
ret %S.gen.Abi %t161
|
|
endif6497:
|
|
%t162 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0
|
|
%t163 = load i64, ptr %t162
|
|
%t164 = sdiv i64 %t163, 8
|
|
store i64 %t164, ptr %a165
|
|
%t166 = load i64, ptr %a165
|
|
%t167 = load { ptr, i64, i64 }, ptr %a128
|
|
%t168 = extractvalue { ptr, i64, i64 } %t167, 1
|
|
%t169 = icmp uge i64 %t166, %t168
|
|
br i1 %t169, label %range6498, label %inrange6499
|
|
range6498:
|
|
call void @finch_panic_index(ptr @.str.4206, i64 3715, i64 %t166, i64 %t168)
|
|
unreachable
|
|
inrange6499:
|
|
%t170 = extractvalue { ptr, i64, i64 } %t167, 0
|
|
%t171 = getelementptr inbounds i64, ptr %t170, i64 %t166
|
|
%t172 = load i64, ptr %t171
|
|
%t173 = icmp eq i64 %t172, 1
|
|
br label %logic.from6500
|
|
logic.from6500:
|
|
br i1 %t173, label %logic.end6502, label %logic.rhs6501
|
|
logic.rhs6501:
|
|
%t174 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2
|
|
%t175 = load i1, ptr %t174
|
|
%t176 = xor i1 %t175, true
|
|
br label %logic.rend6503
|
|
logic.rend6503:
|
|
br label %logic.end6502
|
|
logic.end6502:
|
|
%t177 = phi i1 [ true, %logic.from6500 ], [ %t176, %logic.rend6503 ]
|
|
br i1 %t177, label %then6504, label %else6505
|
|
then6504:
|
|
%t178 = load i64, ptr %a165
|
|
%t179 = load { ptr, i64, i64 }, ptr %a128
|
|
%t180 = extractvalue { ptr, i64, i64 } %t179, 1
|
|
%t181 = icmp uge i64 %t178, %t180
|
|
br i1 %t181, label %range6507, label %inrange6508
|
|
range6507:
|
|
call void @finch_panic_index(ptr @.str.4207, i64 3716, i64 %t178, i64 %t180)
|
|
unreachable
|
|
inrange6508:
|
|
%t182 = extractvalue { ptr, i64, i64 } %t179, 0
|
|
%t183 = getelementptr inbounds i64, ptr %t182, i64 %t178
|
|
store i64 1, ptr %t183
|
|
br label %endif6506
|
|
else6505:
|
|
%t184 = load i64, ptr %a165
|
|
%t185 = load { ptr, i64, i64 }, ptr %a128
|
|
%t186 = extractvalue { ptr, i64, i64 } %t185, 1
|
|
%t187 = icmp uge i64 %t184, %t186
|
|
br i1 %t187, label %range6509, label %inrange6510
|
|
range6509:
|
|
call void @finch_panic_index(ptr @.str.4208, i64 3718, i64 %t184, i64 %t186)
|
|
unreachable
|
|
inrange6510:
|
|
%t188 = extractvalue { ptr, i64, i64 } %t185, 0
|
|
%t189 = getelementptr inbounds i64, ptr %t188, i64 %t184
|
|
store i64 2, ptr %t189
|
|
br label %endif6506
|
|
endif6506:
|
|
%t190 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3
|
|
%t191 = load i1, ptr %t190
|
|
br i1 %t191, label %then6511, label %endif6513
|
|
then6511:
|
|
%t192 = load i64, ptr %a165
|
|
%t193 = load { ptr, i64, i64 }, ptr %a136
|
|
%t194 = extractvalue { ptr, i64, i64 } %t193, 1
|
|
%t195 = icmp uge i64 %t192, %t194
|
|
br i1 %t195, label %range6514, label %inrange6515
|
|
range6514:
|
|
call void @finch_panic_index(ptr @.str.4209, i64 3721, i64 %t192, i64 %t194)
|
|
unreachable
|
|
inrange6515:
|
|
%t196 = extractvalue { ptr, i64, i64 } %t193, 0
|
|
%t197 = getelementptr inbounds i1, ptr %t196, i64 %t192
|
|
store i1 true, ptr %t197
|
|
br label %endif6513
|
|
endif6513:
|
|
br label %each.step6488
|
|
each.step6488:
|
|
%t198 = load i64, ptr %a137
|
|
%t199 = add i64 %t198, 1
|
|
store i64 %t199, ptr %a137
|
|
br label %each.cond6486
|
|
each.end6489:
|
|
%t200 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4210, i64 6, i64 0 }, ptr %t200
|
|
%t201 = load i64, ptr %a120
|
|
store i64 0, ptr %a202
|
|
br label %for.cond6516
|
|
for.cond6516:
|
|
%t203 = load i64, ptr %a202
|
|
%t204 = icmp slt i64 %t203, %t201
|
|
br i1 %t204, label %for.body6517, label %for.end6519
|
|
for.body6517:
|
|
%t205 = load i64, ptr %a36
|
|
%t206 = load i64, ptr %a202
|
|
%t207 = mul i64 8, %t206
|
|
%t208 = sub i64 %t205, %t207
|
|
store i64 %t208, ptr %a209
|
|
%t210 = load i64, ptr %a209
|
|
%t211 = icmp sgt i64 %t210, 8
|
|
br i1 %t211, label %then6520, label %endif6522
|
|
then6520:
|
|
store i64 8, ptr %a209
|
|
br label %endif6522
|
|
endif6522:
|
|
%t212 = load i64, ptr %a202
|
|
%t213 = load { ptr, i64, i64 }, ptr %a128
|
|
%t214 = extractvalue { ptr, i64, i64 } %t213, 1
|
|
%t215 = icmp uge i64 %t212, %t214
|
|
br i1 %t215, label %range6523, label %inrange6524
|
|
range6523:
|
|
call void @finch_panic_index(ptr @.str.4211, i64 3730, i64 %t212, i64 %t214)
|
|
unreachable
|
|
inrange6524:
|
|
%t216 = extractvalue { ptr, i64, i64 } %t213, 0
|
|
%t217 = getelementptr inbounds i64, ptr %t216, i64 %t212
|
|
%t218 = load i64, ptr %t217
|
|
%t219 = icmp eq i64 %t218, 2
|
|
br i1 %t219, label %then6525, label %else6526
|
|
then6525:
|
|
%t220 = load i64, ptr %a202
|
|
%t221 = load { ptr, i64, i64 }, ptr %a136
|
|
%t222 = extractvalue { ptr, i64, i64 } %t221, 1
|
|
%t223 = icmp uge i64 %t220, %t222
|
|
br i1 %t223, label %range6528, label %inrange6529
|
|
range6528:
|
|
call void @finch_panic_index(ptr @.str.4212, i64 3731, i64 %t220, i64 %t222)
|
|
unreachable
|
|
inrange6529:
|
|
%t224 = extractvalue { ptr, i64, i64 } %t221, 0
|
|
%t225 = getelementptr inbounds i1, ptr %t224, i64 %t220
|
|
%t226 = load i1, ptr %t225
|
|
br i1 %t226, label %then6530, label %else6531
|
|
then6530:
|
|
%t227 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t227, i32 0, i32 1
|
|
%t229 = load i64, ptr %t228
|
|
%t230 = add i64 %t229, 1
|
|
call void @finch_arr_reserve(ptr %t227, i64 %t230, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t231 = load ptr, ptr %t227
|
|
%t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t229
|
|
store { ptr, i64, i64 } { ptr @.str.4213, i64 6, i64 0 }, ptr %t232
|
|
store i64 %t230, ptr %t228
|
|
br label %endif6532
|
|
else6531:
|
|
%t233 = load i64, ptr %a209
|
|
%t234 = icmp sgt i64 %t233, 4
|
|
br i1 %t234, label %then6533, label %else6534
|
|
then6533:
|
|
%t235 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t235, i32 0, i32 1
|
|
%t237 = load i64, ptr %t236
|
|
%t238 = add i64 %t237, 1
|
|
call void @finch_arr_reserve(ptr %t235, i64 %t238, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t239 = load ptr, ptr %t235
|
|
%t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %t239, i64 %t237
|
|
store { ptr, i64, i64 } { ptr @.str.4214, i64 11, i64 0 }, ptr %t240
|
|
store i64 %t238, ptr %t236
|
|
br label %endif6535
|
|
else6534:
|
|
%t241 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1
|
|
%t243 = load i64, ptr %t242
|
|
%t244 = add i64 %t243, 1
|
|
call void @finch_arr_reserve(ptr %t241, i64 %t244, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t245 = load ptr, ptr %t241
|
|
%t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i64 %t243
|
|
store { ptr, i64, i64 } { ptr @.str.4215, i64 5, i64 0 }, ptr %t246
|
|
store i64 %t244, ptr %t242
|
|
br label %endif6535
|
|
endif6535:
|
|
br label %endif6532
|
|
endif6532:
|
|
br label %endif6527
|
|
else6526:
|
|
%t247 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i32 0, i32 1
|
|
%t249 = load i64, ptr %a209
|
|
%t250 = mul i64 %t249, 8
|
|
call void @finch_str_from_int(ptr %a251, i64 %t250)
|
|
%t252 = load { ptr, i64, i64 }, ptr %a251
|
|
store { ptr, i64, i64 } { ptr @.str.4216, i64 1, i64 0 }, ptr %a254
|
|
store { ptr, i64, i64 } %t252, ptr %a255
|
|
call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255)
|
|
%t256 = load { ptr, i64, i64 }, ptr %a253
|
|
%t257 = load i64, ptr %t248
|
|
%t258 = add i64 %t257, 1
|
|
call void @finch_arr_reserve(ptr %t247, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t259 = load ptr, ptr %t247
|
|
%t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257
|
|
store { ptr, i64, i64 } %t256, ptr %t260
|
|
store i64 %t258, ptr %t248
|
|
br label %endif6527
|
|
endif6527:
|
|
br label %for.step6518
|
|
for.step6518:
|
|
%t261 = load i64, ptr %a202
|
|
%t262 = add i64 %t261, 1
|
|
store i64 %t262, ptr %a202
|
|
br label %for.cond6516
|
|
for.end6519:
|
|
%t263 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1
|
|
%t265 = load i64, ptr %t264
|
|
%t266 = icmp eq i64 %t265, 1
|
|
br i1 %t266, label %then6536, label %else6537
|
|
then6536:
|
|
%t267 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t268 = load { ptr, i64, i64 }, ptr %t267
|
|
%t269 = extractvalue { ptr, i64, i64 } %t268, 1
|
|
%t270 = icmp uge i64 0, %t269
|
|
br i1 %t270, label %range6539, label %inrange6540
|
|
range6539:
|
|
call void @finch_panic_index(ptr @.str.4217, i64 3743, i64 0, i64 %t269)
|
|
unreachable
|
|
inrange6540:
|
|
%t271 = extractvalue { ptr, i64, i64 } %t268, 0
|
|
%t272 = getelementptr inbounds { ptr, i64, i64 }, ptr %t271, i64 0
|
|
%t273 = load { ptr, i64, i64 }, ptr %t272
|
|
%t274 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t273, ptr %a275
|
|
call void @finch_str_copy(ptr %a276, ptr %a275)
|
|
%t277 = load { ptr, i64, i64 }, ptr %a276
|
|
store { ptr, i64, i64 } %t277, ptr %t274
|
|
br label %endif6538
|
|
else6537:
|
|
%t278 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1
|
|
%t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4219, i64 2, i64 0 }, ptr %a280
|
|
call void @finch_str_join(ptr %a281, ptr %t278, ptr %a280)
|
|
%t282 = load { ptr, i64, i64 }, ptr %a281
|
|
store { ptr, i64, i64 } { ptr @.str.4218, i64 2, i64 0 }, ptr %a284
|
|
store { ptr, i64, i64 } %t282, ptr %a285
|
|
call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285)
|
|
%t286 = load { ptr, i64, i64 }, ptr %a283
|
|
store { ptr, i64, i64 } %t286, ptr %a288
|
|
store { ptr, i64, i64 } { ptr @.str.4220, i64 2, i64 0 }, ptr %a289
|
|
call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289)
|
|
%t290 = load { ptr, i64, i64 }, ptr %a287
|
|
%t291 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t290, ptr %t291
|
|
br label %endif6538
|
|
endif6538:
|
|
%t292 = load %S.gen.Abi, ptr %a4
|
|
store %S.gen.Abi %t292, ptr %a293
|
|
call void @finch.copy.S_gen_Abi(ptr %a294, ptr %a293)
|
|
%t295 = load %S.gen.Abi, ptr %a294
|
|
ret %S.gen.Abi %t295
|
|
}
|
|
|
|
define internal void @finch.copy.arr_S_gen_Abi(ptr %dst, ptr %src) {
|
|
entry:
|
|
%a5 = alloca i64, align 16
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64))
|
|
%t1 = load ptr, ptr %dst
|
|
%t2 = load ptr, ptr %src
|
|
%t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1
|
|
%t4 = load i64, ptr %t3
|
|
store i64 0, ptr %a5
|
|
br label %n.cond6592
|
|
n.cond6592:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body6593, label %n.end6594
|
|
n.body6593:
|
|
%t8 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds %S.gen.Abi, ptr %t2, i64 %t6
|
|
call void @finch.copy.S_gen_Abi(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond6592
|
|
n.end6594:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_gen_Plan(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.gen.Plan, ptr %src
|
|
store %S.gen.Plan %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 0
|
|
call void @finch.copy.S_gen_Abi(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 1
|
|
call void @finch.copy.arr_S_gen_Abi(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.gen.Plan, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.gen.Plan, ptr %src, i32 0, i32 2
|
|
call void @finch_str_copy(ptr %t6, ptr %t7)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.gen.Plan, align 16
|
|
%a5 = alloca i64, align 16
|
|
%a6 = alloca i64, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca i64, align 16
|
|
%a64 = alloca %S.ast.Type, align 16
|
|
%a68 = alloca %S.gen.Abi, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca i64, align 16
|
|
%a76 = alloca i64, align 16
|
|
%a78 = alloca i64, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca %S.gen.Abi, align 16
|
|
%a141 = alloca %S.gen.Abi, align 16
|
|
%a150 = alloca %S.gen.Plan, align 16
|
|
%a151 = alloca %S.gen.Plan, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.gen.Plan zeroinitializer, ptr %a4
|
|
store i64 6, ptr %a5
|
|
store i64 8, ptr %a6
|
|
%t7 = load ptr, ptr %a1
|
|
%t8 = load %S.ast.Type, ptr %a2
|
|
%t9 = call %S.gen.Abi @finch.gen.classify(ptr %t7, %S.ast.Type %t8)
|
|
%t10 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0
|
|
store %S.gen.Abi %t9, ptr %t10
|
|
%t11 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2
|
|
store { ptr, i64, i64 } { ptr @.str.4221, i64 4, i64 0 }, ptr %t11
|
|
%t12 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t13 = load { ptr, i64, i64 }, ptr %t12
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
store { ptr, i64, i64 } { ptr @.str.4222, i64 4, i64 0 }, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp eq i32 %t16, 0
|
|
br i1 %t17, label %then6541, label %endif6543
|
|
then6541:
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = load %S.ast.Type, ptr %a2
|
|
%t20 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t18, %S.ast.Type %t19)
|
|
%t21 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t20, ptr %t21
|
|
br label %endif6543
|
|
endif6543:
|
|
%t22 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0
|
|
%t23 = getelementptr inbounds %S.gen.Abi, ptr %t22, i32 0, i32 0
|
|
%t24 = load { ptr, i64, i64 }, ptr %t23
|
|
store { ptr, i64, i64 } %t24, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.4223, i64 8, i64 0 }, ptr %a26
|
|
%t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26)
|
|
%t28 = icmp ne i32 %t27, 0
|
|
br i1 %t28, label %then6544, label %endif6546
|
|
then6544:
|
|
%t29 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0
|
|
%t30 = getelementptr inbounds %S.gen.Abi, ptr %t29, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4224, i64 6, i64 0 }, ptr %t30
|
|
br label %endif6546
|
|
endif6546:
|
|
%t31 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0
|
|
%t32 = getelementptr inbounds %S.gen.Abi, ptr %t31, i32 0, i32 0
|
|
%t33 = load { ptr, i64, i64 }, ptr %t32
|
|
store { ptr, i64, i64 } %t33, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.4225, i64 6, i64 0 }, ptr %a35
|
|
%t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35)
|
|
%t37 = icmp ne i32 %t36, 0
|
|
br i1 %t37, label %then6547, label %else6548
|
|
then6547:
|
|
%t38 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3
|
|
store i1 true, ptr %t38
|
|
%t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2
|
|
store { ptr, i64, i64 } { ptr @.str.4226, i64 4, i64 0 }, ptr %t39
|
|
%t40 = load i64, ptr %a5
|
|
%t41 = sub i64 %t40, 1
|
|
store i64 %t41, ptr %a5
|
|
br label %endif6549
|
|
else6548:
|
|
%t42 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0
|
|
%t43 = getelementptr inbounds %S.gen.Abi, ptr %t42, i32 0, i32 0
|
|
%t44 = load { ptr, i64, i64 }, ptr %t43
|
|
store { ptr, i64, i64 } %t44, ptr %a45
|
|
store { ptr, i64, i64 } { ptr @.str.4227, i64 6, i64 0 }, ptr %a46
|
|
%t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46)
|
|
%t48 = icmp ne i32 %t47, 0
|
|
br i1 %t48, label %then6550, label %endif6552
|
|
then6550:
|
|
%t49 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0
|
|
%t50 = getelementptr inbounds %S.gen.Abi, ptr %t49, i32 0, i32 2
|
|
%t51 = load { ptr, i64, i64 }, ptr %t50
|
|
%t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t51, ptr %a53
|
|
call void @finch_str_copy(ptr %a54, ptr %a53)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t55, ptr %t52
|
|
br label %endif6552
|
|
endif6552:
|
|
br label %endif6549
|
|
endif6549:
|
|
store i64 0, ptr %a56
|
|
br label %each.cond6553
|
|
each.cond6553:
|
|
%t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t58 = load i64, ptr %t57
|
|
%t59 = load i64, ptr %a56
|
|
%t60 = icmp slt i64 %t59, %t58
|
|
br i1 %t60, label %each.body6554, label %each.end6556
|
|
each.body6554:
|
|
%t61 = load ptr, ptr %a3
|
|
%t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i64 %t59
|
|
%t63 = load %S.ast.Type, ptr %t62
|
|
store %S.ast.Type %t63, ptr %a64
|
|
%t65 = load ptr, ptr %a1
|
|
%t66 = load %S.ast.Type, ptr %a64
|
|
%t67 = call %S.gen.Abi @finch.gen.classify(ptr %t65, %S.ast.Type %t66)
|
|
store %S.gen.Abi %t67, ptr %a68
|
|
%t69 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 0
|
|
%t70 = load { ptr, i64, i64 }, ptr %t69
|
|
store { ptr, i64, i64 } %t70, ptr %a71
|
|
store { ptr, i64, i64 } { ptr @.str.4228, i64 6, i64 0 }, ptr %a72
|
|
%t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72)
|
|
%t74 = icmp ne i32 %t73, 0
|
|
br i1 %t74, label %then6557, label %else6558
|
|
then6557:
|
|
store i64 0, ptr %a75
|
|
store i64 0, ptr %a76
|
|
%t77 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 1
|
|
store i64 0, ptr %a78
|
|
br label %each.cond6560
|
|
each.cond6560:
|
|
%t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1
|
|
%t80 = load i64, ptr %t79
|
|
%t81 = load i64, ptr %a78
|
|
%t82 = icmp slt i64 %t81, %t80
|
|
br i1 %t82, label %each.body6561, label %each.end6563
|
|
each.body6561:
|
|
%t83 = load ptr, ptr %t77
|
|
%t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81
|
|
%t85 = load { ptr, i64, i64 }, ptr %t84
|
|
store { ptr, i64, i64 } %t85, ptr %a86
|
|
%t87 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
store { ptr, i64, i64 } { ptr @.str.4230, i64 1, i64 0 }, ptr %a90
|
|
%t91 = call i32 @finch_str_starts(ptr %a88, ptr %a90)
|
|
%t92 = icmp ne i32 %t91, 0
|
|
br i1 %t92, label %then6564, label %else6565
|
|
then6564:
|
|
%t93 = load i64, ptr %a75
|
|
%t94 = add i64 %t93, 1
|
|
store i64 %t94, ptr %a75
|
|
br label %endif6566
|
|
else6565:
|
|
%t95 = load i64, ptr %a76
|
|
%t96 = add i64 %t95, 1
|
|
store i64 %t96, ptr %a76
|
|
br label %endif6566
|
|
endif6566:
|
|
br label %each.step6562
|
|
each.step6562:
|
|
%t97 = load i64, ptr %a78
|
|
%t98 = add i64 %t97, 1
|
|
store i64 %t98, ptr %a78
|
|
br label %each.cond6560
|
|
each.end6563:
|
|
%t99 = load ptr, ptr %a1
|
|
%t100 = icmp eq ptr %t99, null
|
|
br i1 %t100, label %panic6567, label %ok6568
|
|
panic6567:
|
|
call void @finch_panic(ptr @.str.4231, i64 3783, ptr @.str.4232)
|
|
unreachable
|
|
ok6568:
|
|
%t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 27
|
|
%t102 = getelementptr inbounds %S.platform.Target, ptr %t101, i32 0, i32 1
|
|
%t103 = load i1, ptr %t102
|
|
br label %logic.from6569
|
|
logic.from6569:
|
|
br i1 %t103, label %logic.end6571, label %logic.rhs6570
|
|
logic.rhs6570:
|
|
%t104 = load ptr, ptr %a1
|
|
%t105 = icmp eq ptr %t104, null
|
|
br i1 %t105, label %panic6572, label %ok6573
|
|
panic6572:
|
|
call void @finch_panic(ptr @.str.4233, i64 3783, ptr @.str.4234)
|
|
unreachable
|
|
ok6573:
|
|
%t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 27
|
|
%t107 = getelementptr inbounds %S.platform.Target, ptr %t106, i32 0, i32 4
|
|
%t108 = load i1, ptr %t107
|
|
br label %logic.rend6574
|
|
logic.rend6574:
|
|
br label %logic.end6571
|
|
logic.end6571:
|
|
%t109 = phi i1 [ true, %logic.from6569 ], [ %t108, %logic.rend6574 ]
|
|
br label %logic.from6575
|
|
logic.from6575:
|
|
br i1 %t109, label %logic.end6577, label %logic.rhs6576
|
|
logic.rhs6576:
|
|
%t110 = load i64, ptr %a75
|
|
%t111 = load i64, ptr %a5
|
|
%t112 = icmp sle i64 %t110, %t111
|
|
br label %logic.from6578
|
|
logic.from6578:
|
|
br i1 %t112, label %logic.rhs6579, label %logic.end6580
|
|
logic.rhs6579:
|
|
%t113 = load i64, ptr %a76
|
|
%t114 = load i64, ptr %a6
|
|
%t115 = icmp sle i64 %t113, %t114
|
|
br label %logic.rend6581
|
|
logic.rend6581:
|
|
br label %logic.end6580
|
|
logic.end6580:
|
|
%t116 = phi i1 [ false, %logic.from6578 ], [ %t115, %logic.rend6581 ]
|
|
br label %logic.rend6582
|
|
logic.rend6582:
|
|
br label %logic.end6577
|
|
logic.end6577:
|
|
%t117 = phi i1 [ true, %logic.from6575 ], [ %t116, %logic.rend6582 ]
|
|
br i1 %t117, label %then6583, label %else6584
|
|
then6583:
|
|
%t118 = load i64, ptr %a75
|
|
%t119 = load i64, ptr %a5
|
|
%t120 = sub i64 %t119, %t118
|
|
store i64 %t120, ptr %a5
|
|
%t121 = load i64, ptr %a76
|
|
%t122 = load i64, ptr %a6
|
|
%t123 = sub i64 %t122, %t121
|
|
store i64 %t123, ptr %a6
|
|
br label %endif6585
|
|
else6584:
|
|
%t124 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 0
|
|
store { ptr, i64, i64 } { ptr @.str.4235, i64 6, i64 0 }, ptr %t124
|
|
br label %endif6585
|
|
endif6585:
|
|
br label %endif6559
|
|
else6558:
|
|
%t125 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 0
|
|
%t126 = load { ptr, i64, i64 }, ptr %t125
|
|
store { ptr, i64, i64 } %t126, ptr %a127
|
|
store { ptr, i64, i64 } { ptr @.str.4236, i64 6, i64 0 }, ptr %a128
|
|
%t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128)
|
|
%t130 = icmp ne i32 %t129, 0
|
|
br i1 %t130, label %then6586, label %endif6588
|
|
then6586:
|
|
%t131 = load %S.ast.Type, ptr %a64
|
|
%t132 = call i1 @finch.gen.isFloat(%S.ast.Type %t131)
|
|
br i1 %t132, label %then6589, label %else6590
|
|
then6589:
|
|
%t133 = load i64, ptr %a6
|
|
%t134 = sub i64 %t133, 1
|
|
store i64 %t134, ptr %a6
|
|
br label %endif6591
|
|
else6590:
|
|
%t135 = load i64, ptr %a5
|
|
%t136 = sub i64 %t135, 1
|
|
store i64 %t136, ptr %a5
|
|
br label %endif6591
|
|
endif6591:
|
|
br label %endif6588
|
|
endif6588:
|
|
br label %endif6559
|
|
endif6559:
|
|
%t137 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1
|
|
%t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1
|
|
%t139 = load %S.gen.Abi, ptr %a68
|
|
store %S.gen.Abi %t139, ptr %a140
|
|
call void @finch.copy.S_gen_Abi(ptr %a141, ptr %a140)
|
|
%t142 = load %S.gen.Abi, ptr %a141
|
|
%t143 = load i64, ptr %t138
|
|
%t144 = add i64 %t143, 1
|
|
call void @finch_arr_reserve(ptr %t137, i64 %t144, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64))
|
|
%t145 = load ptr, ptr %t137
|
|
%t146 = getelementptr inbounds %S.gen.Abi, ptr %t145, i64 %t143
|
|
store %S.gen.Abi %t142, ptr %t146
|
|
store i64 %t144, ptr %t138
|
|
br label %each.step6555
|
|
each.step6555:
|
|
%t147 = load i64, ptr %a56
|
|
%t148 = add i64 %t147, 1
|
|
store i64 %t148, ptr %a56
|
|
br label %each.cond6553
|
|
each.end6556:
|
|
%t149 = load %S.gen.Plan, ptr %a4
|
|
store %S.gen.Plan %t149, ptr %a150
|
|
call void @finch.copy.S_gen_Plan(ptr %a151, ptr %a150)
|
|
%t152 = load %S.gen.Plan, ptr %a151
|
|
ret %S.gen.Plan %t152
|
|
}
|
|
|
|
define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca %S.gen.StructDef, align 16
|
|
%a28 = alloca %S.gen.StructDef, align 16
|
|
%a30 = alloca %S.gen.StructDef, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
store { ptr, i64, i64 } %p4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0
|
|
%t7 = load { ptr, i64, i64 }, ptr %t6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.4237, i64 6, i64 0 }, ptr %a9
|
|
%t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9)
|
|
%t11 = icmp eq i32 %t10, 0
|
|
br i1 %t11, label %then6595, label %endif6597
|
|
then6595:
|
|
ret void
|
|
endif6597:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = icmp eq ptr %t12, null
|
|
br i1 %t13, label %panic6598, label %ok6599
|
|
panic6598:
|
|
call void @finch_panic(ptr @.str.4238, i64 3805, ptr @.str.4239)
|
|
unreachable
|
|
ok6599:
|
|
%t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15
|
|
%t15 = load ptr, ptr %a1
|
|
%t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3
|
|
%t17 = load { ptr, i64, i64 }, ptr %t16
|
|
%t18 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2
|
|
%t19 = load { ptr, i64, i64 }, ptr %t18
|
|
%t20 = call i64 @finch.gen.findStruct(ptr %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t19)
|
|
%t21 = load { ptr, i64, i64 }, ptr %t14
|
|
%t22 = extractvalue { ptr, i64, i64 } %t21, 1
|
|
%t23 = icmp uge i64 %t20, %t22
|
|
br i1 %t23, label %range6600, label %inrange6601
|
|
range6600:
|
|
call void @finch_panic_index(ptr @.str.4240, i64 3805, i64 %t20, i64 %t22)
|
|
unreachable
|
|
inrange6601:
|
|
%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 %then6602, label %endif6604
|
|
then6602:
|
|
%t34 = load ptr, ptr %a1
|
|
%t35 = load %S.ast.Node, ptr %a2
|
|
%t36 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.4241, i64 16, i64 0 }, ptr %a38
|
|
store { ptr, i64, i64 } %t36, ptr %a39
|
|
call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a37
|
|
store { ptr, i64, i64 } %t40, ptr %a42
|
|
store { ptr, i64, i64 } { ptr @.str.4242, i64 2, i64 0 }, ptr %a43
|
|
call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a41
|
|
%t45 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t44, ptr %a47
|
|
store { ptr, i64, i64 } %t45, ptr %a48
|
|
call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t49, ptr %a51
|
|
store { ptr, i64, i64 } { ptr @.str.4243, i64 18, i64 0 }, ptr %a52
|
|
call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52)
|
|
%t53 = load { ptr, i64, i64 }, ptr %a50
|
|
%t54 = load %S.ast.Type, ptr %a4
|
|
%t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54)
|
|
store { ptr, i64, i64 } %t53, ptr %a57
|
|
store { ptr, i64, i64 } %t55, ptr %a58
|
|
call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a56
|
|
store { ptr, i64, i64 } %t59, ptr %a61
|
|
store { ptr, i64, i64 } { ptr @.str.4244, i64 20, i64 0 }, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t63)
|
|
br label %endif6604
|
|
endif6604:
|
|
%t64 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8
|
|
%t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1
|
|
%t66 = load i64, ptr %t65
|
|
%t67 = icmp sgt i64 %t66, 0
|
|
br i1 %t67, label %then6605, label %endif6607
|
|
then6605:
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = load %S.ast.Node, ptr %a2
|
|
%t70 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.4245, i64 16, i64 0 }, ptr %a72
|
|
store { ptr, i64, i64 } %t70, ptr %a73
|
|
call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73)
|
|
%t74 = load { ptr, i64, i64 }, ptr %a71
|
|
store { ptr, i64, i64 } %t74, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.4246, i64 2, i64 0 }, ptr %a77
|
|
call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77)
|
|
%t78 = load { ptr, i64, i64 }, ptr %a75
|
|
%t79 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t78, ptr %a81
|
|
store { ptr, i64, i64 } %t79, ptr %a82
|
|
call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t83, ptr %a85
|
|
store { ptr, i64, i64 } { ptr @.str.4247, i64 12, i64 0 }, ptr %a86
|
|
call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a84
|
|
%t88 = load %S.ast.Type, ptr %a4
|
|
%t89 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t88)
|
|
store { ptr, i64, i64 } %t87, ptr %a91
|
|
store { ptr, i64, i64 } %t89, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
store { ptr, i64, i64 } %t93, ptr %a95
|
|
store { ptr, i64, i64 } { ptr @.str.4248, i64 40, i64 0 }, ptr %a96
|
|
call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a94
|
|
%t98 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8
|
|
%t99 = load { ptr, i64, i64 }, ptr %t98
|
|
store { ptr, i64, i64 } %t97, ptr %a101
|
|
store { ptr, i64, i64 } %t99, ptr %a102
|
|
call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102)
|
|
%t103 = load { ptr, i64, i64 }, ptr %a100
|
|
call void @finch.gen.fail(ptr %t68, %S.ast.Node %t69, { ptr, i64, i64 } %t103)
|
|
br label %endif6607
|
|
endif6607:
|
|
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.from6608
|
|
logic.from6608:
|
|
br i1 %t3, label %logic.end6610, label %logic.rhs6609
|
|
logic.rhs6609:
|
|
%t4 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.4249, i64 4, i64 0 }, ptr %a7
|
|
%t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7)
|
|
%t9 = icmp ne i32 %t8, 0
|
|
br label %logic.rend6611
|
|
logic.rend6611:
|
|
br label %logic.end6610
|
|
logic.end6610:
|
|
%t10 = phi i1 [ true, %logic.from6608 ], [ %t9, %logic.rend6611 ]
|
|
br label %logic.from6612
|
|
logic.from6612:
|
|
br i1 %t10, label %logic.end6614, label %logic.rhs6613
|
|
logic.rhs6613:
|
|
%t11 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t12 = load { ptr, i64, i64 }, ptr %t11
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.4250, i64 4, i64 0 }, ptr %a14
|
|
%t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14)
|
|
%t16 = icmp ne i32 %t15, 0
|
|
br label %logic.rend6615
|
|
logic.rend6615:
|
|
br label %logic.end6614
|
|
logic.end6614:
|
|
%t17 = phi i1 [ true, %logic.from6612 ], [ %t16, %logic.rend6615 ]
|
|
br label %logic.from6616
|
|
logic.from6616:
|
|
br i1 %t17, label %logic.end6618, label %logic.rhs6617
|
|
logic.rhs6617:
|
|
%t18 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0
|
|
%t19 = load { ptr, i64, i64 }, ptr %t18
|
|
store { ptr, i64, i64 } %t19, ptr %a20
|
|
store { ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }, ptr %a21
|
|
%t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21)
|
|
%t23 = icmp ne i32 %t22, 0
|
|
br label %logic.rend6619
|
|
logic.rend6619:
|
|
br label %logic.end6618
|
|
logic.end6618:
|
|
%t24 = phi i1 [ true, %logic.from6616 ], [ %t23, %logic.rend6619 ]
|
|
ret i1 %t24
|
|
}
|
|
|
|
define internal void @finch.gen.checkExport(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca %S.gen.FnSig, align 16
|
|
%a23 = alloca i64, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca i64, align 16
|
|
%a100 = alloca %S.gen.FnSig, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store %S.gen.FnSig %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 2
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = icmp sgt i64 %t6, 0
|
|
br i1 %t7, label %then6620, label %endif6622
|
|
then6620:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.4252, i64 59, i64 0 })
|
|
br label %endif6622
|
|
endif6622:
|
|
%t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7
|
|
%t11 = load i1, ptr %t10
|
|
br i1 %t11, label %then6623, label %endif6625
|
|
then6623:
|
|
%t12 = load ptr, ptr %a1
|
|
%t13 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t12, %S.ast.Node %t13, { ptr, i64, i64 } { ptr @.str.4253, i64 74, i64 0 })
|
|
br label %endif6625
|
|
endif6625:
|
|
%t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 3
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1
|
|
%t16 = load i64, ptr %t15
|
|
%t17 = icmp sgt i64 %t16, 0
|
|
br i1 %t17, label %then6626, label %endif6628
|
|
then6626:
|
|
%t18 = load ptr, ptr %a1
|
|
%t19 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.4254, i64 29, i64 0 })
|
|
br label %endif6628
|
|
endif6628:
|
|
%t20 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 13
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1
|
|
%t22 = load i64, ptr %t21
|
|
store i64 0, ptr %a23
|
|
br label %for.cond6629
|
|
for.cond6629:
|
|
%t24 = load i64, ptr %a23
|
|
%t25 = icmp slt i64 %t24, %t22
|
|
br i1 %t25, label %for.body6630, label %for.end6632
|
|
for.body6630:
|
|
%t26 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 13
|
|
%t27 = load i64, ptr %a23
|
|
%t28 = load { ptr, i64, i64 }, ptr %t26
|
|
%t29 = extractvalue { ptr, i64, i64 } %t28, 1
|
|
%t30 = icmp uge i64 %t27, %t29
|
|
br i1 %t30, label %range6633, label %inrange6634
|
|
range6633:
|
|
call void @finch_panic_index(ptr @.str.4255, i64 3830, i64 %t27, i64 %t29)
|
|
unreachable
|
|
inrange6634:
|
|
%t31 = extractvalue { ptr, i64, i64 } %t28, 0
|
|
%t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 %t27
|
|
%t33 = load %S.ast.Type, ptr %t32
|
|
%t34 = call i1 @finch.gen.cPlain(%S.ast.Type %t33)
|
|
%t35 = xor i1 %t34, true
|
|
br i1 %t35, label %then6635, label %endif6637
|
|
then6635:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t38 = load i64, ptr %a23
|
|
%t39 = load { ptr, i64, i64 }, ptr %t37
|
|
%t40 = extractvalue { ptr, i64, i64 } %t39, 1
|
|
%t41 = icmp uge i64 %t38, %t40
|
|
br i1 %t41, label %range6638, label %inrange6639
|
|
range6638:
|
|
call void @finch_panic_index(ptr @.str.4256, i64 3831, i64 %t38, i64 %t40)
|
|
unreachable
|
|
inrange6639:
|
|
%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 %range6640, label %inrange6641
|
|
range6640:
|
|
call void @finch_panic_index(ptr @.str.4258, i64 3831, i64 %t46, i64 %t48)
|
|
unreachable
|
|
inrange6641:
|
|
%t50 = extractvalue { ptr, i64, i64 } %t47, 0
|
|
%t51 = getelementptr inbounds %S.ast.Type, ptr %t50, i64 %t46
|
|
%t52 = load %S.ast.Type, ptr %t51
|
|
%t53 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t52)
|
|
store { ptr, i64, i64 } { ptr @.str.4257, i64 66, i64 0 }, ptr %a55
|
|
store { ptr, i64, i64 } %t53, ptr %a56
|
|
call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t57, ptr %a59
|
|
store { ptr, i64, i64 } { ptr @.str.4259, i64 50, i64 0 }, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t61)
|
|
br label %endif6637
|
|
endif6637:
|
|
br label %for.step6631
|
|
for.step6631:
|
|
%t62 = load i64, ptr %a23
|
|
%t63 = add i64 %t62, 1
|
|
store i64 %t63, ptr %a23
|
|
br label %for.cond6629
|
|
for.end6632:
|
|
%t64 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12
|
|
%t65 = getelementptr inbounds %S.ast.Type, ptr %t64, i32 0, i32 0
|
|
%t66 = load { ptr, i64, i64 }, ptr %t65
|
|
store { ptr, i64, i64 } %t66, ptr %a67
|
|
store { ptr, i64, i64 } { ptr @.str.4260, i64 4, i64 0 }, ptr %a68
|
|
%t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68)
|
|
%t70 = icmp eq i32 %t69, 0
|
|
br label %logic.from6642
|
|
logic.from6642:
|
|
br i1 %t70, label %logic.rhs6643, label %logic.end6644
|
|
logic.rhs6643:
|
|
%t71 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12
|
|
%t72 = load %S.ast.Type, ptr %t71
|
|
%t73 = call i1 @finch.gen.cPlain(%S.ast.Type %t72)
|
|
%t74 = xor i1 %t73, true
|
|
br label %logic.rend6645
|
|
logic.rend6645:
|
|
br label %logic.end6644
|
|
logic.end6644:
|
|
%t75 = phi i1 [ false, %logic.from6642 ], [ %t74, %logic.rend6645 ]
|
|
br i1 %t75, label %then6646, label %endif6648
|
|
then6646:
|
|
%t76 = load ptr, ptr %a1
|
|
%t77 = load %S.ast.Node, ptr %a2
|
|
%t78 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12
|
|
%t79 = load %S.ast.Type, ptr %t78
|
|
%t80 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t79)
|
|
store { ptr, i64, i64 } { ptr @.str.4261, i64 69, i64 0 }, ptr %a82
|
|
store { ptr, i64, i64 } %t80, ptr %a83
|
|
call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83)
|
|
%t84 = load { ptr, i64, i64 }, ptr %a81
|
|
store { ptr, i64, i64 } %t84, ptr %a86
|
|
store { ptr, i64, i64 } { ptr @.str.4262, i64 1, i64 0 }, ptr %a87
|
|
call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87)
|
|
%t88 = load { ptr, i64, i64 }, ptr %a85
|
|
call void @finch.gen.fail(ptr %t76, %S.ast.Node %t77, { ptr, i64, i64 } %t88)
|
|
br label %endif6648
|
|
endif6648:
|
|
%t89 = load ptr, ptr %a1
|
|
%t90 = icmp eq ptr %t89, null
|
|
br i1 %t90, label %panic6649, label %ok6650
|
|
panic6649:
|
|
call void @finch_panic(ptr @.str.4263, i64 3837, ptr @.str.4264)
|
|
unreachable
|
|
ok6650:
|
|
%t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 14
|
|
store i64 0, ptr %a92
|
|
br label %each.cond6651
|
|
each.cond6651:
|
|
%t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1
|
|
%t94 = load i64, ptr %t93
|
|
%t95 = load i64, ptr %a92
|
|
%t96 = icmp slt i64 %t95, %t94
|
|
br i1 %t96, label %each.body6652, label %each.end6654
|
|
each.body6652:
|
|
%t97 = load ptr, ptr %t91
|
|
%t98 = getelementptr inbounds %S.gen.FnSig, ptr %t97, i64 %t95
|
|
%t99 = load %S.gen.FnSig, ptr %t98
|
|
store %S.gen.FnSig %t99, ptr %a100
|
|
%t101 = getelementptr inbounds %S.gen.FnSig, ptr %a100, i32 0, i32 5
|
|
%t102 = load i1, ptr %t101
|
|
br label %logic.from6655
|
|
logic.from6655:
|
|
br i1 %t102, label %logic.rhs6656, label %logic.end6657
|
|
logic.rhs6656:
|
|
%t103 = getelementptr inbounds %S.gen.FnSig, ptr %a100, i32 0, i32 1
|
|
%t104 = load { ptr, i64, i64 }, ptr %t103
|
|
%t105 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1
|
|
%t106 = load { ptr, i64, i64 }, ptr %t105
|
|
store { ptr, i64, i64 } %t104, ptr %a107
|
|
store { ptr, i64, i64 } %t106, ptr %a108
|
|
%t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108)
|
|
%t110 = icmp ne i32 %t109, 0
|
|
br label %logic.rend6658
|
|
logic.rend6658:
|
|
br label %logic.end6657
|
|
logic.end6657:
|
|
%t111 = phi i1 [ false, %logic.from6655 ], [ %t110, %logic.rend6658 ]
|
|
br i1 %t111, label %then6659, label %endif6661
|
|
then6659:
|
|
%t112 = load ptr, ptr %a1
|
|
%t113 = load %S.ast.Node, ptr %a2
|
|
%t114 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1
|
|
%t115 = load { ptr, i64, i64 }, ptr %t114
|
|
store { ptr, i64, i64 } { ptr @.str.4265, i64 1, i64 0 }, ptr %a117
|
|
store { ptr, i64, i64 } %t115, ptr %a118
|
|
call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a116
|
|
store { ptr, i64, i64 } %t119, ptr %a121
|
|
store { ptr, i64, i64 } { ptr @.str.4266, i64 38, i64 0 }, ptr %a122
|
|
call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122)
|
|
%t123 = load { ptr, i64, i64 }, ptr %a120
|
|
call void @finch.gen.fail(ptr %t112, %S.ast.Node %t113, { ptr, i64, i64 } %t123)
|
|
br label %endif6661
|
|
endif6661:
|
|
br label %each.step6653
|
|
each.step6653:
|
|
%t124 = load i64, ptr %a92
|
|
%t125 = add i64 %t124, 1
|
|
store i64 %t125, ptr %a92
|
|
br label %each.cond6651
|
|
each.end6654:
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %p0, %S.gen.FnSig %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.gen.FnSig, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca %S.gen.Saved, align 16
|
|
%a11 = alloca i64, align 16
|
|
%a22 = alloca %S.ast.Type, align 16
|
|
%a23 = alloca %S.ast.Type, align 16
|
|
%a25 = alloca %S.ast.Type, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a237 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a243 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a247 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a259 = alloca { ptr, i64, i64 }, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.gen.FnSig %p1, ptr %a2
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a3
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t5)
|
|
store %S.gen.Saved %t6, ptr %a7
|
|
%t8 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 13
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1
|
|
%t10 = load i64, ptr %t9
|
|
store i64 0, ptr %a11
|
|
br label %for.cond6662
|
|
for.cond6662:
|
|
%t12 = load i64, ptr %a11
|
|
%t13 = icmp slt i64 %t12, %t10
|
|
br i1 %t13, label %for.body6663, label %for.end6665
|
|
for.body6663:
|
|
%t14 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 13
|
|
%t15 = load i64, ptr %a11
|
|
%t16 = load { ptr, i64, i64 }, ptr %t14
|
|
%t17 = extractvalue { ptr, i64, i64 } %t16, 1
|
|
%t18 = icmp uge i64 %t15, %t17
|
|
br i1 %t18, label %range6666, label %inrange6667
|
|
range6666:
|
|
call void @finch_panic_index(ptr @.str.4267, i64 3850, i64 %t15, i64 %t17)
|
|
unreachable
|
|
inrange6667:
|
|
%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.4268, i64 4, i64 0 }, ptr %a29
|
|
%t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29)
|
|
%t31 = icmp ne i32 %t30, 0
|
|
br i1 %t31, label %then6668, label %else6669
|
|
then6668:
|
|
%t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t33 = load i64, ptr %a11
|
|
call void @finch_str_from_int(ptr %a34, i64 %t33)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.4269, i64 13, i64 0 }, ptr %a37
|
|
store { ptr, i64, i64 } %t35, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
%t40 = load i64, ptr %t32
|
|
%t41 = add i64 %t40, 1
|
|
call void @finch_arr_reserve(ptr %a3, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t42 = load ptr, ptr %a3
|
|
%t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i64 %t40
|
|
store { ptr, i64, i64 } %t39, ptr %t43
|
|
store i64 %t41, ptr %t32
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1
|
|
%t45 = load ptr, ptr %a1
|
|
%t46 = load i64, ptr %a11
|
|
call void @finch_str_from_int(ptr %a47, i64 %t46)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } { ptr @.str.4271, i64 13, i64 0 }, ptr %a50
|
|
store { ptr, i64, i64 } %t48, ptr %a51
|
|
call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51)
|
|
%t52 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t52, ptr %a54
|
|
store { ptr, i64, i64 } { ptr @.str.4272, i64 3, i64 0 }, ptr %a55
|
|
call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a53
|
|
%t57 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t56)
|
|
store { ptr, i64, i64 } { ptr @.str.4270, i64 3, i64 0 }, ptr %a59
|
|
store { ptr, i64, i64 } %t57, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
%t62 = load i64, ptr %t44
|
|
%t63 = add i64 %t62, 1
|
|
call void @finch_arr_reserve(ptr %a4, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t64 = load ptr, ptr %a4
|
|
%t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62
|
|
store { ptr, i64, i64 } %t61, ptr %t65
|
|
store i64 %t63, ptr %t44
|
|
br label %endif6670
|
|
else6669:
|
|
%t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t67 = load ptr, ptr %a1
|
|
%t68 = load %S.ast.Type, ptr %a25
|
|
%t69 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t67, %S.ast.Type %t68)
|
|
%t70 = load ptr, ptr %a1
|
|
%t71 = load %S.ast.Type, ptr %a25
|
|
%t72 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t70, %S.ast.Type %t71)
|
|
store { ptr, i64, i64 } %t69, ptr %a74
|
|
store { ptr, i64, i64 } %t72, ptr %a75
|
|
call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75)
|
|
%t76 = load { ptr, i64, i64 }, ptr %a73
|
|
store { ptr, i64, i64 } %t76, ptr %a78
|
|
store { ptr, i64, i64 } { ptr @.str.4273, i64 3, i64 0 }, ptr %a79
|
|
call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79)
|
|
%t80 = load { ptr, i64, i64 }, ptr %a77
|
|
%t81 = load i64, ptr %a11
|
|
call void @finch_str_from_int(ptr %a82, i64 %t81)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } %t80, ptr %a85
|
|
store { ptr, i64, i64 } %t83, ptr %a86
|
|
call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a84
|
|
%t88 = load i64, ptr %t66
|
|
%t89 = add i64 %t88, 1
|
|
call void @finch_arr_reserve(ptr %a3, i64 %t89, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t90 = load ptr, ptr %a3
|
|
%t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i64 %t88
|
|
store { ptr, i64, i64 } %t87, ptr %t91
|
|
store i64 %t89, ptr %t66
|
|
%t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1
|
|
%t93 = load ptr, ptr %a1
|
|
%t94 = load %S.ast.Type, ptr %a25
|
|
%t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94)
|
|
store { ptr, i64, i64 } %t95, ptr %a97
|
|
store { ptr, i64, i64 } { ptr @.str.4274, i64 3, i64 0 }, ptr %a98
|
|
call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98)
|
|
%t99 = load { ptr, i64, i64 }, ptr %a96
|
|
%t100 = load i64, ptr %a11
|
|
call void @finch_str_from_int(ptr %a101, i64 %t100)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a101
|
|
store { ptr, i64, i64 } %t99, ptr %a104
|
|
store { ptr, i64, i64 } %t102, ptr %a105
|
|
call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105)
|
|
%t106 = load { ptr, i64, i64 }, ptr %a103
|
|
%t107 = load i64, ptr %t92
|
|
%t108 = add i64 %t107, 1
|
|
call void @finch_arr_reserve(ptr %a4, i64 %t108, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t109 = load ptr, ptr %a4
|
|
%t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i64 %t107
|
|
store { ptr, i64, i64 } %t106, ptr %t110
|
|
store i64 %t108, ptr %t92
|
|
br label %endif6670
|
|
endif6670:
|
|
br label %for.step6664
|
|
for.step6664:
|
|
%t111 = load i64, ptr %a11
|
|
%t112 = add i64 %t111, 1
|
|
store i64 %t112, ptr %a11
|
|
br label %for.cond6662
|
|
for.end6665:
|
|
%t113 = load ptr, ptr %a1
|
|
%t114 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t115 = load %S.ast.Type, ptr %t114
|
|
%t116 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t115)
|
|
store { ptr, i64, i64 } { ptr @.str.4275, i64 5, i64 0 }, ptr %a118
|
|
store { ptr, i64, i64 } %t116, ptr %a119
|
|
call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119)
|
|
%t120 = load { ptr, i64, i64 }, ptr %a117
|
|
store { ptr, i64, i64 } %t120, ptr %a122
|
|
store { ptr, i64, i64 } { ptr @.str.4276, i64 1, i64 0 }, ptr %a123
|
|
call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123)
|
|
%t124 = load { ptr, i64, i64 }, ptr %a121
|
|
%t125 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11
|
|
%t126 = load { ptr, i64, i64 }, ptr %t125
|
|
store { ptr, i64, i64 } %t124, ptr %a128
|
|
store { ptr, i64, i64 } %t126, ptr %a129
|
|
call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129)
|
|
%t130 = load { ptr, i64, i64 }, ptr %a127
|
|
store { ptr, i64, i64 } %t130, ptr %a132
|
|
store { ptr, i64, i64 } { ptr @.str.4277, i64 1, i64 0 }, ptr %a133
|
|
call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133)
|
|
%t134 = load { ptr, i64, i64 }, ptr %a131
|
|
%t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4278, i64 2, i64 0 }, ptr %a136
|
|
call void @finch_str_join(ptr %a137, ptr %a4, ptr %a136)
|
|
%t138 = load { ptr, i64, i64 }, ptr %a137
|
|
store { ptr, i64, i64 } %t134, ptr %a140
|
|
store { ptr, i64, i64 } %t138, ptr %a141
|
|
call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141)
|
|
%t142 = load { ptr, i64, i64 }, ptr %a139
|
|
store { ptr, i64, i64 } %t142, ptr %a144
|
|
store { ptr, i64, i64 } { ptr @.str.4279, i64 1, i64 0 }, ptr %a145
|
|
call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145)
|
|
%t146 = load { ptr, i64, i64 }, ptr %a143
|
|
store { ptr, i64, i64 } %t146, ptr %a147
|
|
store { ptr, i64, i64 } { ptr @.str.4280, i64 4, i64 0 }, ptr %a148
|
|
store { ptr, i64, i64 } { ptr @.str.4281, i64 0, i64 0 }, ptr %a149
|
|
%t150 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t151 = getelementptr inbounds %S.ast.Type, ptr %t150, i32 0, i32 0
|
|
%t152 = load { ptr, i64, i64 }, ptr %t151
|
|
store { ptr, i64, i64 } %t152, ptr %a153
|
|
store { ptr, i64, i64 } { ptr @.str.4282, i64 4, i64 0 }, ptr %a154
|
|
%t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154)
|
|
%t156 = icmp ne i32 %t155, 0
|
|
br i1 %t156, label %then6671, label %else6672
|
|
then6671:
|
|
%t157 = load ptr, ptr %a1
|
|
%t158 = load { ptr, i64, i64 }, ptr %a147
|
|
call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t158)
|
|
%t159 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t159, { ptr, i64, i64 } { ptr @.str.4283, i64 8, i64 0 })
|
|
br label %endif6673
|
|
else6672:
|
|
%t160 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t161 = getelementptr inbounds %S.ast.Type, ptr %t160, i32 0, i32 0
|
|
%t162 = load { ptr, i64, i64 }, ptr %t161
|
|
store { ptr, i64, i64 } %t162, ptr %a163
|
|
store { ptr, i64, i64 } { ptr @.str.4284, i64 4, i64 0 }, ptr %a164
|
|
%t165 = call i32 @finch_str_eq(ptr %a163, ptr %a164)
|
|
%t166 = icmp ne i32 %t165, 0
|
|
br i1 %t166, label %then6674, label %else6675
|
|
then6674:
|
|
store { ptr, i64, i64 } { ptr @.str.4285, i64 2, i64 0 }, ptr %a148
|
|
store { ptr, i64, i64 } { ptr @.str.4286, i64 8, i64 0 }, ptr %a149
|
|
%t167 = load ptr, ptr %a1
|
|
%t168 = load ptr, ptr %a1
|
|
%t169 = load ptr, ptr %a1
|
|
%t170 = load { ptr, i64, i64 }, ptr %a147
|
|
%t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t169, { ptr, i64, i64 } %t170)
|
|
store { ptr, i64, i64 } { ptr @.str.4288, i64 8, i64 0 }, ptr %a173
|
|
store { ptr, i64, i64 } %t171, ptr %a174
|
|
call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174)
|
|
%t175 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } %t175, ptr %a177
|
|
store { ptr, i64, i64 } { ptr @.str.4289, i64 6, i64 0 }, ptr %a178
|
|
call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178)
|
|
%t179 = load { ptr, i64, i64 }, ptr %a176
|
|
%t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t168, { ptr, i64, i64 } %t179)
|
|
store { ptr, i64, i64 } { ptr @.str.4287, i64 7, i64 0 }, ptr %a182
|
|
store { ptr, i64, i64 } %t180, ptr %a183
|
|
call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183)
|
|
%t184 = load { ptr, i64, i64 }, ptr %a181
|
|
call void @finch.gen.emit(ptr %t167, { ptr, i64, i64 } %t184)
|
|
br label %endif6676
|
|
else6675:
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t187 = load %S.ast.Type, ptr %t186
|
|
%t188 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t187)
|
|
store { ptr, i64, i64 } %t188, ptr %a148
|
|
%t189 = load ptr, ptr %a1
|
|
%t190 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t191 = load %S.ast.Type, ptr %t190
|
|
%t192 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t189, %S.ast.Type %t191)
|
|
store { ptr, i64, i64 } %t192, ptr %a149
|
|
%t193 = load ptr, ptr %a1
|
|
%t194 = load { ptr, i64, i64 }, ptr %a148
|
|
store { ptr, i64, i64 } { ptr @.str.4290, i64 4, i64 0 }, ptr %a196
|
|
store { ptr, i64, i64 } %t194, ptr %a197
|
|
call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197)
|
|
%t198 = load { ptr, i64, i64 }, ptr %a195
|
|
store { ptr, i64, i64 } %t198, ptr %a200
|
|
store { ptr, i64, i64 } { ptr @.str.4291, i64 1, i64 0 }, ptr %a201
|
|
call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201)
|
|
%t202 = load { ptr, i64, i64 }, ptr %a199
|
|
%t203 = load ptr, ptr %a1
|
|
%t204 = load { ptr, i64, i64 }, ptr %a147
|
|
%t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t203, { ptr, i64, i64 } %t204)
|
|
store { ptr, i64, i64 } %t202, ptr %a207
|
|
store { ptr, i64, i64 } %t205, ptr %a208
|
|
call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208)
|
|
%t209 = load { ptr, i64, i64 }, ptr %a206
|
|
call void @finch.gen.emit(ptr %t193, { ptr, i64, i64 } %t209)
|
|
br label %endif6676
|
|
endif6676:
|
|
br label %endif6673
|
|
endif6673:
|
|
store { ptr, i64, i64 } { ptr @.str.4292, i64 0, i64 0 }, ptr %a210
|
|
%t211 = load ptr, ptr %a1
|
|
%t212 = icmp eq ptr %t211, null
|
|
br i1 %t212, label %panic6677, label %ok6678
|
|
panic6677:
|
|
call void @finch_panic(ptr @.str.4293, i64 3875, ptr @.str.4294)
|
|
unreachable
|
|
ok6678:
|
|
%t213 = getelementptr inbounds %S.gen.Gen, ptr %t211, i32 0, i32 27
|
|
%t214 = getelementptr inbounds %S.platform.Target, ptr %t213, i32 0, i32 1
|
|
%t215 = load i1, ptr %t214
|
|
br i1 %t215, label %then6679, label %endif6681
|
|
then6679:
|
|
store { ptr, i64, i64 } { ptr @.str.4295, i64 10, i64 0 }, ptr %a210
|
|
br label %endif6681
|
|
endif6681:
|
|
%t216 = load ptr, ptr %a1
|
|
%t217 = load %S.gen.Saved, ptr %a7
|
|
%t218 = load { ptr, i64, i64 }, ptr %a210
|
|
store { ptr, i64, i64 } { ptr @.str.4296, i64 6, i64 0 }, ptr %a220
|
|
store { ptr, i64, i64 } %t218, ptr %a221
|
|
call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221)
|
|
%t222 = load { ptr, i64, i64 }, ptr %a219
|
|
%t223 = load { ptr, i64, i64 }, ptr %a149
|
|
store { ptr, i64, i64 } %t222, ptr %a225
|
|
store { ptr, i64, i64 } %t223, ptr %a226
|
|
call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226)
|
|
%t227 = load { ptr, i64, i64 }, ptr %a224
|
|
store { ptr, i64, i64 } %t227, ptr %a229
|
|
store { ptr, i64, i64 } { ptr @.str.4297, i64 1, i64 0 }, ptr %a230
|
|
call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230)
|
|
%t231 = load { ptr, i64, i64 }, ptr %a228
|
|
%t232 = load { ptr, i64, i64 }, ptr %a148
|
|
store { ptr, i64, i64 } %t231, ptr %a234
|
|
store { ptr, i64, i64 } %t232, ptr %a235
|
|
call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235)
|
|
%t236 = load { ptr, i64, i64 }, ptr %a233
|
|
store { ptr, i64, i64 } %t236, ptr %a238
|
|
store { ptr, i64, i64 } { ptr @.str.4298, i64 2, i64 0 }, ptr %a239
|
|
call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239)
|
|
%t240 = load { ptr, i64, i64 }, ptr %a237
|
|
%t241 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1
|
|
%t242 = load { ptr, i64, i64 }, ptr %t241
|
|
store { ptr, i64, i64 } %t240, ptr %a244
|
|
store { ptr, i64, i64 } %t242, ptr %a245
|
|
call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245)
|
|
%t246 = load { ptr, i64, i64 }, ptr %a243
|
|
store { ptr, i64, i64 } %t246, ptr %a248
|
|
store { ptr, i64, i64 } { ptr @.str.4299, i64 1, i64 0 }, ptr %a249
|
|
call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249)
|
|
%t250 = load { ptr, i64, i64 }, ptr %a247
|
|
%t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4300, i64 2, i64 0 }, ptr %a252
|
|
call void @finch_str_join(ptr %a253, ptr %a3, ptr %a252)
|
|
%t254 = load { ptr, i64, i64 }, ptr %a253
|
|
store { ptr, i64, i64 } %t250, ptr %a256
|
|
store { ptr, i64, i64 } %t254, ptr %a257
|
|
call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257)
|
|
%t258 = load { ptr, i64, i64 }, ptr %a255
|
|
store { ptr, i64, i64 } %t258, ptr %a260
|
|
store { ptr, i64, i64 } { ptr @.str.4301, i64 1, i64 0 }, ptr %a261
|
|
call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261)
|
|
%t262 = load { ptr, i64, i64 }, ptr %a259
|
|
call void @finch.gen.endHelper(ptr %t216, %S.gen.Saved %t217, { ptr, i64, i64 } %t262)
|
|
%t263 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1
|
|
%t264 = load { ptr, i64, i64 }, ptr %t263
|
|
store { ptr, i64, i64 } %t264, ptr %a265
|
|
call void @finch_str_copy(ptr %a266, ptr %a265)
|
|
%t267 = load { ptr, i64, i64 }, ptr %a266
|
|
ret { ptr, i64, i64 } %t267
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a3 = alloca %S.ast.Node, align 16
|
|
%a14 = alloca %S.gen.FnSig, align 16
|
|
%a15 = alloca %S.gen.FnSig, align 16
|
|
%a17 = alloca %S.gen.FnSig, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca i64, align 16
|
|
%a48 = alloca i64, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca i64, align 16
|
|
%a105 = alloca %S.ast.Type, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a242 = alloca { ptr, i64, i64 }, align 16
|
|
%a243 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a247 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca %S.gen.Plan, align 16
|
|
%a265 = alloca %S.gen.Saved, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca i64, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca i64, align 16
|
|
%a303 = alloca %S.ast.Type, align 16
|
|
%a304 = alloca %S.ast.Type, align 16
|
|
%a306 = alloca %S.ast.Type, align 16
|
|
%a315 = alloca %S.gen.Abi, align 16
|
|
%a316 = alloca %S.gen.Abi, align 16
|
|
%a318 = alloca %S.gen.Abi, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a330 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a335 = alloca { ptr, i64, i64 }, align 16
|
|
%a339 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca { ptr, i64, i64 }, align 16
|
|
%a346 = alloca { ptr, i64, i64 }, align 16
|
|
%a347 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a352 = alloca { ptr, i64, i64 }, align 16
|
|
%a353 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a373 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a377 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a381 = alloca { ptr, i64, i64 }, align 16
|
|
%a382 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a398 = alloca { ptr, i64, i64 }, align 16
|
|
%a400 = alloca { ptr, i64, i64 }, align 16
|
|
%a401 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a414 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a423 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a428 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a441 = alloca { ptr, i64, i64 }, align 16
|
|
%a446 = alloca { ptr, i64, i64 }, align 16
|
|
%a450 = alloca i64, align 16
|
|
%a462 = alloca { ptr, i64, i64 }, align 16
|
|
%a463 = alloca { ptr, i64, i64 }, align 16
|
|
%a464 = alloca { ptr, i64, i64 }, align 16
|
|
%a467 = alloca { ptr, i64, i64 }, align 16
|
|
%a469 = alloca { ptr, i64, i64 }, align 16
|
|
%a470 = alloca { ptr, i64, i64 }, align 16
|
|
%a471 = alloca { ptr, i64, i64 }, align 16
|
|
%a487 = alloca { ptr, i64, i64 }, align 16
|
|
%a489 = alloca { ptr, i64, i64 }, align 16
|
|
%a490 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca { ptr, i64, i64 }, align 16
|
|
%a495 = alloca { ptr, i64, i64 }, align 16
|
|
%a496 = alloca { ptr, i64, i64 }, align 16
|
|
%a497 = alloca { ptr, i64, i64 }, align 16
|
|
%a499 = alloca { ptr, i64, i64 }, align 16
|
|
%a500 = alloca { ptr, i64, i64 }, align 16
|
|
%a501 = alloca { ptr, i64, i64 }, align 16
|
|
%a505 = alloca { ptr, i64, i64 }, align 16
|
|
%a507 = alloca { ptr, i64, i64 }, align 16
|
|
%a508 = alloca { ptr, i64, i64 }, align 16
|
|
%a509 = alloca { ptr, i64, i64 }, align 16
|
|
%a520 = alloca { ptr, i64, i64 }, align 16
|
|
%a521 = alloca { ptr, i64, i64 }, align 16
|
|
%a522 = alloca { ptr, i64, i64 }, align 16
|
|
%a530 = alloca { ptr, i64, i64 }, align 16
|
|
%a531 = alloca { ptr, i64, i64 }, align 16
|
|
%a532 = alloca { ptr, i64, i64 }, align 16
|
|
%a545 = alloca { ptr, i64, i64 }, align 16
|
|
%a546 = alloca { ptr, i64, i64 }, align 16
|
|
%a547 = alloca { ptr, i64, i64 }, align 16
|
|
%a549 = alloca { ptr, i64, i64 }, align 16
|
|
%a550 = alloca { ptr, i64, i64 }, align 16
|
|
%a551 = alloca { ptr, i64, i64 }, align 16
|
|
%a554 = alloca { ptr, i64, i64 }, align 16
|
|
%a556 = alloca { ptr, i64, i64 }, align 16
|
|
%a557 = alloca { ptr, i64, i64 }, align 16
|
|
%a558 = alloca { ptr, i64, i64 }, align 16
|
|
%a568 = alloca { ptr, i64, i64 }, align 16
|
|
%a569 = alloca { ptr, i64, i64 }, align 16
|
|
%a570 = alloca { ptr, i64, i64 }, align 16
|
|
%a573 = alloca { ptr, i64, i64 }, align 16
|
|
%a575 = alloca { ptr, i64, i64 }, align 16
|
|
%a576 = alloca { ptr, i64, i64 }, align 16
|
|
%a577 = alloca { ptr, i64, i64 }, align 16
|
|
%a591 = alloca { ptr, i64, i64 }, align 16
|
|
%a592 = alloca { ptr, i64, i64 }, align 16
|
|
%a593 = alloca { ptr, i64, i64 }, align 16
|
|
%a595 = alloca { ptr, i64, i64 }, align 16
|
|
%a596 = alloca { ptr, i64, i64 }, align 16
|
|
%a597 = alloca { ptr, i64, i64 }, align 16
|
|
%a601 = alloca { ptr, i64, i64 }, align 16
|
|
%a602 = alloca { ptr, i64, i64 }, align 16
|
|
%a603 = alloca { ptr, i64, i64 }, align 16
|
|
%a605 = alloca { ptr, i64, i64 }, align 16
|
|
%a606 = alloca { ptr, i64, i64 }, align 16
|
|
%a607 = alloca { ptr, i64, i64 }, align 16
|
|
%a610 = alloca { ptr, i64, i64 }, align 16
|
|
%a611 = alloca { ptr, i64, i64 }, align 16
|
|
%a613 = alloca { ptr, i64, i64 }, align 16
|
|
%a614 = alloca { ptr, i64, i64 }, align 16
|
|
%a615 = alloca { ptr, i64, i64 }, align 16
|
|
%a617 = alloca { ptr, i64, i64 }, align 16
|
|
%a618 = alloca { ptr, i64, i64 }, align 16
|
|
%a619 = alloca { ptr, i64, i64 }, align 16
|
|
%a621 = alloca { ptr, i64, i64 }, align 16
|
|
%a622 = alloca { ptr, i64, i64 }, align 16
|
|
%a626 = alloca { ptr, i64, i64 }, align 16
|
|
%a627 = alloca { ptr, i64, i64 }, align 16
|
|
%a648 = alloca { ptr, i64, i64 }, align 16
|
|
%a649 = alloca { ptr, i64, i64 }, align 16
|
|
%a654 = alloca { ptr, i64, i64 }, align 16
|
|
%a668 = alloca { ptr, i64, i64 }, align 16
|
|
%a669 = alloca { ptr, i64, i64 }, align 16
|
|
%a670 = alloca { ptr, i64, i64 }, align 16
|
|
%a672 = alloca { ptr, i64, i64 }, align 16
|
|
%a673 = alloca { ptr, i64, i64 }, align 16
|
|
%a674 = alloca { ptr, i64, i64 }, align 16
|
|
%a682 = alloca { ptr, i64, i64 }, align 16
|
|
%a683 = alloca { ptr, i64, i64 }, align 16
|
|
%a684 = alloca { ptr, i64, i64 }, align 16
|
|
%a695 = alloca { ptr, i64, i64 }, align 16
|
|
%a696 = alloca { ptr, i64, i64 }, align 16
|
|
%a697 = alloca { ptr, i64, i64 }, align 16
|
|
%a699 = alloca { ptr, i64, i64 }, align 16
|
|
%a700 = alloca { ptr, i64, i64 }, align 16
|
|
%a701 = alloca { ptr, i64, i64 }, align 16
|
|
%a706 = alloca { ptr, i64, i64 }, align 16
|
|
%a707 = alloca { ptr, i64, i64 }, align 16
|
|
%a708 = alloca { ptr, i64, i64 }, align 16
|
|
%a713 = alloca { ptr, i64, i64 }, align 16
|
|
%a714 = alloca { ptr, i64, i64 }, align 16
|
|
%a715 = alloca { ptr, i64, i64 }, align 16
|
|
%a717 = alloca { ptr, i64, i64 }, align 16
|
|
%a718 = alloca { ptr, i64, i64 }, align 16
|
|
%a719 = alloca { ptr, i64, i64 }, align 16
|
|
%a723 = alloca { ptr, i64, i64 }, align 16
|
|
%a724 = alloca { ptr, i64, i64 }, align 16
|
|
%a725 = alloca { ptr, i64, i64 }, align 16
|
|
%a727 = alloca { ptr, i64, i64 }, align 16
|
|
%a728 = alloca { ptr, i64, i64 }, align 16
|
|
%a729 = alloca { ptr, i64, i64 }, align 16
|
|
%a732 = alloca { ptr, i64, i64 }, align 16
|
|
%a733 = alloca { ptr, i64, i64 }, align 16
|
|
%a734 = alloca { ptr, i64, i64 }, align 16
|
|
%a736 = alloca { ptr, i64, i64 }, align 16
|
|
%a737 = alloca { ptr, i64, i64 }, align 16
|
|
%a738 = alloca { ptr, i64, i64 }, align 16
|
|
%a741 = alloca { ptr, i64, i64 }, align 16
|
|
%a742 = alloca { ptr, i64, i64 }, align 16
|
|
%a744 = alloca { ptr, i64, i64 }, align 16
|
|
%a745 = alloca { ptr, i64, i64 }, align 16
|
|
%a746 = alloca { ptr, i64, i64 }, align 16
|
|
%a748 = alloca { ptr, i64, i64 }, align 16
|
|
%a749 = alloca { ptr, i64, i64 }, align 16
|
|
%a750 = alloca { ptr, i64, i64 }, align 16
|
|
%a753 = alloca { ptr, i64, i64 }, align 16
|
|
%a754 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
store %S.ast.Node %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = icmp eq ptr %t4, null
|
|
br i1 %t5, label %panic6682, label %ok6683
|
|
panic6682:
|
|
call void @finch_panic(ptr @.str.4302, i64 3884, ptr @.str.4303)
|
|
unreachable
|
|
ok6683:
|
|
%t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14
|
|
%t7 = load i64, ptr %a2
|
|
%t8 = load { ptr, i64, i64 }, ptr %t6
|
|
%t9 = extractvalue { ptr, i64, i64 } %t8, 1
|
|
%t10 = icmp uge i64 %t7, %t9
|
|
br i1 %t10, label %range6684, label %inrange6685
|
|
range6684:
|
|
call void @finch_panic_index(ptr @.str.4304, i64 3884, i64 %t7, i64 %t9)
|
|
unreachable
|
|
inrange6685:
|
|
%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.4305, i64 9, i64 0 }, ptr %a22
|
|
store { ptr, i64, i64 } %t20, ptr %a23
|
|
call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a21
|
|
store { ptr, i64, i64 } %t24, ptr %a26
|
|
store { ptr, i64, i64 } { ptr @.str.4306, i64 1, i64 0 }, ptr %a27
|
|
call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a25
|
|
%t29 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1
|
|
%t30 = load { ptr, i64, i64 }, ptr %t29
|
|
store { ptr, i64, i64 } %t28, ptr %a32
|
|
store { ptr, i64, i64 } %t30, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } %t34, ptr %a35
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = icmp eq ptr %t36, null
|
|
br i1 %t37, label %panic6686, label %ok6687
|
|
panic6686:
|
|
call void @finch_panic(ptr @.str.4307, i64 3886, ptr @.str.4308)
|
|
unreachable
|
|
ok6687:
|
|
%t38 = getelementptr inbounds %S.gen.Gen, ptr %t36, i32 0, i32 36
|
|
%t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1
|
|
%t40 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.4309, i64 2, i64 0 }, ptr %a42
|
|
store { ptr, i64, i64 } %t40, ptr %a43
|
|
call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a41
|
|
store i64 -1, ptr %a45
|
|
%t46 = load i64, ptr %t39
|
|
%t47 = load ptr, ptr %t38
|
|
store i64 0, ptr %a48
|
|
br label %find.cond6688
|
|
find.cond6688:
|
|
%t49 = load i64, ptr %a48
|
|
%t50 = icmp slt i64 %t49, %t46
|
|
br i1 %t50, label %find.body6689, label %find.end6692
|
|
find.body6689:
|
|
%t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t49
|
|
%t52 = load { ptr, i64, i64 }, ptr %t51
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
store { ptr, i64, i64 } %t44, ptr %a54
|
|
%t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54)
|
|
%t56 = icmp ne i32 %t55, 0
|
|
br i1 %t56, label %find.hit6690, label %find.next6691
|
|
find.hit6690:
|
|
store i64 %t49, ptr %a45
|
|
br label %find.end6692
|
|
find.next6691:
|
|
%t57 = add i64 %t49, 1
|
|
store i64 %t57, ptr %a48
|
|
br label %find.cond6688
|
|
find.end6692:
|
|
%t58 = load i64, ptr %a45
|
|
%t59 = icmp sge i64 %t58, 0
|
|
br i1 %t59, label %then6693, label %endif6695
|
|
then6693:
|
|
%t60 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } %t60, ptr %a61
|
|
call void @finch_str_copy(ptr %a62, ptr %a61)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a62
|
|
ret { ptr, i64, i64 } %t63
|
|
endif6695:
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = icmp eq ptr %t64, null
|
|
br i1 %t65, label %panic6696, label %ok6697
|
|
panic6696:
|
|
call void @finch_panic(ptr @.str.4310, i64 3889, ptr @.str.4311)
|
|
unreachable
|
|
ok6697:
|
|
%t66 = getelementptr inbounds %S.gen.Gen, ptr %t64, i32 0, i32 36
|
|
%t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1
|
|
%t68 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.4312, i64 2, i64 0 }, ptr %a70
|
|
store { ptr, i64, i64 } %t68, ptr %a71
|
|
call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71)
|
|
%t72 = load { ptr, i64, i64 }, ptr %a69
|
|
%t73 = load i64, ptr %t67
|
|
%t74 = add i64 %t73, 1
|
|
call void @finch_arr_reserve(ptr %t66, i64 %t74, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t75 = load ptr, ptr %t66
|
|
%t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i64 %t73
|
|
store { ptr, i64, i64 } %t72, ptr %t76
|
|
store i64 %t74, ptr %t67
|
|
%t77 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2
|
|
%t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1
|
|
%t79 = load i64, ptr %t78
|
|
%t80 = icmp sgt i64 %t79, 0
|
|
br label %logic.from6698
|
|
logic.from6698:
|
|
br i1 %t80, label %logic.end6700, label %logic.rhs6699
|
|
logic.rhs6699:
|
|
%t81 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9
|
|
%t82 = load i1, ptr %t81
|
|
br label %logic.rend6701
|
|
logic.rend6701:
|
|
br label %logic.end6700
|
|
logic.end6700:
|
|
%t83 = phi i1 [ true, %logic.from6698 ], [ %t82, %logic.rend6701 ]
|
|
br i1 %t83, label %then6702, label %endif6704
|
|
then6702:
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = load %S.ast.Node, ptr %a3
|
|
%t86 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1
|
|
%t87 = load { ptr, i64, i64 }, ptr %t86
|
|
store { ptr, i64, i64 } { ptr @.str.4313, i64 5, i64 0 }, ptr %a89
|
|
store { ptr, i64, i64 } %t87, ptr %a90
|
|
call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90)
|
|
%t91 = load { ptr, i64, i64 }, ptr %a88
|
|
store { ptr, i64, i64 } %t91, ptr %a93
|
|
store { ptr, i64, i64 } { ptr @.str.4314, i64 81, i64 0 }, ptr %a94
|
|
call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94)
|
|
%t95 = load { ptr, i64, i64 }, ptr %a92
|
|
call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t95)
|
|
br label %endif6704
|
|
endif6704:
|
|
%t96 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13
|
|
store i64 0, ptr %a97
|
|
br label %each.cond6705
|
|
each.cond6705:
|
|
%t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i32 0, i32 1
|
|
%t99 = load i64, ptr %t98
|
|
%t100 = load i64, ptr %a97
|
|
%t101 = icmp slt i64 %t100, %t99
|
|
br i1 %t101, label %each.body6706, label %each.end6708
|
|
each.body6706:
|
|
%t102 = load ptr, ptr %t96
|
|
%t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 %t100
|
|
%t104 = load %S.ast.Type, ptr %t103
|
|
store %S.ast.Type %t104, ptr %a105
|
|
%t106 = load %S.ast.Type, ptr %a105
|
|
%t107 = call i1 @finch.gen.isNumber(%S.ast.Type %t106)
|
|
br label %logic.from6709
|
|
logic.from6709:
|
|
br i1 %t107, label %logic.end6711, label %logic.rhs6710
|
|
logic.rhs6710:
|
|
%t108 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 0
|
|
%t109 = load { ptr, i64, i64 }, ptr %t108
|
|
store { ptr, i64, i64 } %t109, ptr %a110
|
|
store { ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }, ptr %a111
|
|
%t112 = call i32 @finch_str_eq(ptr %a110, ptr %a111)
|
|
%t113 = icmp ne i32 %t112, 0
|
|
br label %logic.rend6712
|
|
logic.rend6712:
|
|
br label %logic.end6711
|
|
logic.end6711:
|
|
%t114 = phi i1 [ true, %logic.from6709 ], [ %t113, %logic.rend6712 ]
|
|
br label %logic.from6713
|
|
logic.from6713:
|
|
br i1 %t114, label %logic.end6715, label %logic.rhs6714
|
|
logic.rhs6714:
|
|
%t115 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 0
|
|
%t116 = load { ptr, i64, i64 }, ptr %t115
|
|
store { ptr, i64, i64 } %t116, ptr %a117
|
|
store { ptr, i64, i64 } { ptr @.str.4316, i64 4, i64 0 }, ptr %a118
|
|
%t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118)
|
|
%t120 = icmp ne i32 %t119, 0
|
|
br label %logic.rend6716
|
|
logic.rend6716:
|
|
br label %logic.end6715
|
|
logic.end6715:
|
|
%t121 = phi i1 [ true, %logic.from6713 ], [ %t120, %logic.rend6716 ]
|
|
br label %logic.from6717
|
|
logic.from6717:
|
|
br i1 %t121, label %logic.end6719, label %logic.rhs6718
|
|
logic.rhs6718:
|
|
%t122 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 0
|
|
%t123 = load { ptr, i64, i64 }, ptr %t122
|
|
store { ptr, i64, i64 } %t123, ptr %a124
|
|
store { ptr, i64, i64 } { ptr @.str.4317, i64 3, i64 0 }, ptr %a125
|
|
%t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125)
|
|
%t127 = icmp ne i32 %t126, 0
|
|
br label %logic.rend6720
|
|
logic.rend6720:
|
|
br label %logic.end6719
|
|
logic.end6719:
|
|
%t128 = phi i1 [ true, %logic.from6717 ], [ %t127, %logic.rend6720 ]
|
|
br label %logic.from6721
|
|
logic.from6721:
|
|
br i1 %t128, label %logic.end6723, label %logic.rhs6722
|
|
logic.rhs6722:
|
|
%t129 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 0
|
|
%t130 = load { ptr, i64, i64 }, ptr %t129
|
|
store { ptr, i64, i64 } %t130, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.4318, i64 6, i64 0 }, ptr %a132
|
|
%t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132)
|
|
%t134 = icmp ne i32 %t133, 0
|
|
br label %logic.from6724
|
|
logic.from6724:
|
|
br i1 %t134, label %logic.rhs6725, label %logic.end6726
|
|
logic.rhs6725:
|
|
%t135 = load ptr, ptr %a1
|
|
%t136 = icmp eq ptr %t135, null
|
|
br i1 %t136, label %panic6727, label %ok6728
|
|
panic6727:
|
|
call void @finch_panic(ptr @.str.4319, i64 3894, ptr @.str.4320)
|
|
unreachable
|
|
ok6728:
|
|
%t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 15
|
|
%t138 = load ptr, ptr %a1
|
|
%t139 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 3
|
|
%t140 = load { ptr, i64, i64 }, ptr %t139
|
|
%t141 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 2
|
|
%t142 = load { ptr, i64, i64 }, ptr %t141
|
|
%t143 = call i64 @finch.gen.findStruct(ptr %t138, { ptr, i64, i64 } %t140, { ptr, i64, i64 } %t142)
|
|
%t144 = load { ptr, i64, i64 }, ptr %t137
|
|
%t145 = extractvalue { ptr, i64, i64 } %t144, 1
|
|
%t146 = icmp uge i64 %t143, %t145
|
|
br i1 %t146, label %range6729, label %inrange6730
|
|
range6729:
|
|
call void @finch_panic_index(ptr @.str.4321, i64 3894, i64 %t143, i64 %t145)
|
|
unreachable
|
|
inrange6730:
|
|
%t147 = extractvalue { ptr, i64, i64 } %t144, 0
|
|
%t148 = getelementptr inbounds %S.gen.StructDef, ptr %t147, i64 %t143
|
|
%t149 = getelementptr inbounds %S.gen.StructDef, ptr %t148, i32 0, i32 2
|
|
%t150 = load i1, ptr %t149
|
|
br label %logic.rend6731
|
|
logic.rend6731:
|
|
br label %logic.end6726
|
|
logic.end6726:
|
|
%t151 = phi i1 [ false, %logic.from6724 ], [ %t150, %logic.rend6731 ]
|
|
br label %logic.rend6732
|
|
logic.rend6732:
|
|
br label %logic.end6723
|
|
logic.end6723:
|
|
%t152 = phi i1 [ true, %logic.from6721 ], [ %t151, %logic.rend6732 ]
|
|
%t153 = xor i1 %t152, true
|
|
br i1 %t153, label %then6733, label %endif6735
|
|
then6733:
|
|
%t154 = load ptr, ptr %a1
|
|
%t155 = load %S.ast.Node, ptr %a3
|
|
%t156 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1
|
|
%t157 = load { ptr, i64, i64 }, ptr %t156
|
|
store { ptr, i64, i64 } { ptr @.str.4322, i64 5, i64 0 }, ptr %a159
|
|
store { ptr, i64, i64 } %t157, ptr %a160
|
|
call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160)
|
|
%t161 = load { ptr, i64, i64 }, ptr %a158
|
|
store { ptr, i64, i64 } %t161, ptr %a163
|
|
store { ptr, i64, i64 } { ptr @.str.4323, i64 95, i64 0 }, ptr %a164
|
|
call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164)
|
|
%t165 = load { ptr, i64, i64 }, ptr %a162
|
|
%t166 = load %S.ast.Type, ptr %a105
|
|
%t167 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t166)
|
|
store { ptr, i64, i64 } %t165, ptr %a169
|
|
store { ptr, i64, i64 } %t167, ptr %a170
|
|
call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170)
|
|
%t171 = load { ptr, i64, i64 }, ptr %a168
|
|
call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } %t171)
|
|
br label %endif6735
|
|
endif6735:
|
|
br label %each.step6707
|
|
each.step6707:
|
|
%t172 = load i64, ptr %a97
|
|
%t173 = add i64 %t172, 1
|
|
store i64 %t173, ptr %a97
|
|
br label %each.cond6705
|
|
each.end6708:
|
|
%t174 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t175 = load %S.ast.Type, ptr %t174
|
|
%t176 = call i1 @finch.gen.isNumber(%S.ast.Type %t175)
|
|
br label %logic.from6736
|
|
logic.from6736:
|
|
br i1 %t176, label %logic.end6738, label %logic.rhs6737
|
|
logic.rhs6737:
|
|
%t177 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t178 = getelementptr inbounds %S.ast.Type, ptr %t177, i32 0, i32 0
|
|
%t179 = load { ptr, i64, i64 }, ptr %t178
|
|
store { ptr, i64, i64 } %t179, ptr %a180
|
|
store { ptr, i64, i64 } { ptr @.str.4324, i64 4, i64 0 }, ptr %a181
|
|
%t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181)
|
|
%t183 = icmp ne i32 %t182, 0
|
|
br label %logic.rend6739
|
|
logic.rend6739:
|
|
br label %logic.end6738
|
|
logic.end6738:
|
|
%t184 = phi i1 [ true, %logic.from6736 ], [ %t183, %logic.rend6739 ]
|
|
br label %logic.from6740
|
|
logic.from6740:
|
|
br i1 %t184, label %logic.end6742, label %logic.rhs6741
|
|
logic.rhs6741:
|
|
%t185 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i32 0, i32 0
|
|
%t187 = load { ptr, i64, i64 }, ptr %t186
|
|
store { ptr, i64, i64 } %t187, ptr %a188
|
|
store { ptr, i64, i64 } { ptr @.str.4325, i64 4, i64 0 }, ptr %a189
|
|
%t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189)
|
|
%t191 = icmp ne i32 %t190, 0
|
|
br label %logic.rend6743
|
|
logic.rend6743:
|
|
br label %logic.end6742
|
|
logic.end6742:
|
|
%t192 = phi i1 [ true, %logic.from6740 ], [ %t191, %logic.rend6743 ]
|
|
br label %logic.from6744
|
|
logic.from6744:
|
|
br i1 %t192, label %logic.end6746, label %logic.rhs6745
|
|
logic.rhs6745:
|
|
%t193 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t194 = getelementptr inbounds %S.ast.Type, ptr %t193, i32 0, i32 0
|
|
%t195 = load { ptr, i64, i64 }, ptr %t194
|
|
store { ptr, i64, i64 } %t195, ptr %a196
|
|
store { ptr, i64, i64 } { ptr @.str.4326, i64 3, i64 0 }, ptr %a197
|
|
%t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197)
|
|
%t199 = icmp ne i32 %t198, 0
|
|
br label %logic.rend6747
|
|
logic.rend6747:
|
|
br label %logic.end6746
|
|
logic.end6746:
|
|
%t200 = phi i1 [ true, %logic.from6744 ], [ %t199, %logic.rend6747 ]
|
|
br label %logic.from6748
|
|
logic.from6748:
|
|
br i1 %t200, label %logic.end6750, label %logic.rhs6749
|
|
logic.rhs6749:
|
|
%t201 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t202 = getelementptr inbounds %S.ast.Type, ptr %t201, i32 0, i32 0
|
|
%t203 = load { ptr, i64, i64 }, ptr %t202
|
|
store { ptr, i64, i64 } %t203, ptr %a204
|
|
store { ptr, i64, i64 } { ptr @.str.4327, i64 4, i64 0 }, ptr %a205
|
|
%t206 = call i32 @finch_str_eq(ptr %a204, ptr %a205)
|
|
%t207 = icmp ne i32 %t206, 0
|
|
br label %logic.rend6751
|
|
logic.rend6751:
|
|
br label %logic.end6750
|
|
logic.end6750:
|
|
%t208 = phi i1 [ true, %logic.from6748 ], [ %t207, %logic.rend6751 ]
|
|
br label %logic.from6752
|
|
logic.from6752:
|
|
br i1 %t208, label %logic.end6754, label %logic.rhs6753
|
|
logic.rhs6753:
|
|
%t209 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t210 = getelementptr inbounds %S.ast.Type, ptr %t209, i32 0, i32 0
|
|
%t211 = load { ptr, i64, i64 }, ptr %t210
|
|
store { ptr, i64, i64 } %t211, ptr %a212
|
|
store { ptr, i64, i64 } { ptr @.str.4328, i64 6, i64 0 }, ptr %a213
|
|
%t214 = call i32 @finch_str_eq(ptr %a212, ptr %a213)
|
|
%t215 = icmp ne i32 %t214, 0
|
|
br label %logic.from6755
|
|
logic.from6755:
|
|
br i1 %t215, label %logic.rhs6756, label %logic.end6757
|
|
logic.rhs6756:
|
|
%t216 = load ptr, ptr %a1
|
|
%t217 = icmp eq ptr %t216, null
|
|
br i1 %t217, label %panic6758, label %ok6759
|
|
panic6758:
|
|
call void @finch_panic(ptr @.str.4329, i64 3898, ptr @.str.4330)
|
|
unreachable
|
|
ok6759:
|
|
%t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 15
|
|
%t219 = load ptr, ptr %a1
|
|
%t220 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t221 = getelementptr inbounds %S.ast.Type, ptr %t220, i32 0, i32 3
|
|
%t222 = load { ptr, i64, i64 }, ptr %t221
|
|
%t223 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i32 0, i32 2
|
|
%t225 = load { ptr, i64, i64 }, ptr %t224
|
|
%t226 = call i64 @finch.gen.findStruct(ptr %t219, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t225)
|
|
%t227 = load { ptr, i64, i64 }, ptr %t218
|
|
%t228 = extractvalue { ptr, i64, i64 } %t227, 1
|
|
%t229 = icmp uge i64 %t226, %t228
|
|
br i1 %t229, label %range6760, label %inrange6761
|
|
range6760:
|
|
call void @finch_panic_index(ptr @.str.4331, i64 3898, i64 %t226, i64 %t228)
|
|
unreachable
|
|
inrange6761:
|
|
%t230 = extractvalue { ptr, i64, i64 } %t227, 0
|
|
%t231 = getelementptr inbounds %S.gen.StructDef, ptr %t230, i64 %t226
|
|
%t232 = getelementptr inbounds %S.gen.StructDef, ptr %t231, i32 0, i32 2
|
|
%t233 = load i1, ptr %t232
|
|
br label %logic.rend6762
|
|
logic.rend6762:
|
|
br label %logic.end6757
|
|
logic.end6757:
|
|
%t234 = phi i1 [ false, %logic.from6755 ], [ %t233, %logic.rend6762 ]
|
|
br label %logic.rend6763
|
|
logic.rend6763:
|
|
br label %logic.end6754
|
|
logic.end6754:
|
|
%t235 = phi i1 [ true, %logic.from6752 ], [ %t234, %logic.rend6763 ]
|
|
%t236 = xor i1 %t235, true
|
|
br i1 %t236, label %then6764, label %endif6766
|
|
then6764:
|
|
%t237 = load ptr, ptr %a1
|
|
%t238 = load %S.ast.Node, ptr %a3
|
|
%t239 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1
|
|
%t240 = load { ptr, i64, i64 }, ptr %t239
|
|
store { ptr, i64, i64 } { ptr @.str.4332, i64 5, i64 0 }, ptr %a242
|
|
store { ptr, i64, i64 } %t240, ptr %a243
|
|
call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243)
|
|
%t244 = load { ptr, i64, i64 }, ptr %a241
|
|
store { ptr, i64, i64 } %t244, ptr %a246
|
|
store { ptr, i64, i64 } { ptr @.str.4333, i64 38, i64 0 }, ptr %a247
|
|
call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247)
|
|
%t248 = load { ptr, i64, i64 }, ptr %a245
|
|
%t249 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t250 = load %S.ast.Type, ptr %t249
|
|
%t251 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t250)
|
|
store { ptr, i64, i64 } %t248, ptr %a253
|
|
store { ptr, i64, i64 } %t251, ptr %a254
|
|
call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254)
|
|
%t255 = load { ptr, i64, i64 }, ptr %a252
|
|
call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t255)
|
|
br label %endif6766
|
|
endif6766:
|
|
%t256 = load ptr, ptr %a1
|
|
%t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t258 = load %S.ast.Type, ptr %t257
|
|
%t259 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13
|
|
%t260 = load { ptr, i64, i64 }, ptr %t259
|
|
%t261 = call %S.gen.Plan @finch.gen.makePlan(ptr %t256, %S.ast.Type %t258, { ptr, i64, i64 } %t260)
|
|
store %S.gen.Plan %t261, ptr %a262
|
|
%t263 = load ptr, ptr %a1
|
|
%t264 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t263)
|
|
store %S.gen.Saved %t264, ptr %a265
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a266
|
|
store i64 0, ptr %a267
|
|
store { ptr, i64, i64 } { ptr @.str.4334, i64 0, i64 0 }, ptr %a268
|
|
%t269 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 3
|
|
%t270 = load i1, ptr %t269
|
|
br i1 %t270, label %then6767, label %endif6769
|
|
then6767:
|
|
%t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1
|
|
%t272 = load ptr, ptr %a1
|
|
%t273 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t274 = load %S.ast.Type, ptr %t273
|
|
%t275 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t272, %S.ast.Type %t274)
|
|
store { ptr, i64, i64 } { ptr @.str.4335, i64 9, i64 0 }, ptr %a277
|
|
store { ptr, i64, i64 } %t275, ptr %a278
|
|
call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278)
|
|
%t279 = load { ptr, i64, i64 }, ptr %a276
|
|
store { ptr, i64, i64 } %t279, ptr %a281
|
|
store { ptr, i64, i64 } { ptr @.str.4336, i64 14, i64 0 }, ptr %a282
|
|
call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282)
|
|
%t283 = load { ptr, i64, i64 }, ptr %a280
|
|
%t284 = load i64, ptr %t271
|
|
%t285 = add i64 %t284, 1
|
|
call void @finch_arr_reserve(ptr %a266, i64 %t285, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t286 = load ptr, ptr %a266
|
|
%t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t286, i64 %t284
|
|
store { ptr, i64, i64 } %t283, ptr %t287
|
|
store i64 %t285, ptr %t271
|
|
store { ptr, i64, i64 } { ptr @.str.4337, i64 3, i64 0 }, ptr %a268
|
|
store i64 1, ptr %a267
|
|
br label %endif6769
|
|
endif6769:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a288
|
|
%t289 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13
|
|
%t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1
|
|
%t291 = load i64, ptr %t290
|
|
store i64 0, ptr %a292
|
|
br label %for.cond6770
|
|
for.cond6770:
|
|
%t293 = load i64, ptr %a292
|
|
%t294 = icmp slt i64 %t293, %t291
|
|
br i1 %t294, label %for.body6771, label %for.end6773
|
|
for.body6771:
|
|
%t295 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13
|
|
%t296 = load i64, ptr %a292
|
|
%t297 = load { ptr, i64, i64 }, ptr %t295
|
|
%t298 = extractvalue { ptr, i64, i64 } %t297, 1
|
|
%t299 = icmp uge i64 %t296, %t298
|
|
br i1 %t299, label %range6774, label %inrange6775
|
|
range6774:
|
|
call void @finch_panic_index(ptr @.str.4338, i64 3913, i64 %t296, i64 %t298)
|
|
unreachable
|
|
inrange6775:
|
|
%t300 = extractvalue { ptr, i64, i64 } %t297, 0
|
|
%t301 = getelementptr inbounds %S.ast.Type, ptr %t300, i64 %t296
|
|
%t302 = load %S.ast.Type, ptr %t301
|
|
store %S.ast.Type %t302, ptr %a303
|
|
call void @finch.copy.S_ast_Type(ptr %a304, ptr %a303)
|
|
%t305 = load %S.ast.Type, ptr %a304
|
|
store %S.ast.Type %t305, ptr %a306
|
|
%t307 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 1
|
|
%t308 = load i64, ptr %a292
|
|
%t309 = load { ptr, i64, i64 }, ptr %t307
|
|
%t310 = extractvalue { ptr, i64, i64 } %t309, 1
|
|
%t311 = icmp uge i64 %t308, %t310
|
|
br i1 %t311, label %range6776, label %inrange6777
|
|
range6776:
|
|
call void @finch_panic_index(ptr @.str.4339, i64 3914, i64 %t308, i64 %t310)
|
|
unreachable
|
|
inrange6777:
|
|
%t312 = extractvalue { ptr, i64, i64 } %t309, 0
|
|
%t313 = getelementptr inbounds %S.gen.Abi, ptr %t312, i64 %t308
|
|
%t314 = load %S.gen.Abi, ptr %t313
|
|
store %S.gen.Abi %t314, ptr %a315
|
|
call void @finch.copy.S_gen_Abi(ptr %a316, ptr %a315)
|
|
%t317 = load %S.gen.Abi, ptr %a316
|
|
store %S.gen.Abi %t317, ptr %a318
|
|
%t319 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 0
|
|
%t320 = load { ptr, i64, i64 }, ptr %t319
|
|
store { ptr, i64, i64 } %t320, ptr %a321
|
|
store { ptr, i64, i64 } { ptr @.str.4340, i64 6, i64 0 }, ptr %a322
|
|
%t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322)
|
|
%t324 = icmp ne i32 %t323, 0
|
|
br i1 %t324, label %then6778, label %else6779
|
|
then6778:
|
|
%t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1
|
|
%t326 = load ptr, ptr %a1
|
|
%t327 = load %S.ast.Type, ptr %a306
|
|
%t328 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t326, %S.ast.Type %t327)
|
|
store { ptr, i64, i64 } { ptr @.str.4341, i64 10, i64 0 }, ptr %a330
|
|
store { ptr, i64, i64 } %t328, ptr %a331
|
|
call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331)
|
|
%t332 = load { ptr, i64, i64 }, ptr %a329
|
|
store { ptr, i64, i64 } %t332, ptr %a334
|
|
store { ptr, i64, i64 } { ptr @.str.4342, i64 8, i64 0 }, ptr %a335
|
|
call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335)
|
|
%t336 = load { ptr, i64, i64 }, ptr %a333
|
|
%t337 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 3
|
|
%t338 = load i64, ptr %t337
|
|
call void @finch_str_from_int(ptr %a339, i64 %t338)
|
|
%t340 = load { ptr, i64, i64 }, ptr %a339
|
|
store { ptr, i64, i64 } %t336, ptr %a342
|
|
store { ptr, i64, i64 } %t340, ptr %a343
|
|
call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343)
|
|
%t344 = load { ptr, i64, i64 }, ptr %a341
|
|
store { ptr, i64, i64 } %t344, ptr %a346
|
|
store { ptr, i64, i64 } { ptr @.str.4343, i64 3, i64 0 }, ptr %a347
|
|
call void @finch_str_concat(ptr %a345, ptr %a346, ptr %a347)
|
|
%t348 = load { ptr, i64, i64 }, ptr %a345
|
|
%t349 = load i64, ptr %a267
|
|
call void @finch_str_from_int(ptr %a350, i64 %t349)
|
|
%t351 = load { ptr, i64, i64 }, ptr %a350
|
|
store { ptr, i64, i64 } %t348, ptr %a353
|
|
store { ptr, i64, i64 } %t351, ptr %a354
|
|
call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354)
|
|
%t355 = load { ptr, i64, i64 }, ptr %a352
|
|
%t356 = load i64, ptr %t325
|
|
%t357 = add i64 %t356, 1
|
|
call void @finch_arr_reserve(ptr %a266, i64 %t357, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t358 = load ptr, ptr %a266
|
|
%t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i64 %t356
|
|
store { ptr, i64, i64 } %t355, ptr %t359
|
|
store i64 %t357, ptr %t325
|
|
%t360 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1
|
|
%t361 = load ptr, ptr %a1
|
|
%t362 = load %S.ast.Type, ptr %a306
|
|
%t363 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t361, %S.ast.Type %t362)
|
|
store { ptr, i64, i64 } %t363, ptr %a365
|
|
store { ptr, i64, i64 } { ptr @.str.4344, i64 1, i64 0 }, ptr %a366
|
|
call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366)
|
|
%t367 = load { ptr, i64, i64 }, ptr %a364
|
|
%t368 = load ptr, ptr %a1
|
|
%t369 = load ptr, ptr %a1
|
|
%t370 = load %S.ast.Type, ptr %a306
|
|
%t371 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t369, %S.ast.Type %t370)
|
|
%t372 = load i64, ptr %a267
|
|
call void @finch_str_from_int(ptr %a373, i64 %t372)
|
|
%t374 = load { ptr, i64, i64 }, ptr %a373
|
|
store { ptr, i64, i64 } { ptr @.str.4345, i64 2, i64 0 }, ptr %a376
|
|
store { ptr, i64, i64 } %t374, ptr %a377
|
|
call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377)
|
|
%t378 = load { ptr, i64, i64 }, ptr %a375
|
|
%t379 = call { ptr, i64, i64 } @finch.gen.load(ptr %t368, { ptr, i64, i64 } %t371, { ptr, i64, i64 } %t378)
|
|
store { ptr, i64, i64 } %t367, ptr %a381
|
|
store { ptr, i64, i64 } %t379, ptr %a382
|
|
call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382)
|
|
%t383 = load { ptr, i64, i64 }, ptr %a380
|
|
%t384 = load i64, ptr %t360
|
|
%t385 = add i64 %t384, 1
|
|
call void @finch_arr_reserve(ptr %a288, i64 %t385, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t386 = load ptr, ptr %a288
|
|
%t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i64 %t384
|
|
store { ptr, i64, i64 } %t383, ptr %t387
|
|
store i64 %t385, ptr %t360
|
|
%t388 = load i64, ptr %a267
|
|
%t389 = add i64 %t388, 1
|
|
store i64 %t389, ptr %a267
|
|
br label %endif6780
|
|
else6779:
|
|
%t390 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 0
|
|
%t391 = load { ptr, i64, i64 }, ptr %t390
|
|
store { ptr, i64, i64 } %t391, ptr %a392
|
|
store { ptr, i64, i64 } { ptr @.str.4346, i64 8, i64 0 }, ptr %a393
|
|
%t394 = call i32 @finch_str_eq(ptr %a392, ptr %a393)
|
|
%t395 = icmp ne i32 %t394, 0
|
|
br i1 %t395, label %then6781, label %else6782
|
|
then6781:
|
|
%t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1
|
|
%t397 = load i64, ptr %a267
|
|
call void @finch_str_from_int(ptr %a398, i64 %t397)
|
|
%t399 = load { ptr, i64, i64 }, ptr %a398
|
|
store { ptr, i64, i64 } { ptr @.str.4347, i64 6, i64 0 }, ptr %a401
|
|
store { ptr, i64, i64 } %t399, ptr %a402
|
|
call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402)
|
|
%t403 = load { ptr, i64, i64 }, ptr %a400
|
|
%t404 = load i64, ptr %t396
|
|
%t405 = add i64 %t404, 1
|
|
call void @finch_arr_reserve(ptr %a266, i64 %t405, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t406 = load ptr, ptr %a266
|
|
%t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t404
|
|
store { ptr, i64, i64 } %t403, ptr %t407
|
|
store i64 %t405, ptr %t396
|
|
%t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1
|
|
%t409 = load ptr, ptr %a1
|
|
%t410 = load %S.ast.Type, ptr %a306
|
|
%t411 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t409, %S.ast.Type %t410)
|
|
store { ptr, i64, i64 } %t411, ptr %a413
|
|
store { ptr, i64, i64 } { ptr @.str.4348, i64 1, i64 0 }, ptr %a414
|
|
call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414)
|
|
%t415 = load { ptr, i64, i64 }, ptr %a412
|
|
%t416 = load ptr, ptr %a1
|
|
%t417 = load ptr, ptr %a1
|
|
%t418 = load %S.ast.Type, ptr %a306
|
|
%t419 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t417, %S.ast.Type %t418)
|
|
%t420 = load i64, ptr %a267
|
|
call void @finch_str_from_int(ptr %a421, i64 %t420)
|
|
%t422 = load { ptr, i64, i64 }, ptr %a421
|
|
store { ptr, i64, i64 } { ptr @.str.4349, i64 2, i64 0 }, ptr %a424
|
|
store { ptr, i64, i64 } %t422, ptr %a425
|
|
call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425)
|
|
%t426 = load { ptr, i64, i64 }, ptr %a423
|
|
%t427 = call { ptr, i64, i64 } @finch.gen.load(ptr %t416, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t426)
|
|
store { ptr, i64, i64 } %t415, ptr %a429
|
|
store { ptr, i64, i64 } %t427, ptr %a430
|
|
call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430)
|
|
%t431 = load { ptr, i64, i64 }, ptr %a428
|
|
%t432 = load i64, ptr %t408
|
|
%t433 = add i64 %t432, 1
|
|
call void @finch_arr_reserve(ptr %a288, i64 %t433, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t434 = load ptr, ptr %a288
|
|
%t435 = getelementptr inbounds { ptr, i64, i64 }, ptr %t434, i64 %t432
|
|
store { ptr, i64, i64 } %t431, ptr %t435
|
|
store i64 %t433, ptr %t408
|
|
%t436 = load i64, ptr %a267
|
|
%t437 = add i64 %t436, 1
|
|
store i64 %t437, ptr %a267
|
|
br label %endif6783
|
|
else6782:
|
|
%t438 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 0
|
|
%t439 = load { ptr, i64, i64 }, ptr %t438
|
|
store { ptr, i64, i64 } %t439, ptr %a440
|
|
store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a441
|
|
%t442 = call i32 @finch_str_eq(ptr %a440, ptr %a441)
|
|
%t443 = icmp ne i32 %t442, 0
|
|
br i1 %t443, label %then6784, label %else6785
|
|
then6784:
|
|
%t444 = load ptr, ptr %a1
|
|
%t445 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t444, { ptr, i64, i64 } { ptr @.str.4351, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t445, ptr %a446
|
|
%t447 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 1
|
|
%t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i32 0, i32 1
|
|
%t449 = load i64, ptr %t448
|
|
store i64 0, ptr %a450
|
|
br label %for.cond6787
|
|
for.cond6787:
|
|
%t451 = load i64, ptr %a450
|
|
%t452 = icmp slt i64 %t451, %t449
|
|
br i1 %t452, label %for.body6788, label %for.end6790
|
|
for.body6788:
|
|
%t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1
|
|
%t454 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 1
|
|
%t455 = load i64, ptr %a450
|
|
%t456 = load { ptr, i64, i64 }, ptr %t454
|
|
%t457 = extractvalue { ptr, i64, i64 } %t456, 1
|
|
%t458 = icmp uge i64 %t455, %t457
|
|
br i1 %t458, label %range6791, label %inrange6792
|
|
range6791:
|
|
call void @finch_panic_index(ptr @.str.4352, i64 3926, i64 %t455, i64 %t457)
|
|
unreachable
|
|
inrange6792:
|
|
%t459 = extractvalue { ptr, i64, i64 } %t456, 0
|
|
%t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %t459, i64 %t455
|
|
%t461 = load { ptr, i64, i64 }, ptr %t460
|
|
store { ptr, i64, i64 } %t461, ptr %a463
|
|
store { ptr, i64, i64 } { ptr @.str.4353, i64 3, i64 0 }, ptr %a464
|
|
call void @finch_str_concat(ptr %a462, ptr %a463, ptr %a464)
|
|
%t465 = load { ptr, i64, i64 }, ptr %a462
|
|
%t466 = load i64, ptr %a267
|
|
call void @finch_str_from_int(ptr %a467, i64 %t466)
|
|
%t468 = load { ptr, i64, i64 }, ptr %a467
|
|
store { ptr, i64, i64 } %t465, ptr %a470
|
|
store { ptr, i64, i64 } %t468, ptr %a471
|
|
call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471)
|
|
%t472 = load { ptr, i64, i64 }, ptr %a469
|
|
%t473 = load i64, ptr %t453
|
|
%t474 = add i64 %t473, 1
|
|
call void @finch_arr_reserve(ptr %a266, i64 %t474, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t475 = load ptr, ptr %a266
|
|
%t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 %t473
|
|
store { ptr, i64, i64 } %t472, ptr %t476
|
|
store i64 %t474, ptr %t453
|
|
%t477 = load ptr, ptr %a1
|
|
%t478 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 1
|
|
%t479 = load i64, ptr %a450
|
|
%t480 = load { ptr, i64, i64 }, ptr %t478
|
|
%t481 = extractvalue { ptr, i64, i64 } %t480, 1
|
|
%t482 = icmp uge i64 %t479, %t481
|
|
br i1 %t482, label %range6793, label %inrange6794
|
|
range6793:
|
|
call void @finch_panic_index(ptr @.str.4354, i64 3927, i64 %t479, i64 %t481)
|
|
unreachable
|
|
inrange6794:
|
|
%t483 = extractvalue { ptr, i64, i64 } %t480, 0
|
|
%t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t479
|
|
%t485 = load { ptr, i64, i64 }, ptr %t484
|
|
%t486 = load i64, ptr %a267
|
|
call void @finch_str_from_int(ptr %a487, i64 %t486)
|
|
%t488 = load { ptr, i64, i64 }, ptr %a487
|
|
store { ptr, i64, i64 } { ptr @.str.4355, i64 2, i64 0 }, ptr %a490
|
|
store { ptr, i64, i64 } %t488, ptr %a491
|
|
call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491)
|
|
%t492 = load { ptr, i64, i64 }, ptr %a489
|
|
%t493 = load ptr, ptr %a1
|
|
%t494 = load { ptr, i64, i64 }, ptr %a446
|
|
store { ptr, i64, i64 } { ptr @.str.4356, i64 31, i64 0 }, ptr %a496
|
|
store { ptr, i64, i64 } %t494, ptr %a497
|
|
call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497)
|
|
%t498 = load { ptr, i64, i64 }, ptr %a495
|
|
store { ptr, i64, i64 } %t498, ptr %a500
|
|
store { ptr, i64, i64 } { ptr @.str.4357, i64 6, i64 0 }, ptr %a501
|
|
call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501)
|
|
%t502 = load { ptr, i64, i64 }, ptr %a499
|
|
%t503 = load i64, ptr %a450
|
|
%t504 = mul i64 8, %t503
|
|
call void @finch_str_from_int(ptr %a505, i64 %t504)
|
|
%t506 = load { ptr, i64, i64 }, ptr %a505
|
|
store { ptr, i64, i64 } %t502, ptr %a508
|
|
store { ptr, i64, i64 } %t506, ptr %a509
|
|
call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509)
|
|
%t510 = load { ptr, i64, i64 }, ptr %a507
|
|
%t511 = call { ptr, i64, i64 } @finch.gen.op(ptr %t493, { ptr, i64, i64 } %t510)
|
|
call void @finch.gen.store(ptr %t477, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t492, { ptr, i64, i64 } %t511)
|
|
%t512 = load i64, ptr %a267
|
|
%t513 = add i64 %t512, 1
|
|
store i64 %t513, ptr %a267
|
|
br label %for.step6789
|
|
for.step6789:
|
|
%t514 = load i64, ptr %a450
|
|
%t515 = add i64 %t514, 1
|
|
store i64 %t515, ptr %a450
|
|
br label %for.cond6787
|
|
for.end6790:
|
|
%t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1
|
|
%t517 = load ptr, ptr %a1
|
|
%t518 = load %S.ast.Type, ptr %a306
|
|
%t519 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t517, %S.ast.Type %t518)
|
|
store { ptr, i64, i64 } %t519, ptr %a521
|
|
store { ptr, i64, i64 } { ptr @.str.4358, i64 1, i64 0 }, ptr %a522
|
|
call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522)
|
|
%t523 = load { ptr, i64, i64 }, ptr %a520
|
|
%t524 = load ptr, ptr %a1
|
|
%t525 = load ptr, ptr %a1
|
|
%t526 = load %S.ast.Type, ptr %a306
|
|
%t527 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t525, %S.ast.Type %t526)
|
|
%t528 = load { ptr, i64, i64 }, ptr %a446
|
|
%t529 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t528)
|
|
store { ptr, i64, i64 } %t523, ptr %a531
|
|
store { ptr, i64, i64 } %t529, ptr %a532
|
|
call void @finch_str_concat(ptr %a530, ptr %a531, ptr %a532)
|
|
%t533 = load { ptr, i64, i64 }, ptr %a530
|
|
%t534 = load i64, ptr %t516
|
|
%t535 = add i64 %t534, 1
|
|
call void @finch_arr_reserve(ptr %a288, i64 %t535, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t536 = load ptr, ptr %a288
|
|
%t537 = getelementptr inbounds { ptr, i64, i64 }, ptr %t536, i64 %t534
|
|
store { ptr, i64, i64 } %t533, ptr %t537
|
|
store i64 %t535, ptr %t516
|
|
br label %endif6786
|
|
else6785:
|
|
%t538 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1
|
|
%t539 = load ptr, ptr %a1
|
|
%t540 = load %S.ast.Type, ptr %a306
|
|
%t541 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t539, %S.ast.Type %t540)
|
|
%t542 = load ptr, ptr %a1
|
|
%t543 = load %S.ast.Type, ptr %a306
|
|
%t544 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t542, %S.ast.Type %t543)
|
|
store { ptr, i64, i64 } %t541, ptr %a546
|
|
store { ptr, i64, i64 } %t544, ptr %a547
|
|
call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547)
|
|
%t548 = load { ptr, i64, i64 }, ptr %a545
|
|
store { ptr, i64, i64 } %t548, ptr %a550
|
|
store { ptr, i64, i64 } { ptr @.str.4359, i64 3, i64 0 }, ptr %a551
|
|
call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551)
|
|
%t552 = load { ptr, i64, i64 }, ptr %a549
|
|
%t553 = load i64, ptr %a267
|
|
call void @finch_str_from_int(ptr %a554, i64 %t553)
|
|
%t555 = load { ptr, i64, i64 }, ptr %a554
|
|
store { ptr, i64, i64 } %t552, ptr %a557
|
|
store { ptr, i64, i64 } %t555, ptr %a558
|
|
call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558)
|
|
%t559 = load { ptr, i64, i64 }, ptr %a556
|
|
%t560 = load i64, ptr %t538
|
|
%t561 = add i64 %t560, 1
|
|
call void @finch_arr_reserve(ptr %a266, i64 %t561, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t562 = load ptr, ptr %a266
|
|
%t563 = getelementptr inbounds { ptr, i64, i64 }, ptr %t562, i64 %t560
|
|
store { ptr, i64, i64 } %t559, ptr %t563
|
|
store i64 %t561, ptr %t538
|
|
%t564 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1
|
|
%t565 = load ptr, ptr %a1
|
|
%t566 = load %S.ast.Type, ptr %a306
|
|
%t567 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t565, %S.ast.Type %t566)
|
|
store { ptr, i64, i64 } %t567, ptr %a569
|
|
store { ptr, i64, i64 } { ptr @.str.4360, i64 3, i64 0 }, ptr %a570
|
|
call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570)
|
|
%t571 = load { ptr, i64, i64 }, ptr %a568
|
|
%t572 = load i64, ptr %a267
|
|
call void @finch_str_from_int(ptr %a573, i64 %t572)
|
|
%t574 = load { ptr, i64, i64 }, ptr %a573
|
|
store { ptr, i64, i64 } %t571, ptr %a576
|
|
store { ptr, i64, i64 } %t574, ptr %a577
|
|
call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577)
|
|
%t578 = load { ptr, i64, i64 }, ptr %a575
|
|
%t579 = load i64, ptr %t564
|
|
%t580 = add i64 %t579, 1
|
|
call void @finch_arr_reserve(ptr %a288, i64 %t580, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t581 = load ptr, ptr %a288
|
|
%t582 = getelementptr inbounds { ptr, i64, i64 }, ptr %t581, i64 %t579
|
|
store { ptr, i64, i64 } %t578, ptr %t582
|
|
store i64 %t580, ptr %t564
|
|
%t583 = load i64, ptr %a267
|
|
%t584 = add i64 %t583, 1
|
|
store i64 %t584, ptr %a267
|
|
br label %endif6786
|
|
endif6786:
|
|
br label %endif6783
|
|
endif6783:
|
|
br label %endif6780
|
|
endif6780:
|
|
br label %for.step6772
|
|
for.step6772:
|
|
%t585 = load i64, ptr %a292
|
|
%t586 = add i64 %t585, 1
|
|
store i64 %t586, ptr %a292
|
|
br label %for.cond6770
|
|
for.end6773:
|
|
%t587 = load ptr, ptr %a1
|
|
%t588 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t589 = load %S.ast.Type, ptr %t588
|
|
%t590 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t587, %S.ast.Type %t589)
|
|
store { ptr, i64, i64 } { ptr @.str.4361, i64 5, i64 0 }, ptr %a592
|
|
store { ptr, i64, i64 } %t590, ptr %a593
|
|
call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593)
|
|
%t594 = load { ptr, i64, i64 }, ptr %a591
|
|
store { ptr, i64, i64 } %t594, ptr %a596
|
|
store { ptr, i64, i64 } { ptr @.str.4362, i64 1, i64 0 }, ptr %a597
|
|
call void @finch_str_concat(ptr %a595, ptr %a596, ptr %a597)
|
|
%t598 = load { ptr, i64, i64 }, ptr %a595
|
|
%t599 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11
|
|
%t600 = load { ptr, i64, i64 }, ptr %t599
|
|
store { ptr, i64, i64 } %t598, ptr %a602
|
|
store { ptr, i64, i64 } %t600, ptr %a603
|
|
call void @finch_str_concat(ptr %a601, ptr %a602, ptr %a603)
|
|
%t604 = load { ptr, i64, i64 }, ptr %a601
|
|
store { ptr, i64, i64 } %t604, ptr %a606
|
|
store { ptr, i64, i64 } { ptr @.str.4363, i64 1, i64 0 }, ptr %a607
|
|
call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607)
|
|
%t608 = load { ptr, i64, i64 }, ptr %a605
|
|
%t609 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4364, i64 2, i64 0 }, ptr %a610
|
|
call void @finch_str_join(ptr %a611, ptr %a288, ptr %a610)
|
|
%t612 = load { ptr, i64, i64 }, ptr %a611
|
|
store { ptr, i64, i64 } %t608, ptr %a614
|
|
store { ptr, i64, i64 } %t612, ptr %a615
|
|
call void @finch_str_concat(ptr %a613, ptr %a614, ptr %a615)
|
|
%t616 = load { ptr, i64, i64 }, ptr %a613
|
|
store { ptr, i64, i64 } %t616, ptr %a618
|
|
store { ptr, i64, i64 } { ptr @.str.4365, i64 1, i64 0 }, ptr %a619
|
|
call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619)
|
|
%t620 = load { ptr, i64, i64 }, ptr %a617
|
|
store { ptr, i64, i64 } %t620, ptr %a621
|
|
store { ptr, i64, i64 } { ptr @.str.4366, i64 0, i64 0 }, ptr %a622
|
|
%t623 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t624 = getelementptr inbounds %S.ast.Type, ptr %t623, i32 0, i32 0
|
|
%t625 = load { ptr, i64, i64 }, ptr %t624
|
|
store { ptr, i64, i64 } %t625, ptr %a626
|
|
store { ptr, i64, i64 } { ptr @.str.4367, i64 4, i64 0 }, ptr %a627
|
|
%t628 = call i32 @finch_str_eq(ptr %a626, ptr %a627)
|
|
%t629 = icmp ne i32 %t628, 0
|
|
br i1 %t629, label %then6795, label %else6796
|
|
then6795:
|
|
%t630 = load ptr, ptr %a1
|
|
%t631 = load { ptr, i64, i64 }, ptr %a621
|
|
call void @finch.gen.emit(ptr %t630, { ptr, i64, i64 } %t631)
|
|
%t632 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t632, { ptr, i64, i64 } { ptr @.str.4368, i64 8, i64 0 })
|
|
br label %endif6797
|
|
else6796:
|
|
%t633 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 3
|
|
%t634 = load i1, ptr %t633
|
|
br i1 %t634, label %then6798, label %else6799
|
|
then6798:
|
|
%t635 = load ptr, ptr %a1
|
|
%t636 = load ptr, ptr %a1
|
|
%t637 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t638 = load %S.ast.Type, ptr %t637
|
|
%t639 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t636, %S.ast.Type %t638)
|
|
%t640 = load ptr, ptr %a1
|
|
%t641 = load { ptr, i64, i64 }, ptr %a621
|
|
%t642 = call { ptr, i64, i64 } @finch.gen.op(ptr %t640, { ptr, i64, i64 } %t641)
|
|
%t643 = load { ptr, i64, i64 }, ptr %a268
|
|
call void @finch.gen.store(ptr %t635, { ptr, i64, i64 } %t639, { ptr, i64, i64 } %t642, { ptr, i64, i64 } %t643)
|
|
%t644 = load ptr, ptr %a1
|
|
call void @finch.gen.emit(ptr %t644, { ptr, i64, i64 } { ptr @.str.4369, i64 8, i64 0 })
|
|
br label %endif6800
|
|
else6799:
|
|
%t645 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 0
|
|
%t646 = getelementptr inbounds %S.gen.Abi, ptr %t645, i32 0, i32 0
|
|
%t647 = load { ptr, i64, i64 }, ptr %t646
|
|
store { ptr, i64, i64 } %t647, ptr %a648
|
|
store { ptr, i64, i64 } { ptr @.str.4370, i64 6, i64 0 }, ptr %a649
|
|
%t650 = call i32 @finch_str_eq(ptr %a648, ptr %a649)
|
|
%t651 = icmp ne i32 %t650, 0
|
|
br i1 %t651, label %then6801, label %else6802
|
|
then6801:
|
|
%t652 = load ptr, ptr %a1
|
|
%t653 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t652, { ptr, i64, i64 } { ptr @.str.4371, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t653, ptr %a654
|
|
%t655 = load ptr, ptr %a1
|
|
%t656 = load ptr, ptr %a1
|
|
%t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t658 = load %S.ast.Type, ptr %t657
|
|
%t659 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t656, %S.ast.Type %t658)
|
|
%t660 = load ptr, ptr %a1
|
|
%t661 = load { ptr, i64, i64 }, ptr %a621
|
|
%t662 = call { ptr, i64, i64 } @finch.gen.op(ptr %t660, { ptr, i64, i64 } %t661)
|
|
%t663 = load { ptr, i64, i64 }, ptr %a654
|
|
call void @finch.gen.store(ptr %t655, { ptr, i64, i64 } %t659, { ptr, i64, i64 } %t662, { ptr, i64, i64 } %t663)
|
|
%t664 = load ptr, ptr %a1
|
|
%t665 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 0
|
|
%t666 = getelementptr inbounds %S.gen.Abi, ptr %t665, i32 0, i32 2
|
|
%t667 = load { ptr, i64, i64 }, ptr %t666
|
|
store { ptr, i64, i64 } { ptr @.str.4372, i64 4, i64 0 }, ptr %a669
|
|
store { ptr, i64, i64 } %t667, ptr %a670
|
|
call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670)
|
|
%t671 = load { ptr, i64, i64 }, ptr %a668
|
|
store { ptr, i64, i64 } %t671, ptr %a673
|
|
store { ptr, i64, i64 } { ptr @.str.4373, i64 1, i64 0 }, ptr %a674
|
|
call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674)
|
|
%t675 = load { ptr, i64, i64 }, ptr %a672
|
|
%t676 = load ptr, ptr %a1
|
|
%t677 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 0
|
|
%t678 = getelementptr inbounds %S.gen.Abi, ptr %t677, i32 0, i32 2
|
|
%t679 = load { ptr, i64, i64 }, ptr %t678
|
|
%t680 = load { ptr, i64, i64 }, ptr %a654
|
|
%t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t676, { ptr, i64, i64 } %t679, { ptr, i64, i64 } %t680)
|
|
store { ptr, i64, i64 } %t675, ptr %a683
|
|
store { ptr, i64, i64 } %t681, ptr %a684
|
|
call void @finch_str_concat(ptr %a682, ptr %a683, ptr %a684)
|
|
%t685 = load { ptr, i64, i64 }, ptr %a682
|
|
call void @finch.gen.emit(ptr %t664, { ptr, i64, i64 } %t685)
|
|
br label %endif6803
|
|
else6802:
|
|
%t686 = load ptr, ptr %a1
|
|
%t687 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t688 = load %S.ast.Type, ptr %t687
|
|
%t689 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t686, %S.ast.Type %t688)
|
|
store { ptr, i64, i64 } %t689, ptr %a622
|
|
%t690 = load ptr, ptr %a1
|
|
%t691 = load ptr, ptr %a1
|
|
%t692 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12
|
|
%t693 = load %S.ast.Type, ptr %t692
|
|
%t694 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t691, %S.ast.Type %t693)
|
|
store { ptr, i64, i64 } { ptr @.str.4374, i64 4, i64 0 }, ptr %a696
|
|
store { ptr, i64, i64 } %t694, ptr %a697
|
|
call void @finch_str_concat(ptr %a695, ptr %a696, ptr %a697)
|
|
%t698 = load { ptr, i64, i64 }, ptr %a695
|
|
store { ptr, i64, i64 } %t698, ptr %a700
|
|
store { ptr, i64, i64 } { ptr @.str.4375, i64 1, i64 0 }, ptr %a701
|
|
call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701)
|
|
%t702 = load { ptr, i64, i64 }, ptr %a699
|
|
%t703 = load ptr, ptr %a1
|
|
%t704 = load { ptr, i64, i64 }, ptr %a621
|
|
%t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704)
|
|
store { ptr, i64, i64 } %t702, ptr %a707
|
|
store { ptr, i64, i64 } %t705, ptr %a708
|
|
call void @finch_str_concat(ptr %a706, ptr %a707, ptr %a708)
|
|
%t709 = load { ptr, i64, i64 }, ptr %a706
|
|
call void @finch.gen.emit(ptr %t690, { ptr, i64, i64 } %t709)
|
|
br label %endif6803
|
|
endif6803:
|
|
br label %endif6800
|
|
endif6800:
|
|
br label %endif6797
|
|
endif6797:
|
|
%t710 = load ptr, ptr %a1
|
|
%t711 = load %S.gen.Saved, ptr %a265
|
|
%t712 = load { ptr, i64, i64 }, ptr %a622
|
|
store { ptr, i64, i64 } { ptr @.str.4376, i64 15, i64 0 }, ptr %a714
|
|
store { ptr, i64, i64 } %t712, ptr %a715
|
|
call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715)
|
|
%t716 = load { ptr, i64, i64 }, ptr %a713
|
|
store { ptr, i64, i64 } %t716, ptr %a718
|
|
store { ptr, i64, i64 } { ptr @.str.4377, i64 1, i64 0 }, ptr %a719
|
|
call void @finch_str_concat(ptr %a717, ptr %a718, ptr %a719)
|
|
%t720 = load { ptr, i64, i64 }, ptr %a717
|
|
%t721 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 2
|
|
%t722 = load { ptr, i64, i64 }, ptr %t721
|
|
store { ptr, i64, i64 } %t720, ptr %a724
|
|
store { ptr, i64, i64 } %t722, ptr %a725
|
|
call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725)
|
|
%t726 = load { ptr, i64, i64 }, ptr %a723
|
|
store { ptr, i64, i64 } %t726, ptr %a728
|
|
store { ptr, i64, i64 } { ptr @.str.4378, i64 1, i64 0 }, ptr %a729
|
|
call void @finch_str_concat(ptr %a727, ptr %a728, ptr %a729)
|
|
%t730 = load { ptr, i64, i64 }, ptr %a727
|
|
%t731 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } %t730, ptr %a733
|
|
store { ptr, i64, i64 } %t731, ptr %a734
|
|
call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734)
|
|
%t735 = load { ptr, i64, i64 }, ptr %a732
|
|
store { ptr, i64, i64 } %t735, ptr %a737
|
|
store { ptr, i64, i64 } { ptr @.str.4379, i64 1, i64 0 }, ptr %a738
|
|
call void @finch_str_concat(ptr %a736, ptr %a737, ptr %a738)
|
|
%t739 = load { ptr, i64, i64 }, ptr %a736
|
|
%t740 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4380, i64 2, i64 0 }, ptr %a741
|
|
call void @finch_str_join(ptr %a742, ptr %a266, ptr %a741)
|
|
%t743 = load { ptr, i64, i64 }, ptr %a742
|
|
store { ptr, i64, i64 } %t739, ptr %a745
|
|
store { ptr, i64, i64 } %t743, ptr %a746
|
|
call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746)
|
|
%t747 = load { ptr, i64, i64 }, ptr %a744
|
|
store { ptr, i64, i64 } %t747, ptr %a749
|
|
store { ptr, i64, i64 } { ptr @.str.4381, i64 1, i64 0 }, ptr %a750
|
|
call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750)
|
|
%t751 = load { ptr, i64, i64 }, ptr %a748
|
|
call void @finch.gen.endHelper(ptr %t710, %S.gen.Saved %t711, { ptr, i64, i64 } %t751)
|
|
%t752 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } %t752, ptr %a753
|
|
call void @finch_str_copy(ptr %a754, ptr %a753)
|
|
%t755 = load { ptr, i64, i64 }, ptr %a754
|
|
ret { ptr, i64, i64 } %t755
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i64, align 16
|
|
%a14 = alloca %S.gen.EnumDef, align 16
|
|
%a15 = alloca %S.gen.EnumDef, align 16
|
|
%a17 = alloca %S.gen.EnumDef, align 16
|
|
%a31 = alloca %S.gen.Val, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca %S.ast.Type, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca i64, align 16
|
|
%a82 = alloca i64, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca %S.ast.Type, align 16
|
|
%a120 = alloca %S.ast.Type, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca i64, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca %S.ast.Type, align 16
|
|
%a221 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i64 %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = icmp eq ptr %t4, null
|
|
br i1 %t5, label %panic6804, label %ok6805
|
|
panic6804:
|
|
call void @finch_panic(ptr @.str.4382, i64 3959, ptr @.str.4383)
|
|
unreachable
|
|
ok6805:
|
|
%t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20
|
|
%t7 = load i64, ptr %a3
|
|
%t8 = load { ptr, i64, i64 }, ptr %t6
|
|
%t9 = extractvalue { ptr, i64, i64 } %t8, 1
|
|
%t10 = icmp uge i64 %t7, %t9
|
|
br i1 %t10, label %range6806, label %inrange6807
|
|
range6806:
|
|
call void @finch_panic_index(ptr @.str.4384, i64 3959, i64 %t7, i64 %t9)
|
|
unreachable
|
|
inrange6807:
|
|
%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 %range6808, label %inrange6809
|
|
range6808:
|
|
call void @finch_panic_index(ptr @.str.4385, i64 3961, i64 0, i64 %t25)
|
|
unreachable
|
|
inrange6809:
|
|
%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 %then6810, label %endif6812
|
|
then6810:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t38 = load { ptr, i64, i64 }, ptr %t37
|
|
%t39 = extractvalue { ptr, i64, i64 } %t38, 1
|
|
%t40 = icmp uge i64 0, %t39
|
|
br i1 %t40, label %range6813, label %inrange6814
|
|
range6813:
|
|
call void @finch_panic_index(ptr @.str.4386, i64 3963, i64 0, i64 %t39)
|
|
unreachable
|
|
inrange6814:
|
|
%t41 = extractvalue { ptr, i64, i64 } %t38, 0
|
|
%t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 0
|
|
%t43 = load %S.ast.Node, ptr %t42
|
|
%t44 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1
|
|
%t45 = load { ptr, i64, i64 }, ptr %t44
|
|
store { ptr, i64, i64 } %t45, ptr %a47
|
|
store { ptr, i64, i64 } { ptr @.str.4387, i64 54, i64 0 }, ptr %a48
|
|
call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48)
|
|
%t49 = load { ptr, i64, i64 }, ptr %a46
|
|
%t50 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1
|
|
%t51 = load %S.ast.Type, ptr %t50
|
|
%t52 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t51)
|
|
store { ptr, i64, i64 } %t49, ptr %a54
|
|
store { ptr, i64, i64 } %t52, ptr %a55
|
|
call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a53
|
|
call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t56)
|
|
br label %endif6812
|
|
endif6812:
|
|
%t57 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4388, i64 4, i64 0 }, 0
|
|
%t58 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1
|
|
%t59 = load { ptr, i64, i64 }, ptr %t58
|
|
store { ptr, i64, i64 } %t59, ptr %a60
|
|
call void @finch_str_copy(ptr %a61, ptr %a60)
|
|
%t62 = load { ptr, i64, i64 }, ptr %a61
|
|
%t63 = insertvalue %S.ast.Type %t57, { ptr, i64, i64 } %t62, 2
|
|
%t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0
|
|
%t65 = load { ptr, i64, i64 }, ptr %t64
|
|
store { ptr, i64, i64 } %t65, ptr %a66
|
|
call void @finch_str_copy(ptr %a67, ptr %a66)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a67
|
|
%t69 = insertvalue %S.ast.Type %t63, { ptr, i64, i64 } %t68, 3
|
|
store %S.ast.Type %t69, ptr %a70
|
|
%t71 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3
|
|
%t72 = load i1, ptr %t71
|
|
br i1 %t72, label %then6815, label %endif6817
|
|
then6815:
|
|
%t73 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3
|
|
%t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1
|
|
%t75 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0
|
|
%t76 = load { ptr, i64, i64 }, ptr %t75
|
|
store { ptr, i64, i64 } %t76, ptr %a77
|
|
%t78 = call i64 @finch_str_to_int(ptr %a77, ptr @.str.4389, i64 3967)
|
|
store i64 -1, ptr %a79
|
|
%t80 = load i64, ptr %t74
|
|
%t81 = load ptr, ptr %t73
|
|
store i64 0, ptr %a82
|
|
br label %find.cond6818
|
|
find.cond6818:
|
|
%t83 = load i64, ptr %a82
|
|
%t84 = icmp slt i64 %t83, %t80
|
|
br i1 %t84, label %find.body6819, label %find.end6822
|
|
find.body6819:
|
|
%t85 = getelementptr inbounds i64, ptr %t81, i64 %t83
|
|
%t86 = load i64, ptr %t85
|
|
%t87 = icmp eq i64 %t86, %t78
|
|
br i1 %t87, label %find.hit6820, label %find.next6821
|
|
find.hit6820:
|
|
store i64 %t83, ptr %a79
|
|
br label %find.end6822
|
|
find.next6821:
|
|
%t88 = add i64 %t83, 1
|
|
store i64 %t88, ptr %a82
|
|
br label %find.cond6818
|
|
find.end6822:
|
|
%t89 = load i64, ptr %a79
|
|
%t90 = icmp sge i64 %t89, 0
|
|
%t91 = xor i1 %t90, true
|
|
br i1 %t91, label %then6823, label %endif6825
|
|
then6823:
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t94 = load { ptr, i64, i64 }, ptr %t93
|
|
%t95 = extractvalue { ptr, i64, i64 } %t94, 1
|
|
%t96 = icmp uge i64 0, %t95
|
|
br i1 %t96, label %range6826, label %inrange6827
|
|
range6826:
|
|
call void @finch_panic_index(ptr @.str.4390, i64 3968, i64 0, i64 %t95)
|
|
unreachable
|
|
inrange6827:
|
|
%t97 = extractvalue { ptr, i64, i64 } %t94, 0
|
|
%t98 = getelementptr inbounds %S.ast.Node, ptr %t97, i64 0
|
|
%t99 = load %S.ast.Node, ptr %t98
|
|
%t100 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0
|
|
%t101 = load { ptr, i64, i64 }, ptr %t100
|
|
store { ptr, i64, i64 } %t101, ptr %a103
|
|
store { ptr, i64, i64 } { ptr @.str.4391, i64 37, i64 0 }, ptr %a104
|
|
call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104)
|
|
%t105 = load { ptr, i64, i64 }, ptr %a102
|
|
%t106 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1
|
|
%t107 = load { ptr, i64, i64 }, ptr %t106
|
|
store { ptr, i64, i64 } %t105, ptr %a109
|
|
store { ptr, i64, i64 } %t107, ptr %a110
|
|
call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a108
|
|
call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111)
|
|
br label %endif6825
|
|
endif6825:
|
|
%t112 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0
|
|
%t113 = load { ptr, i64, i64 }, ptr %t112
|
|
store { ptr, i64, i64 } %t113, ptr %a114
|
|
call void @finch_str_copy(ptr %a115, ptr %a114)
|
|
%t116 = load { ptr, i64, i64 }, ptr %a115
|
|
%t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0
|
|
%t118 = load %S.ast.Type, ptr %a70
|
|
store %S.ast.Type %t118, ptr %a119
|
|
call void @finch.copy.S_ast_Type(ptr %a120, ptr %a119)
|
|
%t121 = load %S.ast.Type, ptr %a120
|
|
%t122 = insertvalue %S.gen.Val %t117, %S.ast.Type %t121, 1
|
|
ret %S.gen.Val %t122
|
|
endif6817:
|
|
%t123 = load ptr, ptr %a1
|
|
%t124 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0
|
|
%t125 = load { ptr, i64, i64 }, ptr %t124
|
|
%t126 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1
|
|
%t127 = load %S.ast.Type, ptr %t126
|
|
%t128 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4392, i64 3, i64 0 })
|
|
%t129 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t125, %S.ast.Type %t127, %S.ast.Type %t128)
|
|
store { ptr, i64, i64 } %t129, ptr %a130
|
|
store { ptr, i64, i64 } { ptr @.str.4393, i64 0, i64 0 }, ptr %a131
|
|
%t132 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3
|
|
%t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t132, i32 0, i32 1
|
|
%t134 = load i64, ptr %t133
|
|
store i64 0, ptr %a135
|
|
br label %for.cond6828
|
|
for.cond6828:
|
|
%t136 = load i64, ptr %a135
|
|
%t137 = icmp slt i64 %t136, %t134
|
|
br i1 %t137, label %for.body6829, label %for.end6831
|
|
for.body6829:
|
|
%t138 = load ptr, ptr %a1
|
|
%t139 = load { ptr, i64, i64 }, ptr %a130
|
|
store { ptr, i64, i64 } { ptr @.str.4394, i64 12, i64 0 }, ptr %a141
|
|
store { ptr, i64, i64 } %t139, ptr %a142
|
|
call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142)
|
|
%t143 = load { ptr, i64, i64 }, ptr %a140
|
|
store { ptr, i64, i64 } %t143, ptr %a145
|
|
store { ptr, i64, i64 } { ptr @.str.4395, i64 2, i64 0 }, ptr %a146
|
|
call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a144
|
|
%t148 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3
|
|
%t149 = load i64, ptr %a135
|
|
%t150 = load { ptr, i64, i64 }, ptr %t148
|
|
%t151 = extractvalue { ptr, i64, i64 } %t150, 1
|
|
%t152 = icmp uge i64 %t149, %t151
|
|
br i1 %t152, label %range6832, label %inrange6833
|
|
range6832:
|
|
call void @finch_panic_index(ptr @.str.4396, i64 3975, i64 %t149, i64 %t151)
|
|
unreachable
|
|
inrange6833:
|
|
%t153 = extractvalue { ptr, i64, i64 } %t150, 0
|
|
%t154 = getelementptr inbounds i64, ptr %t153, i64 %t149
|
|
%t155 = load i64, ptr %t154
|
|
call void @finch_str_from_int(ptr %a156, i64 %t155)
|
|
%t157 = load { ptr, i64, i64 }, ptr %a156
|
|
store { ptr, i64, i64 } %t147, ptr %a159
|
|
store { ptr, i64, i64 } %t157, ptr %a160
|
|
call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160)
|
|
%t161 = load { ptr, i64, i64 }, ptr %a158
|
|
%t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t161)
|
|
store { ptr, i64, i64 } %t162, ptr %a163
|
|
%t164 = load i64, ptr %a135
|
|
%t165 = icmp eq i64 %t164, 0
|
|
br i1 %t165, label %then6834, label %else6835
|
|
then6834:
|
|
%t166 = load { ptr, i64, i64 }, ptr %a163
|
|
store { ptr, i64, i64 } %t166, ptr %a167
|
|
call void @finch_str_copy(ptr %a168, ptr %a167)
|
|
%t169 = load { ptr, i64, i64 }, ptr %a168
|
|
store { ptr, i64, i64 } %t169, ptr %a131
|
|
br label %endif6836
|
|
else6835:
|
|
%t170 = load ptr, ptr %a1
|
|
%t171 = load { ptr, i64, i64 }, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.4397, i64 6, i64 0 }, ptr %a173
|
|
store { ptr, i64, i64 } %t171, ptr %a174
|
|
call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174)
|
|
%t175 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } %t175, ptr %a177
|
|
store { ptr, i64, i64 } { ptr @.str.4398, i64 2, i64 0 }, ptr %a178
|
|
call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178)
|
|
%t179 = load { ptr, i64, i64 }, ptr %a176
|
|
%t180 = load { ptr, i64, i64 }, ptr %a163
|
|
store { ptr, i64, i64 } %t179, ptr %a182
|
|
store { ptr, i64, i64 } %t180, ptr %a183
|
|
call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183)
|
|
%t184 = load { ptr, i64, i64 }, ptr %a181
|
|
%t185 = call { ptr, i64, i64 } @finch.gen.op(ptr %t170, { ptr, i64, i64 } %t184)
|
|
store { ptr, i64, i64 } %t185, ptr %a131
|
|
br label %endif6836
|
|
endif6836:
|
|
br label %for.step6830
|
|
for.step6830:
|
|
%t186 = load i64, ptr %a135
|
|
%t187 = add i64 %t186, 1
|
|
store i64 %t187, ptr %a135
|
|
br label %for.cond6828
|
|
for.end6831:
|
|
%t188 = load ptr, ptr %a1
|
|
%t189 = load ptr, ptr %a1
|
|
%t190 = load { ptr, i64, i64 }, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.4399, i64 7, i64 0 }, ptr %a192
|
|
store { ptr, i64, i64 } %t190, ptr %a193
|
|
call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193)
|
|
%t194 = load { ptr, i64, i64 }, ptr %a191
|
|
store { ptr, i64, i64 } %t194, ptr %a196
|
|
store { ptr, i64, i64 } { ptr @.str.4400, i64 6, i64 0 }, ptr %a197
|
|
call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197)
|
|
%t198 = load { ptr, i64, i64 }, ptr %a195
|
|
%t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t189, { ptr, i64, i64 } %t198)
|
|
%t200 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1
|
|
%t201 = load { ptr, i64, i64 }, ptr %t200
|
|
store { ptr, i64, i64 } { ptr @.str.4401, i64 32, i64 0 }, ptr %a203
|
|
store { ptr, i64, i64 } %t201, ptr %a204
|
|
call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204)
|
|
%t205 = load { ptr, i64, i64 }, ptr %a202
|
|
%t206 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.panicIf(ptr %t188, { ptr, i64, i64 } %t199, { ptr, i64, i64 } %t205, %S.ast.Node %t206)
|
|
%t207 = load ptr, ptr %a1
|
|
%t208 = load { ptr, i64, i64 }, ptr %a130
|
|
store { ptr, i64, i64 } { ptr @.str.4402, i64 10, i64 0 }, ptr %a210
|
|
store { ptr, i64, i64 } %t208, ptr %a211
|
|
call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211)
|
|
%t212 = load { ptr, i64, i64 }, ptr %a209
|
|
store { ptr, i64, i64 } %t212, ptr %a214
|
|
store { ptr, i64, i64 } { ptr @.str.4403, i64 7, i64 0 }, ptr %a215
|
|
call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215)
|
|
%t216 = load { ptr, i64, i64 }, ptr %a213
|
|
%t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t207, { ptr, i64, i64 } %t216)
|
|
%t218 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t217, 0
|
|
%t219 = load %S.ast.Type, ptr %a70
|
|
store %S.ast.Type %t219, ptr %a220
|
|
call void @finch.copy.S_ast_Type(ptr %a221, ptr %a220)
|
|
%t222 = load %S.ast.Type, ptr %a221
|
|
%t223 = insertvalue %S.gen.Val %t218, %S.ast.Type %t222, 1
|
|
ret %S.gen.Val %t223
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.cExt(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.4404, i64 4, i64 0 }, ptr %a6
|
|
%t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6)
|
|
%t8 = icmp ne i32 %t7, 0
|
|
br label %logic.from6837
|
|
logic.from6837:
|
|
br i1 %t8, label %logic.end6839, label %logic.rhs6838
|
|
logic.rhs6838:
|
|
%t9 = load %S.ast.Type, ptr %a2
|
|
%t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9)
|
|
br label %logic.rend6840
|
|
logic.rend6840:
|
|
br label %logic.end6839
|
|
logic.end6839:
|
|
%t11 = phi i1 [ true, %logic.from6837 ], [ %t10, %logic.rend6840 ]
|
|
br i1 %t11, label %then6841, label %endif6843
|
|
then6841:
|
|
%t12 = load %S.ast.Type, ptr %a2
|
|
%t13 = call i64 @finch.gen.bitsOf(%S.ast.Type %t12)
|
|
%t14 = icmp slt i64 %t13, 32
|
|
br i1 %t14, label %then6844, label %endif6846
|
|
then6844:
|
|
ret { ptr, i64, i64 } { ptr @.str.4405, i64 8, i64 0 }
|
|
endif6846:
|
|
br label %endif6843
|
|
endif6843:
|
|
%t15 = load %S.ast.Type, ptr %a2
|
|
%t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15)
|
|
br label %logic.from6847
|
|
logic.from6847:
|
|
br i1 %t16, label %logic.end6849, label %logic.rhs6848
|
|
logic.rhs6848:
|
|
%t17 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t18 = load { ptr, i64, i64 }, ptr %t17
|
|
store { ptr, i64, i64 } %t18, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.4406, i64 4, i64 0 }, ptr %a20
|
|
%t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20)
|
|
%t22 = icmp ne i32 %t21, 0
|
|
br label %logic.from6850
|
|
logic.from6850:
|
|
br i1 %t22, label %logic.rhs6851, label %logic.end6852
|
|
logic.rhs6851:
|
|
%t23 = load ptr, ptr %a1
|
|
%t24 = icmp eq ptr %t23, null
|
|
br i1 %t24, label %panic6853, label %ok6854
|
|
panic6853:
|
|
call void @finch_panic(ptr @.str.4407, i64 3995, ptr @.str.4408)
|
|
unreachable
|
|
ok6854:
|
|
%t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 27
|
|
%t26 = load %S.platform.Target, ptr %t25
|
|
%t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26)
|
|
br label %logic.rend6855
|
|
logic.rend6855:
|
|
br label %logic.end6852
|
|
logic.end6852:
|
|
%t28 = phi i1 [ false, %logic.from6850 ], [ %t27, %logic.rend6855 ]
|
|
br label %logic.rend6856
|
|
logic.rend6856:
|
|
br label %logic.end6849
|
|
logic.end6849:
|
|
%t29 = phi i1 [ true, %logic.from6847 ], [ %t28, %logic.rend6856 ]
|
|
br label %logic.from6857
|
|
logic.from6857:
|
|
br i1 %t29, label %logic.rhs6858, label %logic.end6859
|
|
logic.rhs6858:
|
|
%t30 = load %S.ast.Type, ptr %a2
|
|
%t31 = call i64 @finch.gen.bitsOf(%S.ast.Type %t30)
|
|
%t32 = icmp slt i64 %t31, 32
|
|
br label %logic.rend6860
|
|
logic.rend6860:
|
|
br label %logic.end6859
|
|
logic.end6859:
|
|
%t33 = phi i1 [ false, %logic.from6857 ], [ %t32, %logic.rend6860 ]
|
|
br i1 %t33, label %then6861, label %endif6863
|
|
then6861:
|
|
ret { ptr, i64, i64 } { ptr @.str.4409, i64 8, i64 0 }
|
|
endif6863:
|
|
%t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t35 = load { ptr, i64, i64 }, ptr %t34
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.4410, i64 4, i64 0 }, ptr %a37
|
|
%t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37)
|
|
%t39 = icmp ne i32 %t38, 0
|
|
br label %logic.from6864
|
|
logic.from6864:
|
|
br i1 %t39, label %logic.rhs6865, label %logic.end6866
|
|
logic.rhs6865:
|
|
%t40 = load %S.ast.Type, ptr %a2
|
|
%t41 = call i64 @finch.gen.bitsOf(%S.ast.Type %t40)
|
|
%t42 = icmp slt i64 %t41, 32
|
|
br label %logic.rend6867
|
|
logic.rend6867:
|
|
br label %logic.end6866
|
|
logic.end6866:
|
|
%t43 = phi i1 [ false, %logic.from6864 ], [ %t42, %logic.rend6867 ]
|
|
br i1 %t43, label %then6868, label %endif6870
|
|
then6868:
|
|
ret { ptr, i64, i64 } { ptr @.str.4411, i64 8, i64 0 }
|
|
endif6870:
|
|
ret { ptr, i64, i64 } { ptr @.str.4412, i64 0, i64 0 }
|
|
}
|
|
|
|
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.4413, i64 3, i64 0 }, ptr %a6
|
|
%t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6)
|
|
%t8 = icmp ne i32 %t7, 0
|
|
br i1 %t8, label %then6871, label %endif6873
|
|
then6871:
|
|
ret { ptr, i64, i64 } { ptr @.str.4414, i64 3, i64 0 }
|
|
endif6873:
|
|
%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
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca i64, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%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
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca %S.ast.Type, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca i64, align 16
|
|
%a127 = alloca %S.ast.Type, align 16
|
|
%a132 = alloca %S.ast.Type, align 16
|
|
%a140 = alloca %S.ast.Type, align 16
|
|
%a141 = alloca %S.ast.Type, align 16
|
|
%a153 = alloca %S.gen.Plan, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca i64, align 16
|
|
%a219 = alloca %S.ast.Type, align 16
|
|
%a220 = alloca %S.ast.Type, align 16
|
|
%a222 = alloca %S.ast.Type, align 16
|
|
%a231 = alloca %S.gen.Abi, align 16
|
|
%a232 = alloca %S.gen.Abi, align 16
|
|
%a234 = alloca %S.gen.Abi, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a270 = alloca { ptr, i64, i64 }, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca %S.gen.Val, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca { ptr, i64, i64 }, align 16
|
|
%a302 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca { ptr, i64, i64 }, align 16
|
|
%a304 = alloca { ptr, i64, i64 }, align 16
|
|
%a308 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a314 = alloca { ptr, i64, i64 }, align 16
|
|
%a317 = alloca { ptr, i64, i64 }, align 16
|
|
%a318 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a328 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a367 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a381 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca i64, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a410 = alloca { ptr, i64, i64 }, align 16
|
|
%a411 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a416 = alloca { ptr, i64, i64 }, align 16
|
|
%a418 = alloca { ptr, i64, i64 }, align 16
|
|
%a419 = alloca { ptr, i64, i64 }, align 16
|
|
%a420 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a434 = alloca { ptr, i64, i64 }, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a450 = alloca { ptr, i64, i64 }, align 16
|
|
%a451 = alloca { ptr, i64, i64 }, align 16
|
|
%a452 = alloca { ptr, i64, i64 }, align 16
|
|
%a455 = alloca { ptr, i64, i64 }, align 16
|
|
%a456 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a472 = alloca { ptr, i64, i64 }, align 16
|
|
%a473 = alloca { ptr, i64, i64 }, align 16
|
|
%a474 = alloca { ptr, i64, i64 }, align 16
|
|
%a482 = alloca { ptr, i64, i64 }, align 16
|
|
%a483 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca { ptr, i64, i64 }, align 16
|
|
%a492 = alloca { ptr, i64, i64 }, align 16
|
|
%a493 = alloca { ptr, i64, i64 }, align 16
|
|
%a506 = alloca { ptr, i64, i64 }, align 16
|
|
%a507 = alloca { ptr, i64, i64 }, align 16
|
|
%a508 = alloca { ptr, i64, i64 }, align 16
|
|
%a510 = alloca { ptr, i64, i64 }, align 16
|
|
%a511 = alloca { ptr, i64, i64 }, align 16
|
|
%a512 = alloca { ptr, i64, i64 }, align 16
|
|
%a516 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a518 = alloca { ptr, i64, i64 }, align 16
|
|
%a534 = alloca %S.gen.Val, align 16
|
|
%a537 = alloca %S.ast.Type, align 16
|
|
%a538 = alloca %S.ast.Type, align 16
|
|
%a540 = alloca %S.ast.Type, align 16
|
|
%a543 = alloca { ptr, i64, i64 }, align 16
|
|
%a544 = alloca { ptr, i64, i64 }, align 16
|
|
%a558 = alloca { ptr, i64, i64 }, align 16
|
|
%a559 = alloca { ptr, i64, i64 }, align 16
|
|
%a564 = alloca { ptr, i64, i64 }, align 16
|
|
%a565 = alloca { ptr, i64, i64 }, align 16
|
|
%a580 = alloca { ptr, i64, i64 }, align 16
|
|
%a581 = alloca { ptr, i64, i64 }, align 16
|
|
%a583 = alloca { ptr, i64, i64 }, align 16
|
|
%a586 = alloca { ptr, i64, i64 }, align 16
|
|
%a587 = alloca { ptr, i64, i64 }, align 16
|
|
%a598 = alloca { ptr, i64, i64 }, align 16
|
|
%a599 = alloca { ptr, i64, i64 }, align 16
|
|
%a608 = alloca { ptr, i64, i64 }, align 16
|
|
%a609 = alloca { ptr, i64, i64 }, align 16
|
|
%a615 = alloca { ptr, i64, i64 }, align 16
|
|
%a616 = alloca { ptr, i64, i64 }, align 16
|
|
%a617 = alloca { ptr, i64, i64 }, align 16
|
|
%a619 = alloca { ptr, i64, i64 }, align 16
|
|
%a620 = alloca { ptr, i64, i64 }, align 16
|
|
%a621 = alloca { ptr, i64, i64 }, align 16
|
|
%a629 = alloca { ptr, i64, i64 }, align 16
|
|
%a630 = alloca { ptr, i64, i64 }, align 16
|
|
%a648 = alloca { ptr, i64, i64 }, align 16
|
|
%a649 = alloca { ptr, i64, i64 }, align 16
|
|
%a650 = alloca { ptr, i64, i64 }, align 16
|
|
%a653 = alloca { ptr, i64, i64 }, align 16
|
|
%a654 = alloca { ptr, i64, i64 }, align 16
|
|
%a655 = alloca { ptr, i64, i64 }, align 16
|
|
%a665 = alloca { ptr, i64, i64 }, align 16
|
|
%a666 = alloca { ptr, i64, i64 }, align 16
|
|
%a668 = alloca { ptr, i64, i64 }, align 16
|
|
%a669 = alloca { ptr, i64, i64 }, align 16
|
|
%a673 = alloca { ptr, i64, i64 }, align 16
|
|
%a674 = alloca { ptr, i64, i64 }, align 16
|
|
%a680 = alloca { ptr, i64, i64 }, align 16
|
|
%a692 = alloca { ptr, i64, i64 }, align 16
|
|
%a693 = alloca { ptr, i64, i64 }, align 16
|
|
%a694 = alloca { ptr, i64, i64 }, align 16
|
|
%a696 = alloca i64, align 16
|
|
%a699 = alloca i64, align 16
|
|
%a704 = alloca { ptr, i64, i64 }, align 16
|
|
%a705 = alloca { ptr, i64, i64 }, align 16
|
|
%a718 = alloca { ptr, i64, i64 }, align 16
|
|
%a719 = alloca { ptr, i64, i64 }, align 16
|
|
%a720 = alloca { ptr, i64, i64 }, align 16
|
|
%a735 = alloca { ptr, i64, i64 }, align 16
|
|
%a736 = alloca { ptr, i64, i64 }, align 16
|
|
%a737 = alloca { ptr, i64, i64 }, align 16
|
|
%a739 = alloca { ptr, i64, i64 }, align 16
|
|
%a740 = alloca { ptr, i64, i64 }, align 16
|
|
%a741 = alloca { ptr, i64, i64 }, align 16
|
|
%a744 = alloca { ptr, i64, i64 }, align 16
|
|
%a745 = alloca { ptr, i64, i64 }, align 16
|
|
%a746 = alloca { ptr, i64, i64 }, align 16
|
|
%a748 = alloca { ptr, i64, i64 }, align 16
|
|
%a749 = alloca { ptr, i64, i64 }, align 16
|
|
%a750 = alloca { ptr, i64, i64 }, align 16
|
|
%a754 = alloca { ptr, i64, i64 }, align 16
|
|
%a755 = alloca { ptr, i64, i64 }, align 16
|
|
%a756 = alloca { ptr, i64, i64 }, align 16
|
|
%a758 = alloca { ptr, i64, i64 }, align 16
|
|
%a759 = alloca { ptr, i64, i64 }, align 16
|
|
%a760 = alloca { ptr, i64, i64 }, align 16
|
|
%a763 = alloca { ptr, i64, i64 }, align 16
|
|
%a764 = alloca { ptr, i64, i64 }, align 16
|
|
%a766 = alloca { ptr, i64, i64 }, align 16
|
|
%a767 = alloca { ptr, i64, i64 }, align 16
|
|
%a768 = alloca { ptr, i64, i64 }, align 16
|
|
%a771 = alloca { ptr, i64, i64 }, align 16
|
|
%a772 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a783 = alloca { ptr, i64, i64 }, align 16
|
|
%a787 = alloca { ptr, i64, i64 }, align 16
|
|
%a788 = alloca { ptr, i64, i64 }, align 16
|
|
%a790 = alloca { ptr, i64, i64 }, align 16
|
|
%a791 = alloca { ptr, i64, i64 }, align 16
|
|
%a792 = alloca { ptr, i64, i64 }, align 16
|
|
%a795 = alloca { ptr, i64, i64 }, align 16
|
|
%a796 = alloca { ptr, i64, i64 }, align 16
|
|
%a797 = alloca { ptr, i64, i64 }, align 16
|
|
%a799 = alloca { ptr, i64, i64 }, align 16
|
|
%a800 = alloca { ptr, i64, i64 }, align 16
|
|
%a801 = alloca { ptr, i64, i64 }, align 16
|
|
%a804 = alloca { ptr, i64, i64 }, align 16
|
|
%a805 = alloca { ptr, i64, i64 }, align 16
|
|
%a806 = alloca { ptr, i64, i64 }, align 16
|
|
%a808 = alloca { ptr, i64, i64 }, align 16
|
|
%a809 = alloca { ptr, i64, i64 }, align 16
|
|
%a810 = alloca { ptr, i64, i64 }, align 16
|
|
%a813 = alloca { ptr, i64, i64 }, align 16
|
|
%a814 = alloca { ptr, i64, i64 }, align 16
|
|
%a815 = alloca { ptr, i64, i64 }, align 16
|
|
%a818 = alloca { ptr, i64, i64 }, align 16
|
|
%a819 = alloca { ptr, i64, i64 }, align 16
|
|
%a820 = 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
|
|
%a832 = alloca { ptr, i64, i64 }, align 16
|
|
%a833 = alloca { ptr, i64, i64 }, align 16
|
|
%a834 = alloca { ptr, i64, i64 }, align 16
|
|
%a837 = alloca { ptr, i64, i64 }, align 16
|
|
%a838 = alloca { ptr, i64, i64 }, align 16
|
|
%a840 = alloca { ptr, i64, i64 }, align 16
|
|
%a841 = alloca { ptr, i64, i64 }, align 16
|
|
%a842 = alloca { ptr, i64, i64 }, align 16
|
|
%a844 = alloca { ptr, i64, i64 }, align 16
|
|
%a845 = alloca { ptr, i64, i64 }, align 16
|
|
%a846 = 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
|
|
%a858 = alloca %S.ast.Type, align 16
|
|
%a859 = alloca %S.ast.Type, align 16
|
|
%a874 = alloca %S.ast.Type, align 16
|
|
%a875 = alloca %S.ast.Type, align 16
|
|
%a881 = alloca { ptr, i64, i64 }, align 16
|
|
%a885 = alloca { ptr, i64, i64 }, align 16
|
|
%a886 = alloca { ptr, i64, i64 }, align 16
|
|
%a891 = alloca { ptr, i64, i64 }, align 16
|
|
%a906 = alloca %S.ast.Type, align 16
|
|
%a907 = alloca %S.ast.Type, align 16
|
|
%a912 = alloca { ptr, i64, i64 }, align 16
|
|
%a913 = alloca { ptr, i64, i64 }, align 16
|
|
%a918 = alloca { ptr, i64, i64 }, align 16
|
|
%a923 = alloca { ptr, i64, i64 }, align 16
|
|
%a924 = alloca { ptr, i64, i64 }, align 16
|
|
%a925 = alloca { ptr, i64, i64 }, align 16
|
|
%a927 = alloca { ptr, i64, i64 }, align 16
|
|
%a928 = alloca { ptr, i64, i64 }, align 16
|
|
%a929 = alloca { ptr, i64, i64 }, align 16
|
|
%a932 = alloca { ptr, i64, i64 }, align 16
|
|
%a933 = alloca { ptr, i64, i64 }, align 16
|
|
%a934 = alloca { ptr, i64, i64 }, align 16
|
|
%a936 = alloca { ptr, i64, i64 }, align 16
|
|
%a937 = alloca { ptr, i64, i64 }, align 16
|
|
%a938 = alloca { ptr, i64, i64 }, align 16
|
|
%a945 = alloca %S.ast.Type, align 16
|
|
%a946 = alloca %S.ast.Type, align 16
|
|
%a950 = alloca { ptr, i64, i64 }, align 16
|
|
%a951 = alloca { ptr, i64, i64 }, align 16
|
|
%a955 = alloca %S.ast.Type, align 16
|
|
%a956 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store %S.cimport.CFunc %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1
|
|
%t6 = load i64, ptr %t5
|
|
%t7 = icmp sgt i64 %t6, 0
|
|
br i1 %t7, label %then6874, label %endif6876
|
|
then6874:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = load %S.ast.Node, ptr %a2
|
|
%t10 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t11 = load { ptr, i64, i64 }, ptr %t10
|
|
store { ptr, i64, i64 } { ptr @.str.4415, i64 16, i64 0 }, ptr %a13
|
|
store { ptr, i64, i64 } %t11, ptr %a14
|
|
call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t15, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.4416, i64 35, i64 0 }, ptr %a18
|
|
call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a16
|
|
%t20 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5
|
|
%t21 = load { ptr, i64, i64 }, ptr %t20
|
|
store { ptr, i64, i64 } %t19, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t25)
|
|
br label %endif6876
|
|
endif6876:
|
|
%t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i32 0, i32 1
|
|
%t28 = load i64, ptr %t27
|
|
store i64 %t28, ptr %a29
|
|
%t30 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4
|
|
%t31 = load i1, ptr %t30
|
|
br i1 %t31, label %then6877, label %else6878
|
|
then6877:
|
|
%t32 = load i64, ptr %a29
|
|
%t33 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3
|
|
%t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1
|
|
%t35 = load i64, ptr %t34
|
|
%t36 = icmp slt i64 %t32, %t35
|
|
br i1 %t36, label %then6880, label %endif6882
|
|
then6880:
|
|
%t37 = load ptr, ptr %a1
|
|
%t38 = load %S.ast.Node, ptr %a2
|
|
%t39 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t40 = load { ptr, i64, i64 }, ptr %t39
|
|
store { ptr, i64, i64 } { ptr @.str.4417, i64 1, i64 0 }, ptr %a42
|
|
store { ptr, i64, i64 } %t40, ptr %a43
|
|
call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43)
|
|
%t44 = load { ptr, i64, i64 }, ptr %a41
|
|
store { ptr, i64, i64 } %t44, ptr %a46
|
|
store { ptr, i64, i64 } { ptr @.str.4418, i64 17, i64 0 }, ptr %a47
|
|
call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47)
|
|
%t48 = load { ptr, i64, i64 }, ptr %a45
|
|
%t49 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3
|
|
%t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1
|
|
%t51 = load i64, ptr %t50
|
|
call void @finch_str_from_int(ptr %a52, i64 %t51)
|
|
%t53 = load { ptr, i64, i64 }, ptr %a52
|
|
store { ptr, i64, i64 } %t48, ptr %a55
|
|
store { ptr, i64, i64 } %t53, ptr %a56
|
|
call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t57, ptr %a59
|
|
store { ptr, i64, i64 } { ptr @.str.4419, i64 22, i64 0 }, ptr %a60
|
|
call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60)
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
%t62 = load i64, ptr %a29
|
|
call void @finch_str_from_int(ptr %a63, i64 %t62)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t61, ptr %a66
|
|
store { ptr, i64, i64 } %t64, ptr %a67
|
|
call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a65
|
|
call void @finch.gen.fail(ptr %t37, %S.ast.Node %t38, { ptr, i64, i64 } %t68)
|
|
br label %endif6882
|
|
endif6882:
|
|
br label %endif6879
|
|
else6878:
|
|
%t69 = load i64, ptr %a29
|
|
%t70 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3
|
|
%t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1
|
|
%t72 = load i64, ptr %t71
|
|
%t73 = icmp ne i64 %t69, %t72
|
|
br i1 %t73, label %then6883, label %endif6885
|
|
then6883:
|
|
%t74 = load ptr, ptr %a1
|
|
%t75 = load %S.ast.Node, ptr %a2
|
|
%t76 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t77 = load { ptr, i64, i64 }, ptr %t76
|
|
store { ptr, i64, i64 } { ptr @.str.4420, i64 1, i64 0 }, ptr %a79
|
|
store { ptr, i64, i64 } %t77, ptr %a80
|
|
call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a78
|
|
store { ptr, i64, i64 } %t81, ptr %a83
|
|
store { ptr, i64, i64 } { ptr @.str.4421, i64 8, i64 0 }, ptr %a84
|
|
call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a82
|
|
%t86 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3
|
|
%t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1
|
|
%t88 = load i64, ptr %t87
|
|
call void @finch_str_from_int(ptr %a89, i64 %t88)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a89
|
|
store { ptr, i64, i64 } %t85, ptr %a92
|
|
store { ptr, i64, i64 } %t90, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
store { ptr, i64, i64 } %t94, ptr %a96
|
|
store { ptr, i64, i64 } { ptr @.str.4422, i64 22, i64 0 }, ptr %a97
|
|
call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97)
|
|
%t98 = load { ptr, i64, i64 }, ptr %a95
|
|
%t99 = load i64, ptr %a29
|
|
call void @finch_str_from_int(ptr %a100, i64 %t99)
|
|
%t101 = load { ptr, i64, i64 }, ptr %a100
|
|
store { ptr, i64, i64 } %t98, ptr %a103
|
|
store { ptr, i64, i64 } %t101, ptr %a104
|
|
call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104)
|
|
%t105 = load { ptr, i64, i64 }, ptr %a102
|
|
call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } %t105)
|
|
br label %endif6885
|
|
endif6885:
|
|
br label %endif6879
|
|
endif6879:
|
|
%t106 = load ptr, ptr %a1
|
|
%t107 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2
|
|
%t108 = load %S.ast.Type, ptr %t107
|
|
%t109 = load %S.ast.Node, ptr %a2
|
|
%t110 = call %S.ast.Type @finch.gen.resolve(ptr %t106, %S.ast.Type %t108, %S.ast.Node %t109)
|
|
store %S.ast.Type %t110, ptr %a111
|
|
%t112 = load ptr, ptr %a1
|
|
%t113 = load %S.ast.Node, ptr %a2
|
|
%t114 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t115 = load { ptr, i64, i64 }, ptr %t114
|
|
%t116 = load %S.ast.Type, ptr %a111
|
|
call void @finch.gen.checkByValue(ptr %t112, %S.ast.Node %t113, { ptr, i64, i64 } %t115, %S.ast.Type %t116, { ptr, i64, i64 } { ptr @.str.4423, i64 7, i64 0 })
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a117
|
|
%t118 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3
|
|
store i64 0, ptr %a119
|
|
br label %each.cond6886
|
|
each.cond6886:
|
|
%t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i32 0, i32 1
|
|
%t121 = load i64, ptr %t120
|
|
%t122 = load i64, ptr %a119
|
|
%t123 = icmp slt i64 %t122, %t121
|
|
br i1 %t123, label %each.body6887, label %each.end6889
|
|
each.body6887:
|
|
%t124 = load ptr, ptr %t118
|
|
%t125 = getelementptr inbounds %S.ast.Type, ptr %t124, i64 %t122
|
|
%t126 = load %S.ast.Type, ptr %t125
|
|
store %S.ast.Type %t126, ptr %a127
|
|
%t128 = load ptr, ptr %a1
|
|
%t129 = load %S.ast.Type, ptr %a127
|
|
%t130 = load %S.ast.Node, ptr %a2
|
|
%t131 = call %S.ast.Type @finch.gen.resolve(ptr %t128, %S.ast.Type %t129, %S.ast.Node %t130)
|
|
store %S.ast.Type %t131, ptr %a132
|
|
%t133 = load ptr, ptr %a1
|
|
%t134 = load %S.ast.Node, ptr %a2
|
|
%t135 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t136 = load { ptr, i64, i64 }, ptr %t135
|
|
%t137 = load %S.ast.Type, ptr %a132
|
|
call void @finch.gen.checkByValue(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } %t136, %S.ast.Type %t137, { ptr, i64, i64 } { ptr @.str.4424, i64 5, i64 0 })
|
|
%t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %a117, i32 0, i32 1
|
|
%t139 = load %S.ast.Type, ptr %a132
|
|
store %S.ast.Type %t139, ptr %a140
|
|
call void @finch.copy.S_ast_Type(ptr %a141, ptr %a140)
|
|
%t142 = load %S.ast.Type, ptr %a141
|
|
%t143 = load i64, ptr %t138
|
|
%t144 = add i64 %t143, 1
|
|
call void @finch_arr_reserve(ptr %a117, i64 %t144, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t145 = load ptr, ptr %a117
|
|
%t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 %t143
|
|
store %S.ast.Type %t142, ptr %t146
|
|
store i64 %t144, ptr %t138
|
|
br label %each.step6888
|
|
each.step6888:
|
|
%t147 = load i64, ptr %a119
|
|
%t148 = add i64 %t147, 1
|
|
store i64 %t148, ptr %a119
|
|
br label %each.cond6886
|
|
each.end6889:
|
|
%t149 = load ptr, ptr %a1
|
|
%t150 = load %S.ast.Type, ptr %a111
|
|
%t151 = load { ptr, i64, i64 }, ptr %a117
|
|
%t152 = call %S.gen.Plan @finch.gen.makePlan(ptr %t149, %S.ast.Type %t150, { ptr, i64, i64 } %t151)
|
|
store %S.gen.Plan %t152, ptr %a153
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a154
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a155
|
|
store { ptr, i64, i64 } { ptr @.str.4425, i64 0, i64 0 }, ptr %a156
|
|
%t157 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 3
|
|
%t158 = load i1, ptr %t157
|
|
br i1 %t158, label %then6890, label %endif6892
|
|
then6890:
|
|
%t159 = load ptr, ptr %a1
|
|
%t160 = load ptr, ptr %a1
|
|
%t161 = load %S.ast.Type, ptr %a111
|
|
%t162 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t160, %S.ast.Type %t161)
|
|
%t163 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } %t162)
|
|
store { ptr, i64, i64 } %t163, ptr %a156
|
|
%t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1
|
|
%t165 = load ptr, ptr %a1
|
|
%t166 = load %S.ast.Type, ptr %a111
|
|
%t167 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t165, %S.ast.Type %t166)
|
|
store { ptr, i64, i64 } { ptr @.str.4426, i64 9, i64 0 }, ptr %a169
|
|
store { ptr, i64, i64 } %t167, ptr %a170
|
|
call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170)
|
|
%t171 = load { ptr, i64, i64 }, ptr %a168
|
|
store { ptr, i64, i64 } %t171, ptr %a173
|
|
store { ptr, i64, i64 } { ptr @.str.4427, i64 10, i64 0 }, ptr %a174
|
|
call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174)
|
|
%t175 = load { ptr, i64, i64 }, ptr %a172
|
|
%t176 = load i64, ptr %t164
|
|
%t177 = add i64 %t176, 1
|
|
call void @finch_arr_reserve(ptr %a154, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t178 = load ptr, ptr %a154
|
|
%t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176
|
|
store { ptr, i64, i64 } %t175, ptr %t179
|
|
store i64 %t177, ptr %t164
|
|
%t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1
|
|
%t181 = load ptr, ptr %a1
|
|
%t182 = load %S.ast.Type, ptr %a111
|
|
%t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t181, %S.ast.Type %t182)
|
|
store { ptr, i64, i64 } { ptr @.str.4428, i64 9, i64 0 }, ptr %a185
|
|
store { ptr, i64, i64 } %t183, ptr %a186
|
|
call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186)
|
|
%t187 = load { ptr, i64, i64 }, ptr %a184
|
|
store { ptr, i64, i64 } %t187, ptr %a189
|
|
store { ptr, i64, i64 } { ptr @.str.4429, i64 11, i64 0 }, ptr %a190
|
|
call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190)
|
|
%t191 = load { ptr, i64, i64 }, ptr %a188
|
|
%t192 = load { ptr, i64, i64 }, ptr %a156
|
|
store { ptr, i64, i64 } %t191, ptr %a194
|
|
store { ptr, i64, i64 } %t192, ptr %a195
|
|
call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195)
|
|
%t196 = load { ptr, i64, i64 }, ptr %a193
|
|
%t197 = load i64, ptr %t180
|
|
%t198 = add i64 %t197, 1
|
|
call void @finch_arr_reserve(ptr %a155, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t199 = load ptr, ptr %a155
|
|
%t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197
|
|
store { ptr, i64, i64 } %t196, ptr %t200
|
|
store i64 %t198, ptr %t180
|
|
br label %endif6892
|
|
endif6892:
|
|
%t201 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1
|
|
%t203 = load i64, ptr %t202
|
|
store i64 0, ptr %a204
|
|
br label %for.cond6893
|
|
for.cond6893:
|
|
%t205 = load i64, ptr %a204
|
|
%t206 = icmp slt i64 %t205, %t203
|
|
br i1 %t206, label %for.body6894, label %for.end6896
|
|
for.body6894:
|
|
%t207 = load i64, ptr %a204
|
|
%t208 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3
|
|
%t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i32 0, i32 1
|
|
%t210 = load i64, ptr %t209
|
|
%t211 = icmp slt i64 %t207, %t210
|
|
br i1 %t211, label %then6897, label %endif6899
|
|
then6897:
|
|
%t212 = load i64, ptr %a204
|
|
%t213 = load { ptr, i64, i64 }, ptr %a117
|
|
%t214 = extractvalue { ptr, i64, i64 } %t213, 1
|
|
%t215 = icmp uge i64 %t212, %t214
|
|
br i1 %t215, label %range6900, label %inrange6901
|
|
range6900:
|
|
call void @finch_panic_index(ptr @.str.4430, i64 4042, i64 %t212, i64 %t214)
|
|
unreachable
|
|
inrange6901:
|
|
%t216 = extractvalue { ptr, i64, i64 } %t213, 0
|
|
%t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i64 %t212
|
|
%t218 = load %S.ast.Type, ptr %t217
|
|
store %S.ast.Type %t218, ptr %a219
|
|
call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219)
|
|
%t221 = load %S.ast.Type, ptr %a220
|
|
store %S.ast.Type %t221, ptr %a222
|
|
%t223 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 1
|
|
%t224 = load i64, ptr %a204
|
|
%t225 = load { ptr, i64, i64 }, ptr %t223
|
|
%t226 = extractvalue { ptr, i64, i64 } %t225, 1
|
|
%t227 = icmp uge i64 %t224, %t226
|
|
br i1 %t227, label %range6902, label %inrange6903
|
|
range6902:
|
|
call void @finch_panic_index(ptr @.str.4431, i64 4043, i64 %t224, i64 %t226)
|
|
unreachable
|
|
inrange6903:
|
|
%t228 = extractvalue { ptr, i64, i64 } %t225, 0
|
|
%t229 = getelementptr inbounds %S.gen.Abi, ptr %t228, i64 %t224
|
|
%t230 = load %S.gen.Abi, ptr %t229
|
|
store %S.gen.Abi %t230, ptr %a231
|
|
call void @finch.copy.S_gen_Abi(ptr %a232, ptr %a231)
|
|
%t233 = load %S.gen.Abi, ptr %a232
|
|
store %S.gen.Abi %t233, ptr %a234
|
|
%t235 = load ptr, ptr %a1
|
|
%t236 = load ptr, ptr %a1
|
|
%t237 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t238 = load i64, ptr %a204
|
|
%t239 = load { ptr, i64, i64 }, ptr %t237
|
|
%t240 = extractvalue { ptr, i64, i64 } %t239, 1
|
|
%t241 = icmp uge i64 %t238, %t240
|
|
br i1 %t241, label %range6904, label %inrange6905
|
|
range6904:
|
|
call void @finch_panic_index(ptr @.str.4432, i64 4044, i64 %t238, i64 %t240)
|
|
unreachable
|
|
inrange6905:
|
|
%t242 = extractvalue { ptr, i64, i64 } %t239, 0
|
|
%t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238
|
|
%t244 = load %S.ast.Node, ptr %t243
|
|
%t245 = load %S.ast.Type, ptr %a222
|
|
%t246 = call %S.gen.Val @finch.gen.exprWant(ptr %t236, %S.ast.Node %t244, %S.ast.Type %t245)
|
|
%t247 = load %S.ast.Type, ptr %a222
|
|
%t248 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t249 = load i64, ptr %a204
|
|
%t250 = load { ptr, i64, i64 }, ptr %t248
|
|
%t251 = extractvalue { ptr, i64, i64 } %t250, 1
|
|
%t252 = icmp uge i64 %t249, %t251
|
|
br i1 %t252, label %range6906, label %inrange6907
|
|
range6906:
|
|
call void @finch_panic_index(ptr @.str.4433, i64 4044, i64 %t249, i64 %t251)
|
|
unreachable
|
|
inrange6907:
|
|
%t253 = extractvalue { ptr, i64, i64 } %t250, 0
|
|
%t254 = getelementptr inbounds %S.ast.Node, ptr %t253, i64 %t249
|
|
%t255 = load %S.ast.Node, ptr %t254
|
|
%t256 = load i64, ptr %a204
|
|
%t257 = add i64 %t256, 1
|
|
call void @finch_str_from_int(ptr %a258, i64 %t257)
|
|
%t259 = load { ptr, i64, i64 }, ptr %a258
|
|
store { ptr, i64, i64 } { ptr @.str.4434, i64 9, i64 0 }, ptr %a261
|
|
store { ptr, i64, i64 } %t259, ptr %a262
|
|
call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262)
|
|
%t263 = load { ptr, i64, i64 }, ptr %a260
|
|
store { ptr, i64, i64 } %t263, ptr %a265
|
|
store { ptr, i64, i64 } { ptr @.str.4435, i64 4, i64 0 }, ptr %a266
|
|
call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266)
|
|
%t267 = load { ptr, i64, i64 }, ptr %a264
|
|
%t268 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t269 = load { ptr, i64, i64 }, ptr %t268
|
|
store { ptr, i64, i64 } %t267, ptr %a271
|
|
store { ptr, i64, i64 } %t269, ptr %a272
|
|
call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272)
|
|
%t273 = load { ptr, i64, i64 }, ptr %a270
|
|
%t274 = call %S.gen.Val @finch.gen.coerce(ptr %t235, %S.gen.Val %t246, %S.ast.Type %t247, %S.ast.Node %t255, { ptr, i64, i64 } %t273)
|
|
store %S.gen.Val %t274, ptr %a275
|
|
%t276 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 0
|
|
%t277 = load { ptr, i64, i64 }, ptr %t276
|
|
store { ptr, i64, i64 } %t277, ptr %a278
|
|
store { ptr, i64, i64 } { ptr @.str.4436, i64 6, i64 0 }, ptr %a279
|
|
%t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279)
|
|
%t281 = icmp ne i32 %t280, 0
|
|
br i1 %t281, label %then6908, label %else6909
|
|
then6908:
|
|
%t282 = load ptr, ptr %a1
|
|
%t283 = load ptr, ptr %a1
|
|
%t284 = load %S.ast.Type, ptr %a222
|
|
%t285 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t284)
|
|
%t286 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } %t285)
|
|
store { ptr, i64, i64 } %t286, ptr %a287
|
|
%t288 = load ptr, ptr %a1
|
|
%t289 = load ptr, ptr %a1
|
|
%t290 = load %S.ast.Type, ptr %a222
|
|
%t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290)
|
|
%t292 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0
|
|
%t293 = load { ptr, i64, i64 }, ptr %t292
|
|
%t294 = load { ptr, i64, i64 }, ptr %a287
|
|
call void @finch.gen.store(ptr %t288, { ptr, i64, i64 } %t291, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294)
|
|
%t295 = load ptr, ptr %a1
|
|
%t296 = load %S.ast.Type, ptr %a222
|
|
%t297 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t295, %S.ast.Type %t296)
|
|
store { ptr, i64, i64 } { ptr @.str.4437, i64 10, i64 0 }, ptr %a299
|
|
store { ptr, i64, i64 } %t297, ptr %a300
|
|
call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300)
|
|
%t301 = load { ptr, i64, i64 }, ptr %a298
|
|
store { ptr, i64, i64 } %t301, ptr %a303
|
|
store { ptr, i64, i64 } { ptr @.str.4438, i64 8, i64 0 }, ptr %a304
|
|
call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304)
|
|
%t305 = load { ptr, i64, i64 }, ptr %a302
|
|
%t306 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 3
|
|
%t307 = load i64, ptr %t306
|
|
call void @finch_str_from_int(ptr %a308, i64 %t307)
|
|
%t309 = load { ptr, i64, i64 }, ptr %a308
|
|
store { ptr, i64, i64 } %t305, ptr %a311
|
|
store { ptr, i64, i64 } %t309, ptr %a312
|
|
call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312)
|
|
%t313 = load { ptr, i64, i64 }, ptr %a310
|
|
store { ptr, i64, i64 } %t313, ptr %a314
|
|
%t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1
|
|
%t316 = load { ptr, i64, i64 }, ptr %a314
|
|
store { ptr, i64, i64 } %t316, ptr %a317
|
|
call void @finch_str_copy(ptr %a318, ptr %a317)
|
|
%t319 = load { ptr, i64, i64 }, ptr %a318
|
|
%t320 = load i64, ptr %t315
|
|
%t321 = add i64 %t320, 1
|
|
call void @finch_arr_reserve(ptr %a154, i64 %t321, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t322 = load ptr, ptr %a154
|
|
%t323 = getelementptr inbounds { ptr, i64, i64 }, ptr %t322, i64 %t320
|
|
store { ptr, i64, i64 } %t319, ptr %t323
|
|
store i64 %t321, ptr %t315
|
|
%t324 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1
|
|
%t325 = load { ptr, i64, i64 }, ptr %a314
|
|
store { ptr, i64, i64 } %t325, ptr %a327
|
|
store { ptr, i64, i64 } { ptr @.str.4439, i64 1, i64 0 }, ptr %a328
|
|
call void @finch_str_concat(ptr %a326, ptr %a327, ptr %a328)
|
|
%t329 = load { ptr, i64, i64 }, ptr %a326
|
|
%t330 = load { ptr, i64, i64 }, ptr %a287
|
|
store { ptr, i64, i64 } %t329, ptr %a332
|
|
store { ptr, i64, i64 } %t330, ptr %a333
|
|
call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333)
|
|
%t334 = load { ptr, i64, i64 }, ptr %a331
|
|
%t335 = load i64, ptr %t324
|
|
%t336 = add i64 %t335, 1
|
|
call void @finch_arr_reserve(ptr %a155, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t337 = load ptr, ptr %a155
|
|
%t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335
|
|
store { ptr, i64, i64 } %t334, ptr %t338
|
|
store i64 %t336, ptr %t324
|
|
br label %endif6910
|
|
else6909:
|
|
%t339 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 0
|
|
%t340 = load { ptr, i64, i64 }, ptr %t339
|
|
store { ptr, i64, i64 } %t340, ptr %a341
|
|
store { ptr, i64, i64 } { ptr @.str.4440, i64 8, i64 0 }, ptr %a342
|
|
%t343 = call i32 @finch_str_eq(ptr %a341, ptr %a342)
|
|
%t344 = icmp ne i32 %t343, 0
|
|
br i1 %t344, label %then6911, label %else6912
|
|
then6911:
|
|
%t345 = load ptr, ptr %a1
|
|
%t346 = load ptr, ptr %a1
|
|
%t347 = load %S.ast.Type, ptr %a222
|
|
%t348 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t346, %S.ast.Type %t347)
|
|
%t349 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t345, { ptr, i64, i64 } %t348)
|
|
store { ptr, i64, i64 } %t349, ptr %a350
|
|
%t351 = load ptr, ptr %a1
|
|
%t352 = load ptr, ptr %a1
|
|
%t353 = load %S.ast.Type, ptr %a222
|
|
%t354 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t352, %S.ast.Type %t353)
|
|
%t355 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0
|
|
%t356 = load { ptr, i64, i64 }, ptr %t355
|
|
%t357 = load { ptr, i64, i64 }, ptr %a350
|
|
call void @finch.gen.store(ptr %t351, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356, { ptr, i64, i64 } %t357)
|
|
%t358 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1
|
|
%t359 = load i64, ptr %t358
|
|
%t360 = add i64 %t359, 1
|
|
call void @finch_arr_reserve(ptr %a154, i64 %t360, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t361 = load ptr, ptr %a154
|
|
%t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i64 %t359
|
|
store { ptr, i64, i64 } { ptr @.str.4441, i64 3, i64 0 }, ptr %t362
|
|
store i64 %t360, ptr %t358
|
|
%t363 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1
|
|
%t364 = load { ptr, i64, i64 }, ptr %a350
|
|
store { ptr, i64, i64 } { ptr @.str.4442, i64 4, i64 0 }, ptr %a366
|
|
store { ptr, i64, i64 } %t364, ptr %a367
|
|
call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367)
|
|
%t368 = load { ptr, i64, i64 }, ptr %a365
|
|
%t369 = load i64, ptr %t363
|
|
%t370 = add i64 %t369, 1
|
|
call void @finch_arr_reserve(ptr %a155, i64 %t370, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t371 = load ptr, ptr %a155
|
|
%t372 = getelementptr inbounds { ptr, i64, i64 }, ptr %t371, i64 %t369
|
|
store { ptr, i64, i64 } %t368, ptr %t372
|
|
store i64 %t370, ptr %t363
|
|
br label %endif6913
|
|
else6912:
|
|
%t373 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 0
|
|
%t374 = load { ptr, i64, i64 }, ptr %t373
|
|
store { ptr, i64, i64 } %t374, ptr %a375
|
|
store { ptr, i64, i64 } { ptr @.str.4443, i64 6, i64 0 }, ptr %a376
|
|
%t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376)
|
|
%t378 = icmp ne i32 %t377, 0
|
|
br i1 %t378, label %then6914, label %else6915
|
|
then6914:
|
|
%t379 = load ptr, ptr %a1
|
|
%t380 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t379, { ptr, i64, i64 } { ptr @.str.4444, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t380, ptr %a381
|
|
%t382 = load ptr, ptr %a1
|
|
%t383 = load ptr, ptr %a1
|
|
%t384 = load %S.ast.Type, ptr %a222
|
|
%t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384)
|
|
%t386 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0
|
|
%t387 = load { ptr, i64, i64 }, ptr %t386
|
|
%t388 = load { ptr, i64, i64 }, ptr %a381
|
|
call void @finch.gen.store(ptr %t382, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387, { ptr, i64, i64 } %t388)
|
|
%t389 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 1
|
|
%t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i32 0, i32 1
|
|
%t391 = load i64, ptr %t390
|
|
store i64 0, ptr %a392
|
|
br label %for.cond6917
|
|
for.cond6917:
|
|
%t393 = load i64, ptr %a392
|
|
%t394 = icmp slt i64 %t393, %t391
|
|
br i1 %t394, label %for.body6918, label %for.end6920
|
|
for.body6918:
|
|
%t395 = load ptr, ptr %a1
|
|
%t396 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 1
|
|
%t397 = load i64, ptr %a392
|
|
%t398 = load { ptr, i64, i64 }, ptr %t396
|
|
%t399 = extractvalue { ptr, i64, i64 } %t398, 1
|
|
%t400 = icmp uge i64 %t397, %t399
|
|
br i1 %t400, label %range6921, label %inrange6922
|
|
range6921:
|
|
call void @finch_panic_index(ptr @.str.4445, i64 4060, i64 %t397, i64 %t399)
|
|
unreachable
|
|
inrange6922:
|
|
%t401 = extractvalue { ptr, i64, i64 } %t398, 0
|
|
%t402 = getelementptr inbounds { ptr, i64, i64 }, ptr %t401, i64 %t397
|
|
%t403 = load { ptr, i64, i64 }, ptr %t402
|
|
%t404 = load ptr, ptr %a1
|
|
%t405 = load { ptr, i64, i64 }, ptr %a381
|
|
store { ptr, i64, i64 } { ptr @.str.4446, i64 31, i64 0 }, ptr %a407
|
|
store { ptr, i64, i64 } %t405, ptr %a408
|
|
call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408)
|
|
%t409 = load { ptr, i64, i64 }, ptr %a406
|
|
store { ptr, i64, i64 } %t409, ptr %a411
|
|
store { ptr, i64, i64 } { ptr @.str.4447, i64 6, i64 0 }, ptr %a412
|
|
call void @finch_str_concat(ptr %a410, ptr %a411, ptr %a412)
|
|
%t413 = load { ptr, i64, i64 }, ptr %a410
|
|
%t414 = load i64, ptr %a392
|
|
%t415 = mul i64 8, %t414
|
|
call void @finch_str_from_int(ptr %a416, i64 %t415)
|
|
%t417 = load { ptr, i64, i64 }, ptr %a416
|
|
store { ptr, i64, i64 } %t413, ptr %a419
|
|
store { ptr, i64, i64 } %t417, ptr %a420
|
|
call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420)
|
|
%t421 = load { ptr, i64, i64 }, ptr %a418
|
|
%t422 = call { ptr, i64, i64 } @finch.gen.op(ptr %t404, { ptr, i64, i64 } %t421)
|
|
%t423 = call { ptr, i64, i64 } @finch.gen.load(ptr %t395, { ptr, i64, i64 } %t403, { ptr, i64, i64 } %t422)
|
|
store { ptr, i64, i64 } %t423, ptr %a424
|
|
%t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1
|
|
%t426 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 1
|
|
%t427 = load i64, ptr %a392
|
|
%t428 = load { ptr, i64, i64 }, ptr %t426
|
|
%t429 = extractvalue { ptr, i64, i64 } %t428, 1
|
|
%t430 = icmp uge i64 %t427, %t429
|
|
br i1 %t430, label %range6923, label %inrange6924
|
|
range6923:
|
|
call void @finch_panic_index(ptr @.str.4448, i64 4061, i64 %t427, i64 %t429)
|
|
unreachable
|
|
inrange6924:
|
|
%t431 = extractvalue { ptr, i64, i64 } %t428, 0
|
|
%t432 = getelementptr inbounds { ptr, i64, i64 }, ptr %t431, i64 %t427
|
|
%t433 = load { ptr, i64, i64 }, ptr %t432
|
|
store { ptr, i64, i64 } %t433, ptr %a434
|
|
call void @finch_str_copy(ptr %a435, ptr %a434)
|
|
%t436 = load { ptr, i64, i64 }, ptr %a435
|
|
%t437 = load i64, ptr %t425
|
|
%t438 = add i64 %t437, 1
|
|
call void @finch_arr_reserve(ptr %a154, i64 %t438, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t439 = load ptr, ptr %a154
|
|
%t440 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i64 %t437
|
|
store { ptr, i64, i64 } %t436, ptr %t440
|
|
store i64 %t438, ptr %t425
|
|
%t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1
|
|
%t442 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 1
|
|
%t443 = load i64, ptr %a392
|
|
%t444 = load { ptr, i64, i64 }, ptr %t442
|
|
%t445 = extractvalue { ptr, i64, i64 } %t444, 1
|
|
%t446 = icmp uge i64 %t443, %t445
|
|
br i1 %t446, label %range6925, label %inrange6926
|
|
range6925:
|
|
call void @finch_panic_index(ptr @.str.4449, i64 4062, i64 %t443, i64 %t445)
|
|
unreachable
|
|
inrange6926:
|
|
%t447 = extractvalue { ptr, i64, i64 } %t444, 0
|
|
%t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i64 %t443
|
|
%t449 = load { ptr, i64, i64 }, ptr %t448
|
|
store { ptr, i64, i64 } %t449, ptr %a451
|
|
store { ptr, i64, i64 } { ptr @.str.4450, i64 1, i64 0 }, ptr %a452
|
|
call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452)
|
|
%t453 = load { ptr, i64, i64 }, ptr %a450
|
|
%t454 = load { ptr, i64, i64 }, ptr %a424
|
|
store { ptr, i64, i64 } %t453, ptr %a456
|
|
store { ptr, i64, i64 } %t454, ptr %a457
|
|
call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457)
|
|
%t458 = load { ptr, i64, i64 }, ptr %a455
|
|
%t459 = load i64, ptr %t441
|
|
%t460 = add i64 %t459, 1
|
|
call void @finch_arr_reserve(ptr %a155, i64 %t460, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t461 = load ptr, ptr %a155
|
|
%t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i64 %t459
|
|
store { ptr, i64, i64 } %t458, ptr %t462
|
|
store i64 %t460, ptr %t441
|
|
br label %for.step6919
|
|
for.step6919:
|
|
%t463 = load i64, ptr %a392
|
|
%t464 = add i64 %t463, 1
|
|
store i64 %t464, ptr %a392
|
|
br label %for.cond6917
|
|
for.end6920:
|
|
br label %endif6916
|
|
else6915:
|
|
%t465 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1
|
|
%t466 = load ptr, ptr %a1
|
|
%t467 = load %S.ast.Type, ptr %a222
|
|
%t468 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t466, %S.ast.Type %t467)
|
|
%t469 = load ptr, ptr %a1
|
|
%t470 = load %S.ast.Type, ptr %a222
|
|
%t471 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t469, %S.ast.Type %t470)
|
|
store { ptr, i64, i64 } %t468, ptr %a473
|
|
store { ptr, i64, i64 } %t471, ptr %a474
|
|
call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474)
|
|
%t475 = load { ptr, i64, i64 }, ptr %a472
|
|
%t476 = load i64, ptr %t465
|
|
%t477 = add i64 %t476, 1
|
|
call void @finch_arr_reserve(ptr %a154, i64 %t477, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t478 = load ptr, ptr %a154
|
|
%t479 = getelementptr inbounds { ptr, i64, i64 }, ptr %t478, i64 %t476
|
|
store { ptr, i64, i64 } %t475, ptr %t479
|
|
store i64 %t477, ptr %t465
|
|
%t480 = getelementptr inbounds %S.ast.Type, ptr %a222, i32 0, i32 0
|
|
%t481 = load { ptr, i64, i64 }, ptr %t480
|
|
store { ptr, i64, i64 } %t481, ptr %a482
|
|
store { ptr, i64, i64 } { ptr @.str.4451, i64 3, i64 0 }, ptr %a483
|
|
%t484 = call i32 @finch_str_eq(ptr %a482, ptr %a483)
|
|
%t485 = icmp ne i32 %t484, 0
|
|
br i1 %t485, label %then6927, label %else6928
|
|
then6927:
|
|
%t486 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1
|
|
%t487 = load ptr, ptr %a1
|
|
%t488 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0
|
|
%t489 = load { ptr, i64, i64 }, ptr %t488
|
|
%t490 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t487, { ptr, i64, i64 } %t489)
|
|
store { ptr, i64, i64 } { ptr @.str.4452, i64 4, i64 0 }, ptr %a492
|
|
store { ptr, i64, i64 } %t490, ptr %a493
|
|
call void @finch_str_concat(ptr %a491, ptr %a492, ptr %a493)
|
|
%t494 = load { ptr, i64, i64 }, ptr %a491
|
|
%t495 = load i64, ptr %t486
|
|
%t496 = add i64 %t495, 1
|
|
call void @finch_arr_reserve(ptr %a155, i64 %t496, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t497 = load ptr, ptr %a155
|
|
%t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t495
|
|
store { ptr, i64, i64 } %t494, ptr %t498
|
|
store i64 %t496, ptr %t486
|
|
br label %endif6929
|
|
else6928:
|
|
%t499 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1
|
|
%t500 = load ptr, ptr %a1
|
|
%t501 = load %S.ast.Type, ptr %a222
|
|
%t502 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t500, %S.ast.Type %t501)
|
|
%t503 = load ptr, ptr %a1
|
|
%t504 = load %S.ast.Type, ptr %a222
|
|
%t505 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t503, %S.ast.Type %t504)
|
|
store { ptr, i64, i64 } %t502, ptr %a507
|
|
store { ptr, i64, i64 } %t505, ptr %a508
|
|
call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508)
|
|
%t509 = load { ptr, i64, i64 }, ptr %a506
|
|
store { ptr, i64, i64 } %t509, ptr %a511
|
|
store { ptr, i64, i64 } { ptr @.str.4453, i64 1, i64 0 }, ptr %a512
|
|
call void @finch_str_concat(ptr %a510, ptr %a511, ptr %a512)
|
|
%t513 = load { ptr, i64, i64 }, ptr %a510
|
|
%t514 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0
|
|
%t515 = load { ptr, i64, i64 }, ptr %t514
|
|
store { ptr, i64, i64 } %t513, ptr %a517
|
|
store { ptr, i64, i64 } %t515, ptr %a518
|
|
call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518)
|
|
%t519 = load { ptr, i64, i64 }, ptr %a516
|
|
%t520 = load i64, ptr %t499
|
|
%t521 = add i64 %t520, 1
|
|
call void @finch_arr_reserve(ptr %a155, i64 %t521, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t522 = load ptr, ptr %a155
|
|
%t523 = getelementptr inbounds { ptr, i64, i64 }, ptr %t522, i64 %t520
|
|
store { ptr, i64, i64 } %t519, ptr %t523
|
|
store i64 %t521, ptr %t499
|
|
br label %endif6929
|
|
endif6929:
|
|
br label %endif6916
|
|
endif6916:
|
|
br label %endif6913
|
|
endif6913:
|
|
br label %endif6910
|
|
endif6910:
|
|
br label %for.step6895
|
|
endif6899:
|
|
%t524 = load ptr, ptr %a1
|
|
%t525 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t526 = load i64, ptr %a204
|
|
%t527 = load { ptr, i64, i64 }, ptr %t525
|
|
%t528 = extractvalue { ptr, i64, i64 } %t527, 1
|
|
%t529 = icmp uge i64 %t526, %t528
|
|
br i1 %t529, label %range6930, label %inrange6931
|
|
range6930:
|
|
call void @finch_panic_index(ptr @.str.4454, i64 4075, i64 %t526, i64 %t528)
|
|
unreachable
|
|
inrange6931:
|
|
%t530 = extractvalue { ptr, i64, i64 } %t527, 0
|
|
%t531 = getelementptr inbounds %S.ast.Node, ptr %t530, i64 %t526
|
|
%t532 = load %S.ast.Node, ptr %t531
|
|
%t533 = call %S.gen.Val @finch.gen.expr(ptr %t524, %S.ast.Node %t532)
|
|
store %S.gen.Val %t533, ptr %a534
|
|
%t535 = getelementptr inbounds %S.gen.Val, ptr %a534, i32 0, i32 1
|
|
%t536 = load %S.ast.Type, ptr %t535
|
|
store %S.ast.Type %t536, ptr %a537
|
|
call void @finch.copy.S_ast_Type(ptr %a538, ptr %a537)
|
|
%t539 = load %S.ast.Type, ptr %a538
|
|
store %S.ast.Type %t539, ptr %a540
|
|
%t541 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0
|
|
%t542 = load { ptr, i64, i64 }, ptr %t541
|
|
store { ptr, i64, i64 } %t542, ptr %a543
|
|
store { ptr, i64, i64 } { ptr @.str.4455, i64 4, i64 0 }, ptr %a544
|
|
%t545 = call i32 @finch_str_eq(ptr %a543, ptr %a544)
|
|
%t546 = icmp ne i32 %t545, 0
|
|
br i1 %t546, label %then6932, label %endif6934
|
|
then6932:
|
|
%t547 = load ptr, ptr %a1
|
|
%t548 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t549 = load i64, ptr %a204
|
|
%t550 = load { ptr, i64, i64 }, ptr %t548
|
|
%t551 = extractvalue { ptr, i64, i64 } %t550, 1
|
|
%t552 = icmp uge i64 %t549, %t551
|
|
br i1 %t552, label %range6935, label %inrange6936
|
|
range6935:
|
|
call void @finch_panic_index(ptr @.str.4456, i64 4078, i64 %t549, i64 %t551)
|
|
unreachable
|
|
inrange6936:
|
|
%t553 = extractvalue { ptr, i64, i64 } %t550, 0
|
|
%t554 = getelementptr inbounds %S.ast.Node, ptr %t553, i64 %t549
|
|
%t555 = load %S.ast.Node, ptr %t554
|
|
call void @finch.gen.fail(ptr %t547, %S.ast.Node %t555, { ptr, i64, i64 } { ptr @.str.4457, i64 23, i64 0 })
|
|
br label %endif6934
|
|
endif6934:
|
|
%t556 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0
|
|
%t557 = load { ptr, i64, i64 }, ptr %t556
|
|
store { ptr, i64, i64 } %t557, ptr %a558
|
|
store { ptr, i64, i64 } { ptr @.str.4458, i64 6, i64 0 }, ptr %a559
|
|
%t560 = call i32 @finch_str_eq(ptr %a558, ptr %a559)
|
|
%t561 = icmp ne i32 %t560, 0
|
|
br label %logic.from6937
|
|
logic.from6937:
|
|
br i1 %t561, label %logic.end6939, label %logic.rhs6938
|
|
logic.rhs6938:
|
|
%t562 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0
|
|
%t563 = load { ptr, i64, i64 }, ptr %t562
|
|
store { ptr, i64, i64 } %t563, ptr %a564
|
|
store { ptr, i64, i64 } { ptr @.str.4459, i64 5, i64 0 }, ptr %a565
|
|
%t566 = call i32 @finch_str_eq(ptr %a564, ptr %a565)
|
|
%t567 = icmp ne i32 %t566, 0
|
|
br label %logic.rend6940
|
|
logic.rend6940:
|
|
br label %logic.end6939
|
|
logic.end6939:
|
|
%t568 = phi i1 [ true, %logic.from6937 ], [ %t567, %logic.rend6940 ]
|
|
br i1 %t568, label %then6941, label %endif6943
|
|
then6941:
|
|
%t569 = load ptr, ptr %a1
|
|
%t570 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t571 = load i64, ptr %a204
|
|
%t572 = load { ptr, i64, i64 }, ptr %t570
|
|
%t573 = extractvalue { ptr, i64, i64 } %t572, 1
|
|
%t574 = icmp uge i64 %t571, %t573
|
|
br i1 %t574, label %range6944, label %inrange6945
|
|
range6944:
|
|
call void @finch_panic_index(ptr @.str.4460, i64 4081, i64 %t571, i64 %t573)
|
|
unreachable
|
|
inrange6945:
|
|
%t575 = extractvalue { ptr, i64, i64 } %t572, 0
|
|
%t576 = getelementptr inbounds %S.ast.Node, ptr %t575, i64 %t571
|
|
%t577 = load %S.ast.Node, ptr %t576
|
|
call void @finch.gen.fail(ptr %t569, %S.ast.Node %t577, { ptr, i64, i64 } { ptr @.str.4461, i64 68, i64 0 })
|
|
br label %endif6943
|
|
endif6943:
|
|
%t578 = getelementptr inbounds %S.gen.Val, ptr %a534, i32 0, i32 0
|
|
%t579 = load { ptr, i64, i64 }, ptr %t578
|
|
store { ptr, i64, i64 } %t579, ptr %a580
|
|
call void @finch_str_copy(ptr %a581, ptr %a580)
|
|
%t582 = load { ptr, i64, i64 }, ptr %a581
|
|
store { ptr, i64, i64 } %t582, ptr %a583
|
|
%t584 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0
|
|
%t585 = load { ptr, i64, i64 }, ptr %t584
|
|
store { ptr, i64, i64 } %t585, ptr %a586
|
|
store { ptr, i64, i64 } { ptr @.str.4462, i64 3, i64 0 }, ptr %a587
|
|
%t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587)
|
|
%t589 = icmp ne i32 %t588, 0
|
|
br i1 %t589, label %then6946, label %else6947
|
|
then6946:
|
|
%t590 = load ptr, ptr %a1
|
|
%t591 = load { ptr, i64, i64 }, ptr %a583
|
|
%t592 = load %S.ast.Type, ptr %a540
|
|
%t593 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4463, i64 5, i64 0 })
|
|
%t594 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t590, { ptr, i64, i64 } %t591, %S.ast.Type %t592, %S.ast.Type %t593)
|
|
store { ptr, i64, i64 } %t594, ptr %a583
|
|
%t595 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4464, i64 5, i64 0 })
|
|
store %S.ast.Type %t595, ptr %a540
|
|
br label %endif6948
|
|
else6947:
|
|
%t596 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0
|
|
%t597 = load { ptr, i64, i64 }, ptr %t596
|
|
store { ptr, i64, i64 } %t597, ptr %a598
|
|
store { ptr, i64, i64 } { ptr @.str.4465, i64 3, i64 0 }, ptr %a599
|
|
%t600 = call i32 @finch_str_eq(ptr %a598, ptr %a599)
|
|
%t601 = icmp ne i32 %t600, 0
|
|
br i1 %t601, label %then6949, label %else6950
|
|
then6949:
|
|
%t602 = load ptr, ptr %a1
|
|
%t603 = load { ptr, i64, i64 }, ptr %a583
|
|
%t604 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t602, { ptr, i64, i64 } %t603)
|
|
store { ptr, i64, i64 } %t604, ptr %a583
|
|
%t605 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4466, i64 3, i64 0 })
|
|
store %S.ast.Type %t605, ptr %a540
|
|
br label %endif6951
|
|
else6950:
|
|
%t606 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0
|
|
%t607 = load { ptr, i64, i64 }, ptr %t606
|
|
store { ptr, i64, i64 } %t607, ptr %a608
|
|
store { ptr, i64, i64 } { ptr @.str.4467, i64 4, i64 0 }, ptr %a609
|
|
%t610 = call i32 @finch_str_eq(ptr %a608, ptr %a609)
|
|
%t611 = icmp ne i32 %t610, 0
|
|
br i1 %t611, label %then6952, label %else6953
|
|
then6952:
|
|
%t612 = load ptr, ptr %a1
|
|
%t613 = getelementptr inbounds %S.gen.Val, ptr %a534, i32 0, i32 0
|
|
%t614 = load { ptr, i64, i64 }, ptr %t613
|
|
store { ptr, i64, i64 } { ptr @.str.4468, i64 8, i64 0 }, ptr %a616
|
|
store { ptr, i64, i64 } %t614, ptr %a617
|
|
call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617)
|
|
%t618 = load { ptr, i64, i64 }, ptr %a615
|
|
store { ptr, i64, i64 } %t618, ptr %a620
|
|
store { ptr, i64, i64 } { ptr @.str.4469, i64 7, i64 0 }, ptr %a621
|
|
call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621)
|
|
%t622 = load { ptr, i64, i64 }, ptr %a619
|
|
%t623 = call { ptr, i64, i64 } @finch.gen.op(ptr %t612, { ptr, i64, i64 } %t622)
|
|
store { ptr, i64, i64 } %t623, ptr %a583
|
|
%t624 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 })
|
|
store %S.ast.Type %t624, ptr %a540
|
|
br label %endif6954
|
|
else6953:
|
|
%t625 = load %S.ast.Type, ptr %a540
|
|
%t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625)
|
|
br label %logic.from6955
|
|
logic.from6955:
|
|
br i1 %t626, label %logic.end6957, label %logic.rhs6956
|
|
logic.rhs6956:
|
|
%t627 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0
|
|
%t628 = load { ptr, i64, i64 }, ptr %t627
|
|
store { ptr, i64, i64 } %t628, ptr %a629
|
|
store { ptr, i64, i64 } { ptr @.str.4471, i64 4, i64 0 }, ptr %a630
|
|
%t631 = call i32 @finch_str_eq(ptr %a629, ptr %a630)
|
|
%t632 = icmp ne i32 %t631, 0
|
|
br label %logic.rend6958
|
|
logic.rend6958:
|
|
br label %logic.end6957
|
|
logic.end6957:
|
|
%t633 = phi i1 [ true, %logic.from6955 ], [ %t632, %logic.rend6958 ]
|
|
br label %logic.from6959
|
|
logic.from6959:
|
|
br i1 %t633, label %logic.rhs6960, label %logic.end6961
|
|
logic.rhs6960:
|
|
%t634 = load %S.ast.Type, ptr %a540
|
|
%t635 = call i64 @finch.gen.bitsOf(%S.ast.Type %t634)
|
|
%t636 = icmp slt i64 %t635, 32
|
|
br label %logic.rend6962
|
|
logic.rend6962:
|
|
br label %logic.end6961
|
|
logic.end6961:
|
|
%t637 = phi i1 [ false, %logic.from6959 ], [ %t636, %logic.rend6962 ]
|
|
br i1 %t637, label %then6963, label %endif6965
|
|
then6963:
|
|
%t638 = load ptr, ptr %a1
|
|
%t639 = load { ptr, i64, i64 }, ptr %a583
|
|
%t640 = load %S.ast.Type, ptr %a540
|
|
%t641 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4472, i64 3, i64 0 })
|
|
%t642 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t638, { ptr, i64, i64 } %t639, %S.ast.Type %t640, %S.ast.Type %t641)
|
|
store { ptr, i64, i64 } %t642, ptr %a583
|
|
%t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4473, i64 3, i64 0 })
|
|
store %S.ast.Type %t643, ptr %a540
|
|
br label %endif6965
|
|
endif6965:
|
|
br label %endif6954
|
|
endif6954:
|
|
br label %endif6951
|
|
endif6951:
|
|
br label %endif6948
|
|
endif6948:
|
|
%t644 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1
|
|
%t645 = load ptr, ptr %a1
|
|
%t646 = load %S.ast.Type, ptr %a540
|
|
%t647 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t645, %S.ast.Type %t646)
|
|
store { ptr, i64, i64 } %t647, ptr %a649
|
|
store { ptr, i64, i64 } { ptr @.str.4474, i64 1, i64 0 }, ptr %a650
|
|
call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650)
|
|
%t651 = load { ptr, i64, i64 }, ptr %a648
|
|
%t652 = load { ptr, i64, i64 }, ptr %a583
|
|
store { ptr, i64, i64 } %t651, ptr %a654
|
|
store { ptr, i64, i64 } %t652, ptr %a655
|
|
call void @finch_str_concat(ptr %a653, ptr %a654, ptr %a655)
|
|
%t656 = load { ptr, i64, i64 }, ptr %a653
|
|
%t657 = load i64, ptr %t644
|
|
%t658 = add i64 %t657, 1
|
|
call void @finch_arr_reserve(ptr %a155, i64 %t658, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t659 = load ptr, ptr %a155
|
|
%t660 = getelementptr inbounds { ptr, i64, i64 }, ptr %t659, i64 %t657
|
|
store { ptr, i64, i64 } %t656, ptr %t660
|
|
store i64 %t658, ptr %t644
|
|
br label %for.step6895
|
|
for.step6895:
|
|
%t661 = load i64, ptr %a204
|
|
%t662 = add i64 %t661, 1
|
|
store i64 %t662, ptr %a204
|
|
br label %for.cond6893
|
|
for.end6896:
|
|
%t663 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 2
|
|
%t664 = load { ptr, i64, i64 }, ptr %t663
|
|
store { ptr, i64, i64 } %t664, ptr %a665
|
|
call void @finch_str_copy(ptr %a666, ptr %a665)
|
|
%t667 = load { ptr, i64, i64 }, ptr %a666
|
|
store { ptr, i64, i64 } %t667, ptr %a668
|
|
store { ptr, i64, i64 } { ptr @.str.4475, i64 0, i64 0 }, ptr %a669
|
|
%t670 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 0
|
|
%t671 = getelementptr inbounds %S.gen.Abi, ptr %t670, i32 0, i32 0
|
|
%t672 = load { ptr, i64, i64 }, ptr %t671
|
|
store { ptr, i64, i64 } %t672, ptr %a673
|
|
store { ptr, i64, i64 } { ptr @.str.4476, i64 6, i64 0 }, ptr %a674
|
|
%t675 = call i32 @finch_str_eq(ptr %a673, ptr %a674)
|
|
%t676 = icmp ne i32 %t675, 0
|
|
br i1 %t676, label %then6966, label %endif6968
|
|
then6966:
|
|
%t677 = load ptr, ptr %a1
|
|
%t678 = load %S.ast.Type, ptr %a111
|
|
%t679 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t677, %S.ast.Type %t678)
|
|
store { ptr, i64, i64 } %t679, ptr %a669
|
|
br label %endif6968
|
|
endif6968:
|
|
store { ptr, i64, i64 } { ptr @.str.4477, i64 0, i64 0 }, ptr %a680
|
|
%t681 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4
|
|
%t682 = load i1, ptr %t681
|
|
br i1 %t682, label %then6969, label %endif6971
|
|
then6969:
|
|
store { ptr, i64, i64 } { ptr @.str.4478, i64 5, i64 0 }, ptr %a680
|
|
%t683 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1
|
|
%t684 = load i64, ptr %t683
|
|
%t685 = icmp eq i64 %t684, 0
|
|
br i1 %t685, label %then6972, label %endif6974
|
|
then6972:
|
|
store { ptr, i64, i64 } { ptr @.str.4479, i64 3, i64 0 }, ptr %a680
|
|
br label %endif6974
|
|
endif6974:
|
|
br label %endif6971
|
|
endif6971:
|
|
%t686 = load ptr, ptr %a1
|
|
%t687 = icmp eq ptr %t686, null
|
|
br i1 %t687, label %panic6975, label %ok6976
|
|
panic6975:
|
|
call void @finch_panic(ptr @.str.4480, i64 4112, ptr @.str.4481)
|
|
unreachable
|
|
ok6976:
|
|
%t688 = getelementptr inbounds %S.gen.Gen, ptr %t686, i32 0, i32 36
|
|
%t689 = getelementptr inbounds { ptr, i64, i64 }, ptr %t688, i32 0, i32 1
|
|
%t690 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t691 = load { ptr, i64, i64 }, ptr %t690
|
|
store { ptr, i64, i64 } { ptr @.str.4482, i64 2, i64 0 }, ptr %a693
|
|
store { ptr, i64, i64 } %t691, ptr %a694
|
|
call void @finch_str_concat(ptr %a692, ptr %a693, ptr %a694)
|
|
%t695 = load { ptr, i64, i64 }, ptr %a692
|
|
store i64 -1, ptr %a696
|
|
%t697 = load i64, ptr %t689
|
|
%t698 = load ptr, ptr %t688
|
|
store i64 0, ptr %a699
|
|
br label %find.cond6977
|
|
find.cond6977:
|
|
%t700 = load i64, ptr %a699
|
|
%t701 = icmp slt i64 %t700, %t697
|
|
br i1 %t701, label %find.body6978, label %find.end6981
|
|
find.body6978:
|
|
%t702 = getelementptr inbounds { ptr, i64, i64 }, ptr %t698, i64 %t700
|
|
%t703 = load { ptr, i64, i64 }, ptr %t702
|
|
store { ptr, i64, i64 } %t703, ptr %a704
|
|
store { ptr, i64, i64 } %t695, ptr %a705
|
|
%t706 = call i32 @finch_str_eq(ptr %a704, ptr %a705)
|
|
%t707 = icmp ne i32 %t706, 0
|
|
br i1 %t707, label %find.hit6979, label %find.next6980
|
|
find.hit6979:
|
|
store i64 %t700, ptr %a696
|
|
br label %find.end6981
|
|
find.next6980:
|
|
%t708 = add i64 %t700, 1
|
|
store i64 %t708, ptr %a699
|
|
br label %find.cond6977
|
|
find.end6981:
|
|
%t709 = load i64, ptr %a696
|
|
%t710 = icmp sge i64 %t709, 0
|
|
%t711 = xor i1 %t710, true
|
|
br i1 %t711, label %then6982, label %endif6984
|
|
then6982:
|
|
%t712 = load ptr, ptr %a1
|
|
%t713 = icmp eq ptr %t712, null
|
|
br i1 %t713, label %panic6985, label %ok6986
|
|
panic6985:
|
|
call void @finch_panic(ptr @.str.4483, i64 4113, ptr @.str.4484)
|
|
unreachable
|
|
ok6986:
|
|
%t714 = getelementptr inbounds %S.gen.Gen, ptr %t712, i32 0, i32 36
|
|
%t715 = getelementptr inbounds { ptr, i64, i64 }, ptr %t714, i32 0, i32 1
|
|
%t716 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t717 = load { ptr, i64, i64 }, ptr %t716
|
|
store { ptr, i64, i64 } { ptr @.str.4485, i64 2, i64 0 }, ptr %a719
|
|
store { ptr, i64, i64 } %t717, ptr %a720
|
|
call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720)
|
|
%t721 = load { ptr, i64, i64 }, ptr %a718
|
|
%t722 = load i64, ptr %t715
|
|
%t723 = add i64 %t722, 1
|
|
call void @finch_arr_reserve(ptr %t714, i64 %t723, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t724 = load ptr, ptr %t714
|
|
%t725 = getelementptr inbounds { ptr, i64, i64 }, ptr %t724, i64 %t722
|
|
store { ptr, i64, i64 } %t721, ptr %t725
|
|
store i64 %t723, ptr %t715
|
|
%t726 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t727 = load { ptr, i64, i64 }, ptr %t726
|
|
%t728 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t727)
|
|
%t729 = xor i1 %t728, true
|
|
br i1 %t729, label %then6987, label %endif6989
|
|
then6987:
|
|
%t730 = load ptr, ptr %a1
|
|
%t731 = icmp eq ptr %t730, null
|
|
br i1 %t731, label %panic6990, label %ok6991
|
|
panic6990:
|
|
call void @finch_panic(ptr @.str.4486, i64 4115, ptr @.str.4487)
|
|
unreachable
|
|
ok6991:
|
|
%t732 = getelementptr inbounds %S.gen.Gen, ptr %t730, i32 0, i32 2
|
|
%t733 = getelementptr inbounds { ptr, i64, i64 }, ptr %t732, i32 0, i32 1
|
|
%t734 = load { ptr, i64, i64 }, ptr %a669
|
|
store { ptr, i64, i64 } { ptr @.str.4488, i64 7, i64 0 }, ptr %a736
|
|
store { ptr, i64, i64 } %t734, ptr %a737
|
|
call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737)
|
|
%t738 = load { ptr, i64, i64 }, ptr %a735
|
|
store { ptr, i64, i64 } %t738, ptr %a740
|
|
store { ptr, i64, i64 } { ptr @.str.4489, i64 1, i64 0 }, ptr %a741
|
|
call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741)
|
|
%t742 = load { ptr, i64, i64 }, ptr %a739
|
|
%t743 = load { ptr, i64, i64 }, ptr %a668
|
|
store { ptr, i64, i64 } %t742, ptr %a745
|
|
store { ptr, i64, i64 } %t743, ptr %a746
|
|
call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746)
|
|
%t747 = load { ptr, i64, i64 }, ptr %a744
|
|
store { ptr, i64, i64 } %t747, ptr %a749
|
|
store { ptr, i64, i64 } { ptr @.str.4490, i64 2, i64 0 }, ptr %a750
|
|
call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750)
|
|
%t751 = load { ptr, i64, i64 }, ptr %a748
|
|
%t752 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t753 = load { ptr, i64, i64 }, ptr %t752
|
|
store { ptr, i64, i64 } %t751, ptr %a755
|
|
store { ptr, i64, i64 } %t753, ptr %a756
|
|
call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756)
|
|
%t757 = load { ptr, i64, i64 }, ptr %a754
|
|
store { ptr, i64, i64 } %t757, ptr %a759
|
|
store { ptr, i64, i64 } { ptr @.str.4491, i64 1, i64 0 }, ptr %a760
|
|
call void @finch_str_concat(ptr %a758, ptr %a759, ptr %a760)
|
|
%t761 = load { ptr, i64, i64 }, ptr %a758
|
|
%t762 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4492, i64 2, i64 0 }, ptr %a763
|
|
call void @finch_str_join(ptr %a764, ptr %a154, ptr %a763)
|
|
%t765 = load { ptr, i64, i64 }, ptr %a764
|
|
store { ptr, i64, i64 } %t761, ptr %a767
|
|
store { ptr, i64, i64 } %t765, ptr %a768
|
|
call void @finch_str_concat(ptr %a766, ptr %a767, ptr %a768)
|
|
%t769 = load { ptr, i64, i64 }, ptr %a766
|
|
%t770 = load { ptr, i64, i64 }, ptr %a680
|
|
store { ptr, i64, i64 } %t769, ptr %a772
|
|
store { ptr, i64, i64 } %t770, ptr %a773
|
|
call void @finch_str_concat(ptr %a771, ptr %a772, ptr %a773)
|
|
%t774 = load { ptr, i64, i64 }, ptr %a771
|
|
store { ptr, i64, i64 } %t774, ptr %a776
|
|
store { ptr, i64, i64 } { ptr @.str.4493, i64 1, i64 0 }, ptr %a777
|
|
call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777)
|
|
%t778 = load { ptr, i64, i64 }, ptr %a775
|
|
%t779 = load i64, ptr %t733
|
|
%t780 = add i64 %t779, 1
|
|
call void @finch_arr_reserve(ptr %t732, i64 %t780, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t781 = load ptr, ptr %t732
|
|
%t782 = getelementptr inbounds { ptr, i64, i64 }, ptr %t781, i64 %t779
|
|
store { ptr, i64, i64 } %t778, ptr %t782
|
|
store i64 %t780, ptr %t733
|
|
br label %endif6989
|
|
endif6989:
|
|
br label %endif6984
|
|
endif6984:
|
|
store { ptr, i64, i64 } { ptr @.str.4494, i64 0, i64 0 }, ptr %a783
|
|
%t784 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4
|
|
%t785 = load i1, ptr %t784
|
|
br i1 %t785, label %then6992, label %endif6994
|
|
then6992:
|
|
%t786 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4496, i64 2, i64 0 }, ptr %a787
|
|
call void @finch_str_join(ptr %a788, ptr %a154, ptr %a787)
|
|
%t789 = load { ptr, i64, i64 }, ptr %a788
|
|
store { ptr, i64, i64 } { ptr @.str.4495, i64 2, i64 0 }, ptr %a791
|
|
store { ptr, i64, i64 } %t789, ptr %a792
|
|
call void @finch_str_concat(ptr %a790, ptr %a791, ptr %a792)
|
|
%t793 = load { ptr, i64, i64 }, ptr %a790
|
|
%t794 = load { ptr, i64, i64 }, ptr %a680
|
|
store { ptr, i64, i64 } %t793, ptr %a796
|
|
store { ptr, i64, i64 } %t794, ptr %a797
|
|
call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797)
|
|
%t798 = load { ptr, i64, i64 }, ptr %a795
|
|
store { ptr, i64, i64 } %t798, ptr %a800
|
|
store { ptr, i64, i64 } { ptr @.str.4497, i64 1, i64 0 }, ptr %a801
|
|
call void @finch_str_concat(ptr %a799, ptr %a800, ptr %a801)
|
|
%t802 = load { ptr, i64, i64 }, ptr %a799
|
|
store { ptr, i64, i64 } %t802, ptr %a783
|
|
br label %endif6994
|
|
endif6994:
|
|
%t803 = load { ptr, i64, i64 }, ptr %a669
|
|
store { ptr, i64, i64 } { ptr @.str.4498, i64 4, i64 0 }, ptr %a805
|
|
store { ptr, i64, i64 } %t803, ptr %a806
|
|
call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806)
|
|
%t807 = load { ptr, i64, i64 }, ptr %a804
|
|
store { ptr, i64, i64 } %t807, ptr %a809
|
|
store { ptr, i64, i64 } { ptr @.str.4499, i64 1, i64 0 }, ptr %a810
|
|
call void @finch_str_concat(ptr %a808, ptr %a809, ptr %a810)
|
|
%t811 = load { ptr, i64, i64 }, ptr %a808
|
|
%t812 = load { ptr, i64, i64 }, ptr %a668
|
|
store { ptr, i64, i64 } %t811, ptr %a814
|
|
store { ptr, i64, i64 } %t812, ptr %a815
|
|
call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815)
|
|
%t816 = load { ptr, i64, i64 }, ptr %a813
|
|
%t817 = load { ptr, i64, i64 }, ptr %a783
|
|
store { ptr, i64, i64 } %t816, ptr %a819
|
|
store { ptr, i64, i64 } %t817, ptr %a820
|
|
call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820)
|
|
%t821 = load { ptr, i64, i64 }, ptr %a818
|
|
store { ptr, i64, i64 } %t821, ptr %a823
|
|
store { ptr, i64, i64 } { ptr @.str.4500, i64 2, i64 0 }, ptr %a824
|
|
call void @finch_str_concat(ptr %a822, ptr %a823, ptr %a824)
|
|
%t825 = load { ptr, i64, i64 }, ptr %a822
|
|
%t826 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0
|
|
%t827 = load { ptr, i64, i64 }, ptr %t826
|
|
store { ptr, i64, i64 } %t825, ptr %a829
|
|
store { ptr, i64, i64 } %t827, ptr %a830
|
|
call void @finch_str_concat(ptr %a828, ptr %a829, ptr %a830)
|
|
%t831 = load { ptr, i64, i64 }, ptr %a828
|
|
store { ptr, i64, i64 } %t831, ptr %a833
|
|
store { ptr, i64, i64 } { ptr @.str.4501, i64 1, i64 0 }, ptr %a834
|
|
call void @finch_str_concat(ptr %a832, ptr %a833, ptr %a834)
|
|
%t835 = load { ptr, i64, i64 }, ptr %a832
|
|
%t836 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4502, i64 2, i64 0 }, ptr %a837
|
|
call void @finch_str_join(ptr %a838, ptr %a155, ptr %a837)
|
|
%t839 = load { ptr, i64, i64 }, ptr %a838
|
|
store { ptr, i64, i64 } %t835, ptr %a841
|
|
store { ptr, i64, i64 } %t839, ptr %a842
|
|
call void @finch_str_concat(ptr %a840, ptr %a841, ptr %a842)
|
|
%t843 = load { ptr, i64, i64 }, ptr %a840
|
|
store { ptr, i64, i64 } %t843, ptr %a845
|
|
store { ptr, i64, i64 } { ptr @.str.4503, i64 1, i64 0 }, ptr %a846
|
|
call void @finch_str_concat(ptr %a844, ptr %a845, ptr %a846)
|
|
%t847 = load { ptr, i64, i64 }, ptr %a844
|
|
store { ptr, i64, i64 } %t847, ptr %a848
|
|
%t849 = getelementptr inbounds %S.ast.Type, ptr %a111, i32 0, i32 0
|
|
%t850 = load { ptr, i64, i64 }, ptr %t849
|
|
store { ptr, i64, i64 } %t850, ptr %a851
|
|
store { ptr, i64, i64 } { ptr @.str.4504, i64 4, i64 0 }, ptr %a852
|
|
%t853 = call i32 @finch_str_eq(ptr %a851, ptr %a852)
|
|
%t854 = icmp ne i32 %t853, 0
|
|
br i1 %t854, label %then6995, label %endif6997
|
|
then6995:
|
|
%t855 = load ptr, ptr %a1
|
|
%t856 = load { ptr, i64, i64 }, ptr %a848
|
|
call void @finch.gen.emit(ptr %t855, { ptr, i64, i64 } %t856)
|
|
%t857 = load %S.ast.Type, ptr %a111
|
|
store %S.ast.Type %t857, ptr %a858
|
|
call void @finch.copy.S_ast_Type(ptr %a859, ptr %a858)
|
|
%t860 = load %S.ast.Type, ptr %a859
|
|
%t861 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t860, 1
|
|
ret %S.gen.Val %t861
|
|
endif6997:
|
|
%t862 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 3
|
|
%t863 = load i1, ptr %t862
|
|
br i1 %t863, label %then6998, label %endif7000
|
|
then6998:
|
|
%t864 = load ptr, ptr %a1
|
|
%t865 = load { ptr, i64, i64 }, ptr %a848
|
|
call void @finch.gen.emit(ptr %t864, { ptr, i64, i64 } %t865)
|
|
%t866 = load ptr, ptr %a1
|
|
%t867 = load ptr, ptr %a1
|
|
%t868 = load %S.ast.Type, ptr %a111
|
|
%t869 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t867, %S.ast.Type %t868)
|
|
%t870 = load { ptr, i64, i64 }, ptr %a156
|
|
%t871 = call { ptr, i64, i64 } @finch.gen.load(ptr %t866, { ptr, i64, i64 } %t869, { ptr, i64, i64 } %t870)
|
|
%t872 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t871, 0
|
|
%t873 = load %S.ast.Type, ptr %a111
|
|
store %S.ast.Type %t873, ptr %a874
|
|
call void @finch.copy.S_ast_Type(ptr %a875, ptr %a874)
|
|
%t876 = load %S.ast.Type, ptr %a875
|
|
%t877 = insertvalue %S.gen.Val %t872, %S.ast.Type %t876, 1
|
|
ret %S.gen.Val %t877
|
|
endif7000:
|
|
%t878 = load ptr, ptr %a1
|
|
%t879 = load { ptr, i64, i64 }, ptr %a848
|
|
%t880 = call { ptr, i64, i64 } @finch.gen.op(ptr %t878, { ptr, i64, i64 } %t879)
|
|
store { ptr, i64, i64 } %t880, ptr %a881
|
|
%t882 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 0
|
|
%t883 = getelementptr inbounds %S.gen.Abi, ptr %t882, i32 0, i32 0
|
|
%t884 = load { ptr, i64, i64 }, ptr %t883
|
|
store { ptr, i64, i64 } %t884, ptr %a885
|
|
store { ptr, i64, i64 } { ptr @.str.4505, i64 6, i64 0 }, ptr %a886
|
|
%t887 = call i32 @finch_str_eq(ptr %a885, ptr %a886)
|
|
%t888 = icmp ne i32 %t887, 0
|
|
br i1 %t888, label %then7001, label %endif7003
|
|
then7001:
|
|
%t889 = load ptr, ptr %a1
|
|
%t890 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t889, { ptr, i64, i64 } { ptr @.str.4506, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t890, ptr %a891
|
|
%t892 = load ptr, ptr %a1
|
|
%t893 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 0
|
|
%t894 = getelementptr inbounds %S.gen.Abi, ptr %t893, i32 0, i32 2
|
|
%t895 = load { ptr, i64, i64 }, ptr %t894
|
|
%t896 = load { ptr, i64, i64 }, ptr %a881
|
|
%t897 = load { ptr, i64, i64 }, ptr %a891
|
|
call void @finch.gen.store(ptr %t892, { ptr, i64, i64 } %t895, { ptr, i64, i64 } %t896, { ptr, i64, i64 } %t897)
|
|
%t898 = load ptr, ptr %a1
|
|
%t899 = load ptr, ptr %a1
|
|
%t900 = load %S.ast.Type, ptr %a111
|
|
%t901 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t899, %S.ast.Type %t900)
|
|
%t902 = load { ptr, i64, i64 }, ptr %a891
|
|
%t903 = call { ptr, i64, i64 } @finch.gen.load(ptr %t898, { ptr, i64, i64 } %t901, { ptr, i64, i64 } %t902)
|
|
%t904 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t903, 0
|
|
%t905 = load %S.ast.Type, ptr %a111
|
|
store %S.ast.Type %t905, ptr %a906
|
|
call void @finch.copy.S_ast_Type(ptr %a907, ptr %a906)
|
|
%t908 = load %S.ast.Type, ptr %a907
|
|
%t909 = insertvalue %S.gen.Val %t904, %S.ast.Type %t908, 1
|
|
ret %S.gen.Val %t909
|
|
endif7003:
|
|
%t910 = getelementptr inbounds %S.ast.Type, ptr %a111, i32 0, i32 0
|
|
%t911 = load { ptr, i64, i64 }, ptr %t910
|
|
store { ptr, i64, i64 } %t911, ptr %a912
|
|
store { ptr, i64, i64 } { ptr @.str.4507, i64 3, i64 0 }, ptr %a913
|
|
%t914 = call i32 @finch_str_eq(ptr %a912, ptr %a913)
|
|
%t915 = icmp ne i32 %t914, 0
|
|
br i1 %t915, label %then7004, label %endif7006
|
|
then7004:
|
|
%t916 = load ptr, ptr %a1
|
|
%t917 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t916)
|
|
store { ptr, i64, i64 } %t917, ptr %a918
|
|
%t919 = load ptr, ptr %a1
|
|
%t920 = load { ptr, i64, i64 }, ptr %a918
|
|
call void @finch.gen.store(ptr %t919, { ptr, i64, i64 } { ptr @.str.4508, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4509, i64 15, i64 0 }, { ptr, i64, i64 } %t920)
|
|
%t921 = load ptr, ptr %a1
|
|
%t922 = load { ptr, i64, i64 }, ptr %a918
|
|
store { ptr, i64, i64 } { ptr @.str.4510, i64 32, i64 0 }, ptr %a924
|
|
store { ptr, i64, i64 } %t922, ptr %a925
|
|
call void @finch_str_concat(ptr %a923, ptr %a924, ptr %a925)
|
|
%t926 = load { ptr, i64, i64 }, ptr %a923
|
|
store { ptr, i64, i64 } %t926, ptr %a928
|
|
store { ptr, i64, i64 } { ptr @.str.4511, i64 6, i64 0 }, ptr %a929
|
|
call void @finch_str_concat(ptr %a927, ptr %a928, ptr %a929)
|
|
%t930 = load { ptr, i64, i64 }, ptr %a927
|
|
%t931 = load { ptr, i64, i64 }, ptr %a881
|
|
store { ptr, i64, i64 } %t930, ptr %a933
|
|
store { ptr, i64, i64 } %t931, ptr %a934
|
|
call void @finch_str_concat(ptr %a932, ptr %a933, ptr %a934)
|
|
%t935 = load { ptr, i64, i64 }, ptr %a932
|
|
store { ptr, i64, i64 } %t935, ptr %a937
|
|
store { ptr, i64, i64 } { ptr @.str.4512, i64 1, i64 0 }, ptr %a938
|
|
call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938)
|
|
%t939 = load { ptr, i64, i64 }, ptr %a936
|
|
call void @finch.gen.emit(ptr %t921, { ptr, i64, i64 } %t939)
|
|
%t940 = load ptr, ptr %a1
|
|
%t941 = load { ptr, i64, i64 }, ptr %a918
|
|
%t942 = call { ptr, i64, i64 } @finch.gen.load(ptr %t940, { ptr, i64, i64 } { ptr @.str.4513, i64 17, i64 0 }, { ptr, i64, i64 } %t941)
|
|
%t943 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t942, 0
|
|
%t944 = load %S.ast.Type, ptr %a111
|
|
store %S.ast.Type %t944, ptr %a945
|
|
call void @finch.copy.S_ast_Type(ptr %a946, ptr %a945)
|
|
%t947 = load %S.ast.Type, ptr %a946
|
|
%t948 = insertvalue %S.gen.Val %t943, %S.ast.Type %t947, 1
|
|
ret %S.gen.Val %t948
|
|
endif7006:
|
|
%t949 = load { ptr, i64, i64 }, ptr %a881
|
|
store { ptr, i64, i64 } %t949, ptr %a950
|
|
call void @finch_str_copy(ptr %a951, ptr %a950)
|
|
%t952 = load { ptr, i64, i64 }, ptr %a951
|
|
%t953 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t952, 0
|
|
%t954 = load %S.ast.Type, ptr %a111
|
|
store %S.ast.Type %t954, ptr %a955
|
|
call void @finch.copy.S_ast_Type(ptr %a956, ptr %a955)
|
|
%t957 = load %S.ast.Type, ptr %a956
|
|
%t958 = insertvalue %S.gen.Val %t953, %S.ast.Type %t957, 1
|
|
ret %S.gen.Val %t958
|
|
}
|
|
|
|
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.4514, i64 6, i64 0 }, ptr %t4
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.4515, i64 6, i64 0 }, ptr %t5
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.4516, i64 4, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.4517, i64 4, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.4518, 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.cond7007
|
|
find.cond7007:
|
|
%t19 = load i64, ptr %a18
|
|
%t20 = icmp slt i64 %t19, %t16
|
|
br i1 %t20, label %find.body7008, label %find.end7011
|
|
find.body7008:
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i64 %t19
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
store { ptr, i64, i64 } %t14, ptr %a24
|
|
%t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24)
|
|
%t26 = icmp ne i32 %t25, 0
|
|
br i1 %t26, label %find.hit7009, label %find.next7010
|
|
find.hit7009:
|
|
store i64 %t19, ptr %a15
|
|
br label %find.end7011
|
|
find.next7010:
|
|
%t27 = add i64 %t19, 1
|
|
store i64 %t27, ptr %a18
|
|
br label %find.cond7007
|
|
find.end7011:
|
|
%t28 = load i64, ptr %a15
|
|
%t29 = icmp sge i64 %t28, 0
|
|
ret i1 %t29
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca i64, align 16
|
|
%a65 = alloca i64, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca i64, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t3 = call ptr @finch_alloc(i64 %t2)
|
|
%t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.4519, i64 6, i64 0 }, ptr %t4
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.4520, i64 4, i64 0 }, ptr %t5
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.4521, i64 7, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.4522, i64 5, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.4523, i64 5, i64 0 }, ptr %t8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.4524, i64 7, i64 0 }, ptr %t9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.4525, i64 4, i64 0 }, ptr %t10
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.4526, i64 3, i64 0 }, ptr %t11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.4527, i64 3, i64 0 }, ptr %t12
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.4528, i64 3, i64 0 }, ptr %t13
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10
|
|
store { ptr, i64, i64 } { ptr @.str.4529, i64 5, i64 0 }, ptr %t14
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11
|
|
store { ptr, i64, i64 } { ptr @.str.4530, i64 4, i64 0 }, ptr %t15
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12
|
|
store { ptr, i64, i64 } { ptr @.str.4531, i64 6, i64 0 }, ptr %t16
|
|
%t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13
|
|
store { ptr, i64, i64 } { ptr @.str.4532, i64 4, i64 0 }, ptr %t17
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14
|
|
store { ptr, i64, i64 } { ptr @.str.4533, i64 5, i64 0 }, ptr %t18
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15
|
|
store { ptr, i64, i64 } { ptr @.str.4534, i64 3, i64 0 }, ptr %t19
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16
|
|
store { ptr, i64, i64 } { ptr @.str.4535, i64 4, i64 0 }, ptr %t20
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17
|
|
store { ptr, i64, i64 } { ptr @.str.4536, i64 6, i64 0 }, ptr %t21
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18
|
|
store { ptr, i64, i64 } { ptr @.str.4537, i64 6, i64 0 }, ptr %t22
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19
|
|
store { ptr, i64, i64 } { ptr @.str.4538, i64 6, i64 0 }, ptr %t23
|
|
%t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20
|
|
store { ptr, i64, i64 } { ptr @.str.4539, i64 4, i64 0 }, ptr %t24
|
|
%t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21
|
|
store { ptr, i64, i64 } { ptr @.str.4540, i64 5, i64 0 }, ptr %t25
|
|
%t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22
|
|
store { ptr, i64, i64 } { ptr @.str.4541, 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.4542, i64 7, i64 0 }, ptr %t33
|
|
%t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.4543, i64 7, i64 0 }, ptr %t34
|
|
%t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.4544, i64 7, i64 0 }, ptr %t35
|
|
%t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.4545, i64 7, i64 0 }, ptr %t36
|
|
%t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.4546, i64 7, i64 0 }, ptr %t37
|
|
%t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.4547, i64 7, i64 0 }, ptr %t38
|
|
%t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.4548, i64 6, i64 0 }, ptr %t39
|
|
%t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.4549, i64 6, i64 0 }, ptr %t40
|
|
%t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.4550, i64 6, i64 0 }, ptr %t41
|
|
%t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.4551, i64 6, i64 0 }, ptr %t42
|
|
%t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10
|
|
store { ptr, i64, i64 } { ptr @.str.4552, i64 6, i64 0 }, ptr %t43
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11
|
|
store { ptr, i64, i64 } { ptr @.str.4553, i64 6, i64 0 }, ptr %t44
|
|
%t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12
|
|
store { ptr, i64, i64 } { ptr @.str.4554, i64 8, i64 0 }, ptr %t45
|
|
%t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13
|
|
store { ptr, i64, i64 } { ptr @.str.4555, i64 8, i64 0 }, ptr %t46
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14
|
|
store { ptr, i64, i64 } { ptr @.str.4556, i64 8, i64 0 }, ptr %t47
|
|
%t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15
|
|
store { ptr, i64, i64 } { ptr @.str.4557, i64 8, i64 0 }, ptr %t48
|
|
%t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16
|
|
store { ptr, i64, i64 } { ptr @.str.4558, i64 8, i64 0 }, ptr %t49
|
|
%t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17
|
|
store { ptr, i64, i64 } { ptr @.str.4559, i64 8, i64 0 }, ptr %t50
|
|
%t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18
|
|
store { ptr, i64, i64 } { ptr @.str.4560, i64 8, i64 0 }, ptr %t51
|
|
%t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19
|
|
store { ptr, i64, i64 } { ptr @.str.4561, i64 8, i64 0 }, ptr %t52
|
|
%t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20
|
|
store { ptr, i64, i64 } { ptr @.str.4562, i64 6, i64 0 }, ptr %t53
|
|
%t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21
|
|
store { ptr, i64, i64 } { ptr @.str.4563, i64 8, i64 0 }, ptr %t54
|
|
%t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22
|
|
store { ptr, i64, i64 } { ptr @.str.4564, 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.cond7012
|
|
find.cond7012:
|
|
%t66 = load i64, ptr %a65
|
|
%t67 = icmp slt i64 %t66, %t63
|
|
br i1 %t67, label %find.body7013, label %find.end7016
|
|
find.body7013:
|
|
%t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t66
|
|
%t69 = load { ptr, i64, i64 }, ptr %t68
|
|
store { ptr, i64, i64 } %t69, ptr %a70
|
|
store { ptr, i64, i64 } %t61, ptr %a71
|
|
%t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71)
|
|
%t73 = icmp ne i32 %t72, 0
|
|
br i1 %t73, label %find.hit7014, label %find.next7015
|
|
find.hit7014:
|
|
store i64 %t66, ptr %a62
|
|
br label %find.end7016
|
|
find.next7015:
|
|
%t74 = add i64 %t66, 1
|
|
store i64 %t74, ptr %a65
|
|
br label %find.cond7012
|
|
find.end7016:
|
|
%t75 = load i64, ptr %a62
|
|
store i64 %t75, ptr %a76
|
|
%t77 = load i64, ptr %a76
|
|
%t78 = icmp slt i64 %t77, 0
|
|
br i1 %t78, label %then7017, label %endif7019
|
|
then7017:
|
|
ret { ptr, i64, i64 } { ptr @.str.4565, i64 0, i64 0 }
|
|
endif7019:
|
|
%t79 = load i64, ptr %a76
|
|
%t80 = load { ptr, i64, i64 }, ptr %a59
|
|
%t81 = extractvalue { ptr, i64, i64 } %t80, 1
|
|
%t82 = icmp uge i64 %t79, %t81
|
|
br i1 %t82, label %range7020, label %inrange7021
|
|
range7020:
|
|
call void @finch_panic_index(ptr @.str.4567, i64 4161, i64 %t79, i64 %t81)
|
|
unreachable
|
|
inrange7021:
|
|
%t83 = extractvalue { ptr, i64, i64 } %t80, 0
|
|
%t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t79
|
|
%t85 = load { ptr, i64, i64 }, ptr %t84
|
|
store { ptr, i64, i64 } { ptr @.str.4566, i64 28, i64 0 }, ptr %a87
|
|
store { ptr, i64, i64 } %t85, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t89, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.4568, i64 14, i64 0 }, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
ret { ptr, i64, i64 } %t93
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.call(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca i64, align 16
|
|
%a37 = alloca %S.gen.Val, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca %S.ast.Node, align 16
|
|
%a83 = alloca %S.ast.Node, align 16
|
|
%a85 = alloca %S.ast.Node, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca i64, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca %S.gen.Place, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca %S.gen.Val, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca %S.ast.Type, align 16
|
|
%a195 = alloca %S.ast.Type, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%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
|
|
%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
|
|
%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
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca { ptr, i64, i64 }, align 16
|
|
%a301 = 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
|
|
%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
|
|
%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
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a337 = alloca { ptr, i64, i64 }, align 16
|
|
%a338 = alloca { ptr, i64, i64 }, align 16
|
|
%a339 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a346 = alloca { ptr, i64, i64 }, align 16
|
|
%a347 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a355 = alloca { ptr, i64, i64 }, align 16
|
|
%a356 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = alloca { ptr, i64, i64 }, align 16
|
|
%a359 = alloca { ptr, i64, i64 }, align 16
|
|
%a360 = alloca { ptr, i64, i64 }, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a368 = alloca { ptr, i64, i64 }, align 16
|
|
%a369 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a373 = alloca { ptr, i64, i64 }, align 16
|
|
%a374 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a399 = alloca { ptr, i64, i64 }, align 16
|
|
%a400 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a410 = alloca { ptr, i64, i64 }, align 16
|
|
%a411 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a414 = alloca { ptr, i64, i64 }, align 16
|
|
%a415 = alloca { ptr, i64, i64 }, align 16
|
|
%a420 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a422 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a434 = alloca { ptr, i64, i64 }, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a441 = alloca { ptr, i64, i64 }, align 16
|
|
%a446 = alloca { ptr, i64, i64 }, align 16
|
|
%a447 = alloca { ptr, i64, i64 }, align 16
|
|
%a452 = alloca { ptr, i64, i64 }, align 16
|
|
%a453 = alloca { ptr, i64, i64 }, align 16
|
|
%a458 = alloca { ptr, i64, i64 }, align 16
|
|
%a459 = alloca { ptr, i64, i64 }, align 16
|
|
%a482 = alloca { ptr, i64, i64 }, align 16
|
|
%a483 = alloca { ptr, i64, i64 }, align 16
|
|
%a484 = alloca { ptr, i64, i64 }, align 16
|
|
%a486 = alloca { ptr, i64, i64 }, align 16
|
|
%a487 = alloca { ptr, i64, i64 }, align 16
|
|
%a488 = alloca { ptr, i64, i64 }, align 16
|
|
%a499 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a533 = alloca { ptr, i64, i64 }, align 16
|
|
%a535 = alloca { ptr, i64, i64 }, align 16
|
|
%a536 = alloca { ptr, i64, i64 }, align 16
|
|
%a541 = alloca { ptr, i64, i64 }, align 16
|
|
%a542 = alloca { ptr, i64, i64 }, align 16
|
|
%a543 = alloca { ptr, i64, i64 }, align 16
|
|
%a545 = alloca { ptr, i64, i64 }, align 16
|
|
%a546 = alloca { ptr, i64, i64 }, align 16
|
|
%a547 = alloca { ptr, i64, i64 }, align 16
|
|
%a550 = alloca { ptr, i64, i64 }, align 16
|
|
%a553 = alloca { ptr, i64, i64 }, align 16
|
|
%a554 = alloca { ptr, i64, i64 }, align 16
|
|
%a555 = alloca { ptr, i64, i64 }, align 16
|
|
%a557 = alloca { ptr, i64, i64 }, align 16
|
|
%a558 = alloca { ptr, i64, i64 }, align 16
|
|
%a559 = alloca { ptr, i64, i64 }, align 16
|
|
%a567 = alloca { ptr, i64, i64 }, align 16
|
|
%a574 = alloca { ptr, i64, i64 }, align 16
|
|
%a575 = alloca { ptr, i64, i64 }, align 16
|
|
%a580 = alloca { ptr, i64, i64 }, align 16
|
|
%a587 = alloca { ptr, i64, i64 }, align 16
|
|
%a588 = alloca { ptr, i64, i64 }, align 16
|
|
%a589 = alloca { ptr, i64, i64 }, align 16
|
|
%a591 = alloca { ptr, i64, i64 }, align 16
|
|
%a592 = alloca { ptr, i64, i64 }, align 16
|
|
%a593 = alloca { ptr, i64, i64 }, align 16
|
|
%a596 = alloca { ptr, i64, i64 }, align 16
|
|
%a597 = alloca { ptr, i64, i64 }, align 16
|
|
%a598 = alloca { ptr, i64, i64 }, align 16
|
|
%a600 = alloca { ptr, i64, i64 }, align 16
|
|
%a601 = alloca { ptr, i64, i64 }, align 16
|
|
%a602 = alloca { ptr, i64, i64 }, align 16
|
|
%a605 = alloca { ptr, i64, i64 }, align 16
|
|
%a606 = alloca { ptr, i64, i64 }, align 16
|
|
%a607 = alloca { ptr, i64, i64 }, align 16
|
|
%a609 = alloca { ptr, i64, i64 }, align 16
|
|
%a610 = alloca { ptr, i64, i64 }, align 16
|
|
%a611 = 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
|
|
%a621 = alloca { ptr, i64, i64 }, align 16
|
|
%a622 = alloca { ptr, i64, i64 }, align 16
|
|
%a623 = alloca { ptr, i64, i64 }, align 16
|
|
%a655 = alloca { ptr, i64, i64 }, align 16
|
|
%a658 = alloca { ptr, i64, i64 }, align 16
|
|
%a659 = alloca { ptr, i64, i64 }, align 16
|
|
%a660 = alloca { ptr, i64, i64 }, align 16
|
|
%a662 = alloca { ptr, i64, i64 }, align 16
|
|
%a663 = alloca { ptr, i64, i64 }, align 16
|
|
%a664 = alloca { ptr, i64, i64 }, align 16
|
|
%a667 = alloca { ptr, i64, i64 }, align 16
|
|
%a668 = alloca { ptr, i64, i64 }, align 16
|
|
%a669 = alloca { ptr, i64, i64 }, align 16
|
|
%a671 = alloca { ptr, i64, i64 }, align 16
|
|
%a672 = alloca { ptr, i64, i64 }, align 16
|
|
%a673 = alloca { ptr, i64, i64 }, align 16
|
|
%a676 = alloca { ptr, i64, i64 }, align 16
|
|
%a677 = alloca { ptr, i64, i64 }, align 16
|
|
%a678 = alloca { ptr, i64, i64 }, align 16
|
|
%a680 = alloca { ptr, i64, i64 }, align 16
|
|
%a681 = alloca { ptr, i64, i64 }, align 16
|
|
%a682 = alloca { ptr, i64, i64 }, align 16
|
|
%a686 = alloca { ptr, i64, i64 }, align 16
|
|
%a688 = alloca { ptr, i64, i64 }, align 16
|
|
%a689 = alloca { ptr, i64, i64 }, align 16
|
|
%a690 = alloca { ptr, i64, i64 }, align 16
|
|
%a692 = alloca { ptr, i64, i64 }, align 16
|
|
%a693 = alloca { ptr, i64, i64 }, align 16
|
|
%a694 = alloca { ptr, i64, i64 }, align 16
|
|
%a704 = alloca { ptr, i64, i64 }, align 16
|
|
%a705 = alloca { ptr, i64, i64 }, align 16
|
|
%a722 = alloca { ptr, i64, i64 }, align 16
|
|
%a734 = alloca { ptr, i64, i64 }, align 16
|
|
%a741 = alloca { ptr, i64, i64 }, align 16
|
|
%a742 = alloca { ptr, i64, i64 }, align 16
|
|
%a747 = alloca { ptr, i64, i64 }, align 16
|
|
%a752 = alloca { ptr, i64, i64 }, align 16
|
|
%a753 = alloca { ptr, i64, i64 }, align 16
|
|
%a754 = alloca { ptr, i64, i64 }, align 16
|
|
%a756 = alloca { ptr, i64, i64 }, align 16
|
|
%a757 = alloca { ptr, i64, i64 }, align 16
|
|
%a758 = alloca { ptr, i64, i64 }, align 16
|
|
%a761 = alloca { ptr, i64, i64 }, align 16
|
|
%a762 = alloca { ptr, i64, i64 }, align 16
|
|
%a763 = alloca { ptr, i64, i64 }, align 16
|
|
%a765 = alloca { ptr, i64, i64 }, align 16
|
|
%a766 = alloca { ptr, i64, i64 }, align 16
|
|
%a767 = alloca { ptr, i64, i64 }, align 16
|
|
%a770 = alloca { ptr, i64, i64 }, align 16
|
|
%a771 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a779 = alloca { ptr, i64, i64 }, align 16
|
|
%a782 = alloca { ptr, i64, i64 }, align 16
|
|
%a783 = alloca { ptr, i64, i64 }, align 16
|
|
%a784 = alloca { ptr, i64, i64 }, align 16
|
|
%a786 = alloca { ptr, i64, i64 }, align 16
|
|
%a787 = alloca { ptr, i64, i64 }, align 16
|
|
%a788 = alloca { ptr, i64, i64 }, align 16
|
|
%a804 = alloca { ptr, i64, i64 }, align 16
|
|
%a805 = alloca { ptr, i64, i64 }, align 16
|
|
%a806 = alloca { ptr, i64, i64 }, align 16
|
|
%a808 = alloca { ptr, i64, i64 }, align 16
|
|
%a809 = alloca { ptr, i64, i64 }, align 16
|
|
%a810 = alloca { ptr, i64, i64 }, align 16
|
|
%a813 = alloca { ptr, i64, i64 }, align 16
|
|
%a814 = alloca { ptr, i64, i64 }, align 16
|
|
%a815 = alloca { ptr, i64, i64 }, align 16
|
|
%a817 = alloca { ptr, i64, i64 }, align 16
|
|
%a818 = alloca { ptr, i64, i64 }, align 16
|
|
%a819 = alloca { ptr, i64, i64 }, align 16
|
|
%a822 = alloca { ptr, i64, i64 }, align 16
|
|
%a825 = alloca { ptr, i64, i64 }, align 16
|
|
%a826 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a838 = alloca { ptr, i64, i64 }, align 16
|
|
%a839 = alloca { ptr, i64, i64 }, align 16
|
|
%a854 = alloca %S.gen.Val, align 16
|
|
%a857 = alloca { ptr, i64, i64 }, align 16
|
|
%a860 = alloca { ptr, i64, i64 }, align 16
|
|
%a861 = alloca { ptr, i64, i64 }, align 16
|
|
%a862 = alloca { ptr, i64, i64 }, align 16
|
|
%a864 = alloca { ptr, i64, i64 }, align 16
|
|
%a865 = alloca { ptr, i64, i64 }, align 16
|
|
%a866 = alloca { ptr, i64, i64 }, align 16
|
|
%a871 = alloca { ptr, i64, i64 }, align 16
|
|
%a872 = alloca { ptr, i64, i64 }, align 16
|
|
%a873 = alloca { ptr, i64, i64 }, align 16
|
|
%a875 = alloca { ptr, i64, i64 }, align 16
|
|
%a876 = alloca { ptr, i64, i64 }, align 16
|
|
%a877 = alloca { ptr, i64, i64 }, align 16
|
|
%a885 = alloca { ptr, i64, i64 }, align 16
|
|
%a886 = alloca { ptr, i64, i64 }, align 16
|
|
%a891 = 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
|
|
%a900 = alloca { ptr, i64, i64 }, align 16
|
|
%a901 = alloca { ptr, i64, i64 }, align 16
|
|
%a902 = alloca { ptr, i64, i64 }, align 16
|
|
%a905 = alloca { ptr, i64, i64 }, align 16
|
|
%a906 = alloca { ptr, i64, i64 }, align 16
|
|
%a907 = alloca { ptr, i64, i64 }, align 16
|
|
%a909 = alloca { ptr, i64, i64 }, align 16
|
|
%a910 = alloca { ptr, i64, i64 }, align 16
|
|
%a911 = alloca { ptr, i64, i64 }, align 16
|
|
%a914 = alloca { ptr, i64, i64 }, align 16
|
|
%a917 = alloca { ptr, i64, i64 }, align 16
|
|
%a918 = alloca { ptr, i64, i64 }, align 16
|
|
%a919 = alloca { ptr, i64, i64 }, align 16
|
|
%a921 = alloca { ptr, i64, i64 }, align 16
|
|
%a922 = alloca { ptr, i64, i64 }, align 16
|
|
%a923 = alloca { ptr, i64, i64 }, align 16
|
|
%a939 = alloca { ptr, i64, i64 }, align 16
|
|
%a940 = alloca { ptr, i64, i64 }, align 16
|
|
%a941 = alloca { ptr, i64, i64 }, align 16
|
|
%a943 = alloca { ptr, i64, i64 }, align 16
|
|
%a944 = alloca { ptr, i64, i64 }, align 16
|
|
%a945 = alloca { ptr, i64, i64 }, align 16
|
|
%a948 = alloca { ptr, i64, i64 }, align 16
|
|
%a951 = alloca { ptr, i64, i64 }, align 16
|
|
%a952 = alloca { ptr, i64, i64 }, align 16
|
|
%a953 = alloca { ptr, i64, i64 }, align 16
|
|
%a955 = alloca { ptr, i64, i64 }, align 16
|
|
%a956 = alloca { ptr, i64, i64 }, align 16
|
|
%a957 = alloca { ptr, i64, i64 }, align 16
|
|
%a964 = alloca { ptr, i64, i64 }, align 16
|
|
%a965 = alloca { ptr, i64, i64 }, align 16
|
|
%a980 = alloca %S.gen.Val, align 16
|
|
%a983 = alloca { ptr, i64, i64 }, align 16
|
|
%a986 = alloca { ptr, i64, i64 }, align 16
|
|
%a987 = alloca { ptr, i64, i64 }, align 16
|
|
%a988 = alloca { ptr, i64, i64 }, align 16
|
|
%a990 = alloca { ptr, i64, i64 }, align 16
|
|
%a991 = alloca { ptr, i64, i64 }, align 16
|
|
%a992 = alloca { ptr, i64, i64 }, align 16
|
|
%a997 = alloca { ptr, i64, i64 }, align 16
|
|
%a998 = alloca { ptr, i64, i64 }, align 16
|
|
%a999 = alloca { ptr, i64, i64 }, align 16
|
|
%a1001 = alloca { ptr, i64, i64 }, align 16
|
|
%a1002 = alloca { ptr, i64, i64 }, align 16
|
|
%a1003 = alloca { ptr, i64, i64 }, align 16
|
|
%a1007 = alloca { ptr, i64, i64 }, align 16
|
|
%a1008 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a1020 = alloca { ptr, i64, i64 }, align 16
|
|
%a1021 = alloca { ptr, i64, i64 }, align 16
|
|
%a1046 = alloca %S.gen.Val, align 16
|
|
%a1050 = alloca { ptr, i64, i64 }, align 16
|
|
%a1051 = alloca { ptr, i64, i64 }, align 16
|
|
%a1052 = alloca { ptr, i64, i64 }, align 16
|
|
%a1054 = alloca { ptr, i64, i64 }, align 16
|
|
%a1055 = alloca { ptr, i64, i64 }, align 16
|
|
%a1056 = alloca { ptr, i64, i64 }, align 16
|
|
%a1059 = alloca { ptr, i64, i64 }, align 16
|
|
%a1062 = alloca { ptr, i64, i64 }, align 16
|
|
%a1065 = alloca { ptr, i64, i64 }, align 16
|
|
%a1066 = alloca { ptr, i64, i64 }, align 16
|
|
%a1067 = alloca { ptr, i64, i64 }, align 16
|
|
%a1069 = alloca { ptr, i64, i64 }, align 16
|
|
%a1070 = alloca { ptr, i64, i64 }, align 16
|
|
%a1071 = alloca { ptr, i64, i64 }, align 16
|
|
%a1076 = alloca { ptr, i64, i64 }, align 16
|
|
%a1077 = alloca { ptr, i64, i64 }, align 16
|
|
%a1082 = alloca %S.gen.Val, align 16
|
|
%a1101 = alloca { ptr, i64, i64 }, align 16
|
|
%a1104 = alloca { ptr, i64, i64 }, align 16
|
|
%a1105 = alloca { ptr, i64, i64 }, align 16
|
|
%a1106 = alloca { ptr, i64, i64 }, align 16
|
|
%a1108 = alloca { ptr, i64, i64 }, align 16
|
|
%a1109 = alloca { ptr, i64, i64 }, align 16
|
|
%a1110 = alloca { ptr, i64, i64 }, align 16
|
|
%a1115 = alloca { ptr, i64, i64 }, align 16
|
|
%a1116 = alloca { ptr, i64, i64 }, align 16
|
|
%a1117 = alloca { ptr, i64, i64 }, align 16
|
|
%a1119 = alloca { ptr, i64, i64 }, align 16
|
|
%a1120 = alloca { ptr, i64, i64 }, align 16
|
|
%a1121 = alloca { ptr, i64, i64 }, align 16
|
|
%a1131 = alloca { ptr, i64, i64 }, align 16
|
|
%a1132 = alloca { ptr, i64, i64 }, align 16
|
|
%a1147 = alloca %S.gen.Val, align 16
|
|
%a1153 = alloca { ptr, i64, i64 }, align 16
|
|
%a1154 = alloca { ptr, i64, i64 }, align 16
|
|
%a1155 = alloca { ptr, i64, i64 }, align 16
|
|
%a1157 = alloca { ptr, i64, i64 }, align 16
|
|
%a1158 = alloca { ptr, i64, i64 }, align 16
|
|
%a1159 = alloca { ptr, i64, i64 }, align 16
|
|
%a1162 = alloca { ptr, i64, i64 }, align 16
|
|
%a1173 = alloca { ptr, i64, i64 }, align 16
|
|
%a1174 = alloca { ptr, i64, i64 }, align 16
|
|
%a1182 = alloca { ptr, i64, i64 }, align 16
|
|
%a1183 = alloca { ptr, i64, i64 }, align 16
|
|
%a1198 = alloca %S.gen.Val, align 16
|
|
%a1202 = alloca { ptr, i64, i64 }, align 16
|
|
%a1203 = alloca { ptr, i64, i64 }, align 16
|
|
%a1217 = alloca { ptr, i64, i64 }, align 16
|
|
%a1218 = alloca { ptr, i64, i64 }, align 16
|
|
%a1219 = alloca { ptr, i64, i64 }, align 16
|
|
%a1221 = alloca { ptr, i64, i64 }, align 16
|
|
%a1222 = alloca { ptr, i64, i64 }, align 16
|
|
%a1223 = alloca { ptr, i64, i64 }, align 16
|
|
%a1234 = alloca i64, align 16
|
|
%a1245 = alloca { ptr, i64, i64 }, align 16
|
|
%a1246 = alloca { ptr, i64, i64 }, align 16
|
|
%a1247 = alloca { ptr, i64, i64 }, align 16
|
|
%a1249 = alloca { ptr, i64, i64 }, align 16
|
|
%a1250 = alloca { ptr, i64, i64 }, align 16
|
|
%a1251 = alloca { ptr, i64, i64 }, align 16
|
|
%a1265 = alloca i64, align 16
|
|
%a1289 = alloca { ptr, i64, i64 }, align 16
|
|
%a1290 = alloca { ptr, i64, i64 }, align 16
|
|
%a1291 = alloca { ptr, i64, i64 }, align 16
|
|
%a1293 = alloca { ptr, i64, i64 }, align 16
|
|
%a1294 = alloca { ptr, i64, i64 }, align 16
|
|
%a1295 = alloca { ptr, i64, i64 }, align 16
|
|
%a1298 = alloca { ptr, i64, i64 }, align 16
|
|
%a1299 = alloca { ptr, i64, i64 }, align 16
|
|
%a1300 = alloca { ptr, i64, i64 }, align 16
|
|
%a1302 = alloca { ptr, i64, i64 }, align 16
|
|
%a1303 = alloca { ptr, i64, i64 }, align 16
|
|
%a1304 = alloca { ptr, i64, i64 }, align 16
|
|
%a1306 = alloca { ptr, i64, i64 }, align 16
|
|
%a1309 = alloca i64, align 16
|
|
%a1317 = alloca %S.ast.Type, align 16
|
|
%a1338 = alloca %S.ast.Type, align 16
|
|
%a1359 = alloca i64, align 16
|
|
%a1377 = alloca i64, align 16
|
|
%a1389 = alloca { ptr, i64, i64 }, align 16
|
|
%a1399 = alloca { ptr, i64, i64 }, align 16
|
|
%a1402 = alloca { ptr, i64, i64 }, align 16
|
|
%a1403 = alloca { ptr, i64, i64 }, align 16
|
|
%a1430 = alloca { ptr, i64, i64 }, align 16
|
|
%a1431 = alloca { ptr, i64, i64 }, align 16
|
|
%a1432 = alloca { ptr, i64, i64 }, align 16
|
|
%a1434 = alloca { ptr, i64, i64 }, align 16
|
|
%a1435 = alloca { ptr, i64, i64 }, align 16
|
|
%a1436 = alloca { ptr, i64, i64 }, align 16
|
|
%a1441 = alloca { ptr, i64, i64 }, align 16
|
|
%a1442 = alloca { ptr, i64, i64 }, align 16
|
|
%a1443 = alloca { ptr, i64, i64 }, align 16
|
|
%a1445 = alloca { ptr, i64, i64 }, align 16
|
|
%a1446 = alloca { ptr, i64, i64 }, align 16
|
|
%a1447 = alloca { ptr, i64, i64 }, align 16
|
|
%a1451 = alloca { ptr, i64, i64 }, align 16
|
|
%a1452 = alloca { ptr, i64, i64 }, align 16
|
|
%a1453 = 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.4569, i64 5, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br i1 %t13, label %then7022, label %endif7024
|
|
then7022:
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t14, %S.ast.Node %t15, { ptr, i64, i64 } { ptr @.str.4570, i64 86, i64 0 })
|
|
br label %endif7024
|
|
endif7024:
|
|
%t16 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.4571, i64 5, i64 0 }, ptr %a18
|
|
%t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18)
|
|
%t20 = icmp ne i32 %t19, 0
|
|
br i1 %t20, label %then7025, label %endif7027
|
|
then7025:
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1
|
|
%t23 = load i64, ptr %t22
|
|
store i64 0, ptr %a24
|
|
br label %for.cond7028
|
|
for.cond7028:
|
|
%t25 = load i64, ptr %a24
|
|
%t26 = icmp slt i64 %t25, %t23
|
|
br i1 %t26, label %for.body7029, label %for.end7031
|
|
for.body7029:
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t29 = load i64, ptr %a24
|
|
%t30 = load { ptr, i64, i64 }, ptr %t28
|
|
%t31 = extractvalue { ptr, i64, i64 } %t30, 1
|
|
%t32 = icmp uge i64 %t29, %t31
|
|
br i1 %t32, label %range7032, label %inrange7033
|
|
range7032:
|
|
call void @finch_panic_index(ptr @.str.4572, i64 4171, i64 %t29, i64 %t31)
|
|
unreachable
|
|
inrange7033:
|
|
%t33 = extractvalue { ptr, i64, i64 } %t30, 0
|
|
%t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t29
|
|
%t35 = load %S.ast.Node, ptr %t34
|
|
%t36 = call %S.gen.Val @finch.gen.expr(ptr %t27, %S.ast.Node %t35)
|
|
store %S.gen.Val %t36, ptr %a37
|
|
%t38 = getelementptr inbounds %S.gen.Val, ptr %a37, i32 0, i32 1
|
|
%t39 = getelementptr inbounds %S.ast.Type, ptr %t38, i32 0, i32 0
|
|
%t40 = load { ptr, i64, i64 }, ptr %t39
|
|
store { ptr, i64, i64 } %t40, ptr %a41
|
|
store { ptr, i64, i64 } { ptr @.str.4573, i64 4, i64 0 }, ptr %a42
|
|
%t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42)
|
|
%t44 = icmp ne i32 %t43, 0
|
|
br i1 %t44, label %then7034, label %endif7036
|
|
then7034:
|
|
%t45 = load ptr, ptr %a1
|
|
%t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t47 = load i64, ptr %a24
|
|
%t48 = load { ptr, i64, i64 }, ptr %t46
|
|
%t49 = extractvalue { ptr, i64, i64 } %t48, 1
|
|
%t50 = icmp uge i64 %t47, %t49
|
|
br i1 %t50, label %range7037, label %inrange7038
|
|
range7037:
|
|
call void @finch_panic_index(ptr @.str.4574, i64 4173, i64 %t47, i64 %t49)
|
|
unreachable
|
|
inrange7038:
|
|
%t51 = extractvalue { ptr, i64, i64 } %t48, 0
|
|
%t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t47
|
|
%t53 = load %S.ast.Node, ptr %t52
|
|
call void @finch.gen.fail(ptr %t45, %S.ast.Node %t53, { ptr, i64, i64 } { ptr @.str.4575, i64 53, i64 0 })
|
|
br label %endif7036
|
|
endif7036:
|
|
%t54 = load i64, ptr %a24
|
|
%t55 = icmp sgt i64 %t54, 0
|
|
br i1 %t55, label %then7039, label %endif7041
|
|
then7039:
|
|
%t56 = load ptr, ptr %a1
|
|
call void @finch.gen.printf(ptr %t56, { ptr, i64, i64 } { ptr @.str.4576, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4577, i64 0, i64 0 })
|
|
br label %endif7041
|
|
endif7041:
|
|
%t57 = load ptr, ptr %a1
|
|
%t58 = getelementptr inbounds %S.gen.Val, ptr %a37, i32 0, i32 0
|
|
%t59 = load { ptr, i64, i64 }, ptr %t58
|
|
%t60 = getelementptr inbounds %S.gen.Val, ptr %a37, i32 0, i32 1
|
|
%t61 = load %S.ast.Type, ptr %t60
|
|
call void @finch.gen.emitPrint(ptr %t57, { ptr, i64, i64 } %t59, %S.ast.Type %t61, i1 false)
|
|
br label %for.step7030
|
|
for.step7030:
|
|
%t62 = load i64, ptr %a24
|
|
%t63 = add i64 %t62, 1
|
|
store i64 %t63, ptr %a24
|
|
br label %for.cond7028
|
|
for.end7031:
|
|
%t64 = load ptr, ptr %a1
|
|
call void @finch.gen.printf(ptr %t64, { ptr, i64, i64 } { ptr @.str.4578, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4579, i64 0, i64 0 })
|
|
%t65 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4580, i64 4, i64 0 })
|
|
%t66 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t65, 1
|
|
ret %S.gen.Val %t66
|
|
endif7027:
|
|
%t67 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.4581, i64 4, i64 0 }, ptr %a69
|
|
%t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69)
|
|
%t71 = icmp ne i32 %t70, 0
|
|
br i1 %t71, label %then7042, label %endif7044
|
|
then7042:
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = load %S.ast.Node, ptr %a2
|
|
%t74 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t72, %S.ast.Node %t73, i64 0, i64 1, { ptr, i64, i64 } %t74)
|
|
%t75 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t76 = load { ptr, i64, i64 }, ptr %t75
|
|
%t77 = extractvalue { ptr, i64, i64 } %t76, 1
|
|
%t78 = icmp uge i64 0, %t77
|
|
br i1 %t78, label %range7045, label %inrange7046
|
|
range7045:
|
|
call void @finch_panic_index(ptr @.str.4582, i64 4185, i64 0, i64 %t77)
|
|
unreachable
|
|
inrange7046:
|
|
%t79 = extractvalue { ptr, i64, i64 } %t76, 0
|
|
%t80 = getelementptr inbounds %S.ast.Node, ptr %t79, i64 0
|
|
%t81 = load %S.ast.Node, ptr %t80
|
|
store %S.ast.Node %t81, ptr %a82
|
|
call void @finch.copy.S_ast_Node(ptr %a83, ptr %a82)
|
|
%t84 = load %S.ast.Node, ptr %a83
|
|
store %S.ast.Node %t84, ptr %a85
|
|
%t86 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 0
|
|
%t87 = load { ptr, i64, i64 }, ptr %t86
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
store { ptr, i64, i64 } { ptr @.str.4583, i64 3, i64 0 }, ptr %a89
|
|
%t90 = call i32 @finch_str_eq(ptr %a88, ptr %a89)
|
|
%t91 = icmp ne i32 %t90, 0
|
|
br label %logic.from7047
|
|
logic.from7047:
|
|
br i1 %t91, label %logic.rhs7048, label %logic.end7049
|
|
logic.rhs7048:
|
|
%t92 = load ptr, ptr %a1
|
|
%t93 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 1
|
|
%t94 = load { ptr, i64, i64 }, ptr %t93
|
|
%t95 = call i64 @finch.gen.lookup(ptr %t92, { ptr, i64, i64 } %t94)
|
|
%t96 = icmp slt i64 %t95, 0
|
|
br label %logic.rend7050
|
|
logic.rend7050:
|
|
br label %logic.end7049
|
|
logic.end7049:
|
|
%t97 = phi i1 [ false, %logic.from7047 ], [ %t96, %logic.rend7050 ]
|
|
br i1 %t97, label %then7051, label %endif7053
|
|
then7051:
|
|
%t98 = load ptr, ptr %a1
|
|
%t99 = load ptr, ptr %a1
|
|
%t100 = icmp eq ptr %t99, null
|
|
br i1 %t100, label %panic7054, label %ok7055
|
|
panic7054:
|
|
call void @finch_panic(ptr @.str.4584, i64 4187, ptr @.str.4585)
|
|
unreachable
|
|
ok7055:
|
|
%t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 13
|
|
%t102 = load { ptr, i64, i64 }, ptr %t101
|
|
%t103 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 1
|
|
%t104 = load { ptr, i64, i64 }, ptr %t103
|
|
%t105 = call i64 @finch.gen.findFn(ptr %t98, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t104)
|
|
store i64 %t105, ptr %a106
|
|
%t107 = load i64, ptr %a106
|
|
%t108 = icmp sge i64 %t107, 0
|
|
br i1 %t108, label %then7056, label %endif7058
|
|
then7056:
|
|
%t109 = load ptr, ptr %a1
|
|
%t110 = load i64, ptr %a106
|
|
%t111 = load %S.ast.Node, ptr %a85
|
|
%t112 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t109, i64 %t110, %S.ast.Node %t111)
|
|
%t113 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t112, 0
|
|
%t114 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4586, i64 3, i64 0 })
|
|
%t115 = insertvalue %S.gen.Val %t113, %S.ast.Type %t114, 1
|
|
ret %S.gen.Val %t115
|
|
endif7058:
|
|
br label %endif7053
|
|
endif7053:
|
|
%t116 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 0
|
|
%t117 = load { ptr, i64, i64 }, ptr %t116
|
|
store { ptr, i64, i64 } %t117, ptr %a118
|
|
store { ptr, i64, i64 } { ptr @.str.4587, i64 3, i64 0 }, ptr %a119
|
|
%t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119)
|
|
%t121 = icmp eq i32 %t120, 0
|
|
br label %logic.from7059
|
|
logic.from7059:
|
|
br i1 %t121, label %logic.rhs7060, label %logic.end7061
|
|
logic.rhs7060:
|
|
%t122 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 0
|
|
%t123 = load { ptr, i64, i64 }, ptr %t122
|
|
store { ptr, i64, i64 } %t123, ptr %a124
|
|
store { ptr, i64, i64 } { ptr @.str.4588, i64 6, i64 0 }, ptr %a125
|
|
%t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125)
|
|
%t127 = icmp eq i32 %t126, 0
|
|
br label %logic.rend7062
|
|
logic.rend7062:
|
|
br label %logic.end7061
|
|
logic.end7061:
|
|
%t128 = phi i1 [ false, %logic.from7059 ], [ %t127, %logic.rend7062 ]
|
|
br label %logic.from7063
|
|
logic.from7063:
|
|
br i1 %t128, label %logic.rhs7064, label %logic.end7065
|
|
logic.rhs7064:
|
|
%t129 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 0
|
|
%t130 = load { ptr, i64, i64 }, ptr %t129
|
|
store { ptr, i64, i64 } %t130, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.4589, i64 5, i64 0 }, ptr %a132
|
|
%t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132)
|
|
%t134 = icmp eq i32 %t133, 0
|
|
br label %logic.rend7066
|
|
logic.rend7066:
|
|
br label %logic.end7065
|
|
logic.end7065:
|
|
%t135 = phi i1 [ false, %logic.from7063 ], [ %t134, %logic.rend7066 ]
|
|
br i1 %t135, label %then7067, label %endif7069
|
|
then7067:
|
|
%t136 = load ptr, ptr %a1
|
|
%t137 = load %S.ast.Node, ptr %a85
|
|
call void @finch.gen.fail(ptr %t136, %S.ast.Node %t137, { ptr, i64, i64 } { ptr @.str.4590, i64 63, i64 0 })
|
|
br label %endif7069
|
|
endif7069:
|
|
%t138 = load ptr, ptr %a1
|
|
%t139 = load %S.ast.Node, ptr %a85
|
|
%t140 = call %S.gen.Place @finch.gen.place(ptr %t138, %S.ast.Node %t139, i1 true)
|
|
store %S.gen.Place %t140, ptr %a141
|
|
%t142 = getelementptr inbounds %S.gen.Place, ptr %a141, i32 0, i32 0
|
|
%t143 = load { ptr, i64, i64 }, ptr %t142
|
|
store { ptr, i64, i64 } %t143, ptr %a144
|
|
call void @finch_str_copy(ptr %a145, ptr %a144)
|
|
%t146 = load { ptr, i64, i64 }, ptr %a145
|
|
%t147 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t146, 0
|
|
%t148 = getelementptr inbounds %S.gen.Place, ptr %a141, i32 0, i32 1
|
|
%t149 = load %S.ast.Type, ptr %t148
|
|
%t150 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t149)
|
|
%t151 = insertvalue %S.gen.Val %t147, %S.ast.Type %t150, 1
|
|
ret %S.gen.Val %t151
|
|
endif7044:
|
|
%t152 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t152, ptr %a153
|
|
store { ptr, i64, i64 } { ptr @.str.4591, i64 3, i64 0 }, ptr %a154
|
|
%t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154)
|
|
%t156 = icmp ne i32 %t155, 0
|
|
br i1 %t156, label %then7070, label %endif7072
|
|
then7070:
|
|
%t157 = load ptr, ptr %a1
|
|
%t158 = load %S.ast.Node, ptr %a2
|
|
%t159 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t157, %S.ast.Node %t158, i64 0, i64 1, { ptr, i64, i64 } %t159)
|
|
%t160 = load ptr, ptr %a1
|
|
%t161 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t162 = load { ptr, i64, i64 }, ptr %t161
|
|
%t163 = extractvalue { ptr, i64, i64 } %t162, 1
|
|
%t164 = icmp uge i64 0, %t163
|
|
br i1 %t164, label %range7073, label %inrange7074
|
|
range7073:
|
|
call void @finch_panic_index(ptr @.str.4592, i64 4200, i64 0, i64 %t163)
|
|
unreachable
|
|
inrange7074:
|
|
%t165 = extractvalue { ptr, i64, i64 } %t162, 0
|
|
%t166 = getelementptr inbounds %S.ast.Node, ptr %t165, i64 0
|
|
%t167 = load %S.ast.Node, ptr %t166
|
|
%t168 = call %S.gen.Val @finch.gen.expr(ptr %t160, %S.ast.Node %t167)
|
|
store %S.gen.Val %t168, ptr %a169
|
|
%t170 = load ptr, ptr %a1
|
|
%t171 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t170)
|
|
store { ptr, i64, i64 } %t171, ptr %a172
|
|
%t173 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t174 = getelementptr inbounds %S.ast.Type, ptr %t173, i32 0, i32 0
|
|
%t175 = load { ptr, i64, i64 }, ptr %t174
|
|
store { ptr, i64, i64 } %t175, ptr %a176
|
|
call void @finch_str_copy(ptr %a177, ptr %a176)
|
|
%t178 = load { ptr, i64, i64 }, ptr %a177
|
|
store { ptr, i64, i64 } %t178, ptr %a179
|
|
%t180 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t180, ptr %a181
|
|
store { ptr, i64, i64 } { ptr @.str.4593, i64 3, i64 0 }, ptr %a182
|
|
%t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182)
|
|
%t184 = icmp ne i32 %t183, 0
|
|
br i1 %t184, label %then7075, label %else7076
|
|
then7075:
|
|
%t185 = load ptr, ptr %a1
|
|
%t186 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0
|
|
%t187 = load { ptr, i64, i64 }, ptr %t186
|
|
%t188 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t189 = load %S.ast.Type, ptr %t188
|
|
%t190 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t185, { ptr, i64, i64 } %t187, %S.ast.Type %t189)
|
|
%t191 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t190, 0
|
|
%t192 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t193 = load %S.ast.Type, ptr %t192
|
|
store %S.ast.Type %t193, ptr %a194
|
|
call void @finch.copy.S_ast_Type(ptr %a195, ptr %a194)
|
|
%t196 = load %S.ast.Type, ptr %a195
|
|
%t197 = insertvalue %S.gen.Val %t191, %S.ast.Type %t196, 1
|
|
%t198 = insertvalue %S.gen.Val %t197, i1 true, 2
|
|
ret %S.gen.Val %t198
|
|
else7076:
|
|
%t199 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t200 = load %S.ast.Type, ptr %t199
|
|
%t201 = call i1 @finch.gen.isSigned(%S.ast.Type %t200)
|
|
br i1 %t201, label %then7078, label %else7079
|
|
then7078:
|
|
%t202 = load ptr, ptr %a1
|
|
%t203 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4594, i64 34, i64 0 }, ptr %a205
|
|
store { ptr, i64, i64 } %t203, ptr %a206
|
|
call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206)
|
|
%t207 = load { ptr, i64, i64 }, ptr %a204
|
|
store { ptr, i64, i64 } %t207, ptr %a209
|
|
store { ptr, i64, i64 } { ptr @.str.4595, i64 6, i64 0 }, ptr %a210
|
|
call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210)
|
|
%t211 = load { ptr, i64, i64 }, ptr %a208
|
|
%t212 = load ptr, ptr %a1
|
|
%t213 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0
|
|
%t214 = load { ptr, i64, i64 }, ptr %t213
|
|
%t215 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t216 = load %S.ast.Type, ptr %t215
|
|
%t217 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4596, i64 3, i64 0 })
|
|
%t218 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t212, { ptr, i64, i64 } %t214, %S.ast.Type %t216, %S.ast.Type %t217)
|
|
store { ptr, i64, i64 } %t211, ptr %a220
|
|
store { ptr, i64, i64 } %t218, ptr %a221
|
|
call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221)
|
|
%t222 = load { ptr, i64, i64 }, ptr %a219
|
|
store { ptr, i64, i64 } %t222, ptr %a224
|
|
store { ptr, i64, i64 } { ptr @.str.4597, i64 1, i64 0 }, ptr %a225
|
|
call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225)
|
|
%t226 = load { ptr, i64, i64 }, ptr %a223
|
|
call void @finch.gen.emit(ptr %t202, { ptr, i64, i64 } %t226)
|
|
br label %endif7080
|
|
else7079:
|
|
%t227 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t228 = load %S.ast.Type, ptr %t227
|
|
%t229 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t228)
|
|
br i1 %t229, label %then7081, label %else7082
|
|
then7081:
|
|
%t230 = load ptr, ptr %a1
|
|
%t231 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4598, i64 35, i64 0 }, ptr %a233
|
|
store { ptr, i64, i64 } %t231, ptr %a234
|
|
call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234)
|
|
%t235 = load { ptr, i64, i64 }, ptr %a232
|
|
store { ptr, i64, i64 } %t235, ptr %a237
|
|
store { ptr, i64, i64 } { ptr @.str.4599, i64 6, i64 0 }, ptr %a238
|
|
call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238)
|
|
%t239 = load { ptr, i64, i64 }, ptr %a236
|
|
%t240 = load ptr, ptr %a1
|
|
%t241 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0
|
|
%t242 = load { ptr, i64, i64 }, ptr %t241
|
|
%t243 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t244 = load %S.ast.Type, ptr %t243
|
|
%t245 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4600, i64 3, i64 0 })
|
|
%t246 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t240, { ptr, i64, i64 } %t242, %S.ast.Type %t244, %S.ast.Type %t245)
|
|
store { ptr, i64, i64 } %t239, ptr %a248
|
|
store { ptr, i64, i64 } %t246, ptr %a249
|
|
call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249)
|
|
%t250 = load { ptr, i64, i64 }, ptr %a247
|
|
store { ptr, i64, i64 } %t250, ptr %a252
|
|
store { ptr, i64, i64 } { ptr @.str.4601, i64 1, i64 0 }, ptr %a253
|
|
call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253)
|
|
%t254 = load { ptr, i64, i64 }, ptr %a251
|
|
call void @finch.gen.emit(ptr %t230, { ptr, i64, i64 } %t254)
|
|
br label %endif7083
|
|
else7082:
|
|
%t255 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t256 = load %S.ast.Type, ptr %t255
|
|
%t257 = call i1 @finch.gen.isFloat(%S.ast.Type %t256)
|
|
br i1 %t257, label %then7084, label %else7085
|
|
then7084:
|
|
%t258 = load ptr, ptr %a1
|
|
%t259 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4602, i64 36, i64 0 }, ptr %a261
|
|
store { ptr, i64, i64 } %t259, ptr %a262
|
|
call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262)
|
|
%t263 = load { ptr, i64, i64 }, ptr %a260
|
|
store { ptr, i64, i64 } %t263, ptr %a265
|
|
store { ptr, i64, i64 } { ptr @.str.4603, i64 9, i64 0 }, ptr %a266
|
|
call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266)
|
|
%t267 = load { ptr, i64, i64 }, ptr %a264
|
|
%t268 = load ptr, ptr %a1
|
|
%t269 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0
|
|
%t270 = load { ptr, i64, i64 }, ptr %t269
|
|
%t271 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t272 = load %S.ast.Type, ptr %t271
|
|
%t273 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4604, i64 5, i64 0 })
|
|
%t274 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t268, { ptr, i64, i64 } %t270, %S.ast.Type %t272, %S.ast.Type %t273)
|
|
store { ptr, i64, i64 } %t267, ptr %a276
|
|
store { ptr, i64, i64 } %t274, ptr %a277
|
|
call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277)
|
|
%t278 = load { ptr, i64, i64 }, ptr %a275
|
|
store { ptr, i64, i64 } %t278, ptr %a280
|
|
store { ptr, i64, i64 } { ptr @.str.4605, i64 1, i64 0 }, ptr %a281
|
|
call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281)
|
|
%t282 = load { ptr, i64, i64 }, ptr %a279
|
|
call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } %t282)
|
|
br label %endif7086
|
|
else7085:
|
|
%t283 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t283, ptr %a284
|
|
store { ptr, i64, i64 } { ptr @.str.4606, i64 4, i64 0 }, ptr %a285
|
|
%t286 = call i32 @finch_str_eq(ptr %a284, ptr %a285)
|
|
%t287 = icmp ne i32 %t286, 0
|
|
br i1 %t287, label %then7087, label %else7088
|
|
then7087:
|
|
%t288 = load ptr, ptr %a1
|
|
%t289 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4607, i64 35, i64 0 }, ptr %a291
|
|
store { ptr, i64, i64 } %t289, ptr %a292
|
|
call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292)
|
|
%t293 = load { ptr, i64, i64 }, ptr %a290
|
|
store { ptr, i64, i64 } %t293, ptr %a295
|
|
store { ptr, i64, i64 } { ptr @.str.4608, i64 13, i64 0 }, ptr %a296
|
|
call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296)
|
|
%t297 = load { ptr, i64, i64 }, ptr %a294
|
|
%t298 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0
|
|
%t299 = load { ptr, i64, i64 }, ptr %t298
|
|
store { ptr, i64, i64 } %t297, ptr %a301
|
|
store { ptr, i64, i64 } %t299, ptr %a302
|
|
call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302)
|
|
%t303 = load { ptr, i64, i64 }, ptr %a300
|
|
store { ptr, i64, i64 } %t303, ptr %a305
|
|
store { ptr, i64, i64 } { ptr @.str.4609, i64 1, i64 0 }, ptr %a306
|
|
call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306)
|
|
%t307 = load { ptr, i64, i64 }, ptr %a304
|
|
call void @finch.gen.emit(ptr %t288, { ptr, i64, i64 } %t307)
|
|
br label %endif7089
|
|
else7088:
|
|
%t308 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t308, ptr %a309
|
|
store { ptr, i64, i64 } { ptr @.str.4610, i64 4, i64 0 }, ptr %a310
|
|
%t311 = call i32 @finch_str_eq(ptr %a309, ptr %a310)
|
|
%t312 = icmp ne i32 %t311, 0
|
|
br i1 %t312, label %then7090, label %else7091
|
|
then7090:
|
|
%t313 = load ptr, ptr %a1
|
|
%t314 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0
|
|
%t315 = load { ptr, i64, i64 }, ptr %t314
|
|
store { ptr, i64, i64 } { ptr @.str.4611, i64 8, i64 0 }, ptr %a317
|
|
store { ptr, i64, i64 } %t315, ptr %a318
|
|
call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318)
|
|
%t319 = load { ptr, i64, i64 }, ptr %a316
|
|
store { ptr, i64, i64 } %t319, ptr %a321
|
|
store { ptr, i64, i64 } { ptr @.str.4612, i64 7, i64 0 }, ptr %a322
|
|
call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322)
|
|
%t323 = load { ptr, i64, i64 }, ptr %a320
|
|
%t324 = call { ptr, i64, i64 } @finch.gen.op(ptr %t313, { ptr, i64, i64 } %t323)
|
|
store { ptr, i64, i64 } %t324, ptr %a325
|
|
%t326 = load ptr, ptr %a1
|
|
%t327 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4613, i64 35, i64 0 }, ptr %a329
|
|
store { ptr, i64, i64 } %t327, ptr %a330
|
|
call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330)
|
|
%t331 = load { ptr, i64, i64 }, ptr %a328
|
|
store { ptr, i64, i64 } %t331, ptr %a333
|
|
store { ptr, i64, i64 } { ptr @.str.4614, i64 6, i64 0 }, ptr %a334
|
|
call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334)
|
|
%t335 = load { ptr, i64, i64 }, ptr %a332
|
|
%t336 = load { ptr, i64, i64 }, ptr %a325
|
|
store { ptr, i64, i64 } %t335, ptr %a338
|
|
store { ptr, i64, i64 } %t336, ptr %a339
|
|
call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339)
|
|
%t340 = load { ptr, i64, i64 }, ptr %a337
|
|
store { ptr, i64, i64 } %t340, ptr %a342
|
|
store { ptr, i64, i64 } { ptr @.str.4615, i64 1, i64 0 }, ptr %a343
|
|
call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343)
|
|
%t344 = load { ptr, i64, i64 }, ptr %a341
|
|
call void @finch.gen.emit(ptr %t326, { ptr, i64, i64 } %t344)
|
|
br label %endif7092
|
|
else7091:
|
|
%t345 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t345, ptr %a346
|
|
store { ptr, i64, i64 } { ptr @.str.4616, i64 3, i64 0 }, ptr %a347
|
|
%t348 = call i32 @finch_str_eq(ptr %a346, ptr %a347)
|
|
%t349 = icmp ne i32 %t348, 0
|
|
br i1 %t349, label %then7093, label %else7094
|
|
then7093:
|
|
%t350 = load ptr, ptr %a1
|
|
%t351 = load { ptr, i64, i64 }, ptr %a172
|
|
call void @finch.gen.store(ptr %t350, { ptr, i64, i64 } { ptr @.str.4617, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4618, i64 15, i64 0 }, { ptr, i64, i64 } %t351)
|
|
%t352 = load ptr, ptr %a1
|
|
%t353 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4619, i64 32, i64 0 }, ptr %a355
|
|
store { ptr, i64, i64 } %t353, ptr %a356
|
|
call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356)
|
|
%t357 = load { ptr, i64, i64 }, ptr %a354
|
|
store { ptr, i64, i64 } %t357, ptr %a359
|
|
store { ptr, i64, i64 } { ptr @.str.4620, i64 6, i64 0 }, ptr %a360
|
|
call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360)
|
|
%t361 = load { ptr, i64, i64 }, ptr %a358
|
|
%t362 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0
|
|
%t363 = load { ptr, i64, i64 }, ptr %t362
|
|
store { ptr, i64, i64 } %t361, ptr %a365
|
|
store { ptr, i64, i64 } %t363, ptr %a366
|
|
call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366)
|
|
%t367 = load { ptr, i64, i64 }, ptr %a364
|
|
store { ptr, i64, i64 } %t367, ptr %a369
|
|
store { ptr, i64, i64 } { ptr @.str.4621, i64 1, i64 0 }, ptr %a370
|
|
call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370)
|
|
%t371 = load { ptr, i64, i64 }, ptr %a368
|
|
call void @finch.gen.emit(ptr %t352, { ptr, i64, i64 } %t371)
|
|
br label %endif7095
|
|
else7094:
|
|
%t372 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t372, ptr %a373
|
|
store { ptr, i64, i64 } { ptr @.str.4622, i64 5, i64 0 }, ptr %a374
|
|
%t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374)
|
|
%t376 = icmp ne i32 %t375, 0
|
|
br label %logic.from7096
|
|
logic.from7096:
|
|
br i1 %t376, label %logic.rhs7097, label %logic.end7098
|
|
logic.rhs7097:
|
|
%t377 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t378 = getelementptr inbounds %S.ast.Type, ptr %t377, i32 0, i32 1
|
|
%t379 = load { ptr, i64, i64 }, ptr %t378
|
|
%t380 = extractvalue { ptr, i64, i64 } %t379, 1
|
|
%t381 = icmp uge i64 0, %t380
|
|
br i1 %t381, label %range7099, label %inrange7100
|
|
range7099:
|
|
call void @finch_panic_index(ptr @.str.4623, i64 4220, i64 0, i64 %t380)
|
|
unreachable
|
|
inrange7100:
|
|
%t382 = extractvalue { ptr, i64, i64 } %t379, 0
|
|
%t383 = getelementptr inbounds %S.ast.Type, ptr %t382, i64 0
|
|
%t384 = getelementptr inbounds %S.ast.Type, ptr %t383, i32 0, i32 0
|
|
%t385 = load { ptr, i64, i64 }, ptr %t384
|
|
store { ptr, i64, i64 } %t385, ptr %a386
|
|
store { ptr, i64, i64 } { ptr @.str.4624, i64 2, i64 0 }, ptr %a387
|
|
%t388 = call i32 @finch_str_eq(ptr %a386, ptr %a387)
|
|
%t389 = icmp ne i32 %t388, 0
|
|
br label %logic.from7101
|
|
logic.from7101:
|
|
br i1 %t389, label %logic.end7103, label %logic.rhs7102
|
|
logic.rhs7102:
|
|
%t390 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i32 0, i32 1
|
|
%t392 = load { ptr, i64, i64 }, ptr %t391
|
|
%t393 = extractvalue { ptr, i64, i64 } %t392, 1
|
|
%t394 = icmp uge i64 0, %t393
|
|
br i1 %t394, label %range7104, label %inrange7105
|
|
range7104:
|
|
call void @finch_panic_index(ptr @.str.4625, i64 4220, i64 0, i64 %t393)
|
|
unreachable
|
|
inrange7105:
|
|
%t395 = extractvalue { ptr, i64, i64 } %t392, 0
|
|
%t396 = getelementptr inbounds %S.ast.Type, ptr %t395, i64 0
|
|
%t397 = getelementptr inbounds %S.ast.Type, ptr %t396, i32 0, i32 0
|
|
%t398 = load { ptr, i64, i64 }, ptr %t397
|
|
store { ptr, i64, i64 } %t398, ptr %a399
|
|
store { ptr, i64, i64 } { ptr @.str.4626, i64 4, i64 0 }, ptr %a400
|
|
%t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400)
|
|
%t402 = icmp ne i32 %t401, 0
|
|
br label %logic.rend7106
|
|
logic.rend7106:
|
|
br label %logic.end7103
|
|
logic.end7103:
|
|
%t403 = phi i1 [ true, %logic.from7101 ], [ %t402, %logic.rend7106 ]
|
|
br label %logic.rend7107
|
|
logic.rend7107:
|
|
br label %logic.end7098
|
|
logic.end7098:
|
|
%t404 = phi i1 [ false, %logic.from7096 ], [ %t403, %logic.rend7107 ]
|
|
br i1 %t404, label %then7108, label %else7109
|
|
then7108:
|
|
%t405 = load ptr, ptr %a1
|
|
%t406 = load { ptr, i64, i64 }, ptr %a172
|
|
call void @finch.gen.store(ptr %t405, { ptr, i64, i64 } { ptr @.str.4627, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4628, i64 15, i64 0 }, { ptr, i64, i64 } %t406)
|
|
%t407 = load ptr, ptr %a1
|
|
%t408 = load { ptr, i64, i64 }, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4629, i64 36, i64 0 }, ptr %a410
|
|
store { ptr, i64, i64 } %t408, ptr %a411
|
|
call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411)
|
|
%t412 = load { ptr, i64, i64 }, ptr %a409
|
|
store { ptr, i64, i64 } %t412, ptr %a414
|
|
store { ptr, i64, i64 } { ptr @.str.4630, i64 6, i64 0 }, ptr %a415
|
|
call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415)
|
|
%t416 = load { ptr, i64, i64 }, ptr %a413
|
|
%t417 = load ptr, ptr %a1
|
|
%t418 = load %S.gen.Val, ptr %a169
|
|
%t419 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t417, %S.gen.Val %t418)
|
|
store { ptr, i64, i64 } %t416, ptr %a421
|
|
store { ptr, i64, i64 } %t419, ptr %a422
|
|
call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422)
|
|
%t423 = load { ptr, i64, i64 }, ptr %a420
|
|
store { ptr, i64, i64 } %t423, ptr %a425
|
|
store { ptr, i64, i64 } { ptr @.str.4631, i64 1, i64 0 }, ptr %a426
|
|
call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426)
|
|
%t427 = load { ptr, i64, i64 }, ptr %a424
|
|
call void @finch.gen.emit(ptr %t407, { ptr, i64, i64 } %t427)
|
|
br label %endif7110
|
|
else7109:
|
|
%t428 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t428, ptr %a429
|
|
store { ptr, i64, i64 } { ptr @.str.4632, i64 4, i64 0 }, ptr %a430
|
|
%t431 = call i32 @finch_str_eq(ptr %a429, ptr %a430)
|
|
%t432 = icmp ne i32 %t431, 0
|
|
br label %logic.from7111
|
|
logic.from7111:
|
|
br i1 %t432, label %logic.end7113, label %logic.rhs7112
|
|
logic.rhs7112:
|
|
%t433 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t433, ptr %a434
|
|
store { ptr, i64, i64 } { ptr @.str.4633, i64 4, i64 0 }, ptr %a435
|
|
%t436 = call i32 @finch_str_eq(ptr %a434, ptr %a435)
|
|
%t437 = icmp ne i32 %t436, 0
|
|
br label %logic.rend7114
|
|
logic.rend7114:
|
|
br label %logic.end7113
|
|
logic.end7113:
|
|
%t438 = phi i1 [ true, %logic.from7111 ], [ %t437, %logic.rend7114 ]
|
|
br label %logic.from7115
|
|
logic.from7115:
|
|
br i1 %t438, label %logic.end7117, label %logic.rhs7116
|
|
logic.rhs7116:
|
|
%t439 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t439, ptr %a440
|
|
store { ptr, i64, i64 } { ptr @.str.4634, i64 5, i64 0 }, ptr %a441
|
|
%t442 = call i32 @finch_str_eq(ptr %a440, ptr %a441)
|
|
%t443 = icmp ne i32 %t442, 0
|
|
br label %logic.rend7118
|
|
logic.rend7118:
|
|
br label %logic.end7117
|
|
logic.end7117:
|
|
%t444 = phi i1 [ true, %logic.from7115 ], [ %t443, %logic.rend7118 ]
|
|
br label %logic.from7119
|
|
logic.from7119:
|
|
br i1 %t444, label %logic.end7121, label %logic.rhs7120
|
|
logic.rhs7120:
|
|
%t445 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t445, ptr %a446
|
|
store { ptr, i64, i64 } { ptr @.str.4635, i64 3, i64 0 }, ptr %a447
|
|
%t448 = call i32 @finch_str_eq(ptr %a446, ptr %a447)
|
|
%t449 = icmp ne i32 %t448, 0
|
|
br label %logic.rend7122
|
|
logic.rend7122:
|
|
br label %logic.end7121
|
|
logic.end7121:
|
|
%t450 = phi i1 [ true, %logic.from7119 ], [ %t449, %logic.rend7122 ]
|
|
br label %logic.from7123
|
|
logic.from7123:
|
|
br i1 %t450, label %logic.end7125, label %logic.rhs7124
|
|
logic.rhs7124:
|
|
%t451 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t451, ptr %a452
|
|
store { ptr, i64, i64 } { ptr @.str.4636, i64 6, i64 0 }, ptr %a453
|
|
%t454 = call i32 @finch_str_eq(ptr %a452, ptr %a453)
|
|
%t455 = icmp ne i32 %t454, 0
|
|
br label %logic.rend7126
|
|
logic.rend7126:
|
|
br label %logic.end7125
|
|
logic.end7125:
|
|
%t456 = phi i1 [ true, %logic.from7123 ], [ %t455, %logic.rend7126 ]
|
|
br label %logic.from7127
|
|
logic.from7127:
|
|
br i1 %t456, label %logic.end7129, label %logic.rhs7128
|
|
logic.rhs7128:
|
|
%t457 = load { ptr, i64, i64 }, ptr %a179
|
|
store { ptr, i64, i64 } %t457, ptr %a458
|
|
store { ptr, i64, i64 } { ptr @.str.4637, i64 4, i64 0 }, ptr %a459
|
|
%t460 = call i32 @finch_str_eq(ptr %a458, ptr %a459)
|
|
%t461 = icmp ne i32 %t460, 0
|
|
br label %logic.rend7130
|
|
logic.rend7130:
|
|
br label %logic.end7129
|
|
logic.end7129:
|
|
%t462 = phi i1 [ true, %logic.from7127 ], [ %t461, %logic.rend7130 ]
|
|
br i1 %t462, label %then7131, label %else7132
|
|
then7131:
|
|
%t463 = load ptr, ptr %a1
|
|
%t464 = load { ptr, i64, i64 }, ptr %a172
|
|
call void @finch.gen.store(ptr %t463, { ptr, i64, i64 } { ptr @.str.4638, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4639, i64 15, i64 0 }, { ptr, i64, i64 } %t464)
|
|
%t465 = load ptr, ptr %a1
|
|
%t466 = load { ptr, i64, i64 }, ptr %a172
|
|
%t467 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0
|
|
%t468 = load { ptr, i64, i64 }, ptr %t467
|
|
%t469 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t470 = load %S.ast.Type, ptr %t469
|
|
call void @finch.gen.emitFormat(ptr %t465, { ptr, i64, i64 } %t466, { ptr, i64, i64 } %t468, %S.ast.Type %t470, i1 false)
|
|
br label %endif7133
|
|
else7132:
|
|
%t471 = load ptr, ptr %a1
|
|
%t472 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t473 = load { ptr, i64, i64 }, ptr %t472
|
|
%t474 = extractvalue { ptr, i64, i64 } %t473, 1
|
|
%t475 = icmp uge i64 0, %t474
|
|
br i1 %t475, label %range7134, label %inrange7135
|
|
range7134:
|
|
call void @finch_panic_index(ptr @.str.4640, i64 4228, i64 0, i64 %t474)
|
|
unreachable
|
|
inrange7135:
|
|
%t476 = extractvalue { ptr, i64, i64 } %t473, 0
|
|
%t477 = getelementptr inbounds %S.ast.Node, ptr %t476, i64 0
|
|
%t478 = load %S.ast.Node, ptr %t477
|
|
%t479 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1
|
|
%t480 = load %S.ast.Type, ptr %t479
|
|
%t481 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t480)
|
|
store { ptr, i64, i64 } { ptr @.str.4641, i64 11, i64 0 }, ptr %a483
|
|
store { ptr, i64, i64 } %t481, ptr %a484
|
|
call void @finch_str_concat(ptr %a482, ptr %a483, ptr %a484)
|
|
%t485 = load { ptr, i64, i64 }, ptr %a482
|
|
store { ptr, i64, i64 } %t485, ptr %a487
|
|
store { ptr, i64, i64 } { ptr @.str.4642, i64 9, i64 0 }, ptr %a488
|
|
call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488)
|
|
%t489 = load { ptr, i64, i64 }, ptr %a486
|
|
call void @finch.gen.fail(ptr %t471, %S.ast.Node %t478, { ptr, i64, i64 } %t489)
|
|
br label %endif7133
|
|
endif7133:
|
|
br label %endif7110
|
|
endif7110:
|
|
br label %endif7095
|
|
endif7095:
|
|
br label %endif7092
|
|
endif7092:
|
|
br label %endif7089
|
|
endif7089:
|
|
br label %endif7086
|
|
endif7086:
|
|
br label %endif7083
|
|
endif7083:
|
|
br label %endif7080
|
|
endif7080:
|
|
br label %endif7077
|
|
endif7077:
|
|
%t490 = load ptr, ptr %a1
|
|
%t491 = load { ptr, i64, i64 }, ptr %a172
|
|
%t492 = call { ptr, i64, i64 } @finch.gen.load(ptr %t490, { ptr, i64, i64 } { ptr @.str.4643, i64 17, i64 0 }, { ptr, i64, i64 } %t491)
|
|
%t493 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t492, 0
|
|
%t494 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4644, i64 3, i64 0 })
|
|
%t495 = insertvalue %S.gen.Val %t493, %S.ast.Type %t494, 1
|
|
%t496 = insertvalue %S.gen.Val %t495, i1 true, 2
|
|
ret %S.gen.Val %t496
|
|
endif7072:
|
|
%t497 = load { ptr, i64, i64 }, ptr %a8
|
|
%t498 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t497)
|
|
store { ptr, i64, i64 } %t498, ptr %a499
|
|
%t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %a499, i32 0, i32 1
|
|
%t501 = load i64, ptr %t500
|
|
%t502 = icmp sgt i64 %t501, 0
|
|
br i1 %t502, label %then7136, label %endif7138
|
|
then7136:
|
|
%t503 = load ptr, ptr %a1
|
|
%t504 = load %S.ast.Node, ptr %a2
|
|
%t505 = load { ptr, i64, i64 }, ptr %a499
|
|
%t506 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t505)
|
|
%t507 = call %S.gen.Val @finch.gen.convert(ptr %t503, %S.ast.Node %t504, %S.ast.Type %t506)
|
|
ret %S.gen.Val %t507
|
|
endif7138:
|
|
%t508 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t508, ptr %a509
|
|
store { ptr, i64, i64 } { ptr @.str.4645, i64 9, i64 0 }, ptr %a510
|
|
%t511 = call i32 @finch_str_eq(ptr %a509, ptr %a510)
|
|
%t512 = icmp ne i32 %t511, 0
|
|
br label %logic.from7139
|
|
logic.from7139:
|
|
br i1 %t512, label %logic.end7141, label %logic.rhs7140
|
|
logic.rhs7140:
|
|
%t513 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t513, ptr %a514
|
|
store { ptr, i64, i64 } { ptr @.str.4646, i64 11, i64 0 }, ptr %a515
|
|
%t516 = call i32 @finch_str_eq(ptr %a514, ptr %a515)
|
|
%t517 = icmp ne i32 %t516, 0
|
|
br label %logic.rend7142
|
|
logic.rend7142:
|
|
br label %logic.end7141
|
|
logic.end7141:
|
|
%t518 = phi i1 [ true, %logic.from7139 ], [ %t517, %logic.rend7142 ]
|
|
br i1 %t518, label %then7143, label %endif7145
|
|
then7143:
|
|
%t519 = load ptr, ptr %a1
|
|
%t520 = load %S.ast.Node, ptr %a2
|
|
%t521 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t519, %S.ast.Node %t520, i64 0, i64 1, { ptr, i64, i64 } %t521)
|
|
%t522 = load ptr, ptr %a1
|
|
%t523 = load ptr, ptr %a1
|
|
%t524 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t525 = load { ptr, i64, i64 }, ptr %t524
|
|
%t526 = extractvalue { ptr, i64, i64 } %t525, 1
|
|
%t527 = icmp uge i64 0, %t526
|
|
br i1 %t527, label %range7146, label %inrange7147
|
|
range7146:
|
|
call void @finch_panic_index(ptr @.str.4647, i64 4238, i64 0, i64 %t526)
|
|
unreachable
|
|
inrange7147:
|
|
%t528 = extractvalue { ptr, i64, i64 } %t525, 0
|
|
%t529 = getelementptr inbounds %S.ast.Node, ptr %t528, i64 0
|
|
%t530 = load %S.ast.Node, ptr %t529
|
|
%t531 = call %S.gen.Val @finch.gen.strArg(ptr %t523, %S.ast.Node %t530, { ptr, i64, i64 } { ptr @.str.4648, i64 13, i64 0 })
|
|
%t532 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t522, %S.gen.Val %t531)
|
|
store { ptr, i64, i64 } %t532, ptr %a533
|
|
%t534 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t534, ptr %a535
|
|
store { ptr, i64, i64 } { ptr @.str.4649, i64 11, i64 0 }, ptr %a536
|
|
%t537 = call i32 @finch_str_eq(ptr %a535, ptr %a536)
|
|
%t538 = icmp ne i32 %t537, 0
|
|
br i1 %t538, label %then7148, label %endif7150
|
|
then7148:
|
|
%t539 = load ptr, ptr %a1
|
|
%t540 = load { ptr, i64, i64 }, ptr %a533
|
|
store { ptr, i64, i64 } { ptr @.str.4650, i64 32, i64 0 }, ptr %a542
|
|
store { ptr, i64, i64 } %t540, ptr %a543
|
|
call void @finch_str_concat(ptr %a541, ptr %a542, ptr %a543)
|
|
%t544 = load { ptr, i64, i64 }, ptr %a541
|
|
store { ptr, i64, i64 } %t544, ptr %a546
|
|
store { ptr, i64, i64 } { ptr @.str.4651, i64 1, i64 0 }, ptr %a547
|
|
call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547)
|
|
%t548 = load { ptr, i64, i64 }, ptr %a545
|
|
%t549 = call { ptr, i64, i64 } @finch.gen.op(ptr %t539, { ptr, i64, i64 } %t548)
|
|
store { ptr, i64, i64 } %t549, ptr %a550
|
|
%t551 = load ptr, ptr %a1
|
|
%t552 = load { ptr, i64, i64 }, ptr %a550
|
|
store { ptr, i64, i64 } { ptr @.str.4652, i64 12, i64 0 }, ptr %a554
|
|
store { ptr, i64, i64 } %t552, ptr %a555
|
|
call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555)
|
|
%t556 = load { ptr, i64, i64 }, ptr %a553
|
|
store { ptr, i64, i64 } %t556, ptr %a558
|
|
store { ptr, i64, i64 } { ptr @.str.4653, i64 3, i64 0 }, ptr %a559
|
|
call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559)
|
|
%t560 = load { ptr, i64, i64 }, ptr %a557
|
|
%t561 = call { ptr, i64, i64 } @finch.gen.op(ptr %t551, { ptr, i64, i64 } %t560)
|
|
%t562 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t561, 0
|
|
%t563 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4654, i64 4, i64 0 })
|
|
%t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1
|
|
ret %S.gen.Val %t564
|
|
endif7150:
|
|
%t565 = load ptr, ptr %a1
|
|
%t566 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t565)
|
|
store { ptr, i64, i64 } %t566, ptr %a567
|
|
%t568 = load ptr, ptr %a1
|
|
%t569 = icmp eq ptr %t568, null
|
|
br i1 %t569, label %panic7151, label %ok7152
|
|
panic7151:
|
|
call void @finch_panic(ptr @.str.4655, i64 4244, ptr @.str.4656)
|
|
unreachable
|
|
ok7152:
|
|
%t570 = getelementptr inbounds %S.gen.Gen, ptr %t568, i32 0, i32 37
|
|
%t571 = load { ptr, i64, i64 }, ptr %t570
|
|
%t572 = load %S.ast.Node, ptr %a2
|
|
%t573 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t572)
|
|
store { ptr, i64, i64 } %t571, ptr %a574
|
|
store { ptr, i64, i64 } %t573, ptr %a575
|
|
%t576 = call i32 @finch_str_eq(ptr %a574, ptr %a575)
|
|
%t577 = icmp ne i32 %t576, 0
|
|
br i1 %t577, label %then7153, label %endif7155
|
|
then7153:
|
|
%t578 = load ptr, ptr %a1
|
|
%t579 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t578, { ptr, i64, i64 } { ptr @.str.4657, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t579, ptr %a580
|
|
%t581 = load ptr, ptr %a1
|
|
%t582 = load { ptr, i64, i64 }, ptr %a567
|
|
call void @finch.gen.store(ptr %t581, { ptr, i64, i64 } { ptr @.str.4658, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4659, i64 15, i64 0 }, { ptr, i64, i64 } %t582)
|
|
%t583 = load ptr, ptr %a1
|
|
%t584 = load { ptr, i64, i64 }, ptr %a580
|
|
call void @finch.gen.store(ptr %t583, { ptr, i64, i64 } { ptr @.str.4660, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4661, i64 15, i64 0 }, { ptr, i64, i64 } %t584)
|
|
%t585 = load ptr, ptr %a1
|
|
%t586 = load { ptr, i64, i64 }, ptr %a567
|
|
store { ptr, i64, i64 } { ptr @.str.4662, i64 34, i64 0 }, ptr %a588
|
|
store { ptr, i64, i64 } %t586, ptr %a589
|
|
call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589)
|
|
%t590 = load { ptr, i64, i64 }, ptr %a587
|
|
store { ptr, i64, i64 } %t590, ptr %a592
|
|
store { ptr, i64, i64 } { ptr @.str.4663, i64 6, i64 0 }, ptr %a593
|
|
call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593)
|
|
%t594 = load { ptr, i64, i64 }, ptr %a591
|
|
%t595 = load { ptr, i64, i64 }, ptr %a533
|
|
store { ptr, i64, i64 } %t594, ptr %a597
|
|
store { ptr, i64, i64 } %t595, ptr %a598
|
|
call void @finch_str_concat(ptr %a596, ptr %a597, ptr %a598)
|
|
%t599 = load { ptr, i64, i64 }, ptr %a596
|
|
store { ptr, i64, i64 } %t599, ptr %a601
|
|
store { ptr, i64, i64 } { ptr @.str.4664, i64 6, i64 0 }, ptr %a602
|
|
call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602)
|
|
%t603 = load { ptr, i64, i64 }, ptr %a600
|
|
%t604 = load { ptr, i64, i64 }, ptr %a580
|
|
store { ptr, i64, i64 } %t603, ptr %a606
|
|
store { ptr, i64, i64 } %t604, ptr %a607
|
|
call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607)
|
|
%t608 = load { ptr, i64, i64 }, ptr %a605
|
|
store { ptr, i64, i64 } %t608, ptr %a610
|
|
store { ptr, i64, i64 } { ptr @.str.4665, i64 1, i64 0 }, ptr %a611
|
|
call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611)
|
|
%t612 = load { ptr, i64, i64 }, ptr %a609
|
|
%t613 = call { ptr, i64, i64 } @finch.gen.op(ptr %t585, { ptr, i64, i64 } %t612)
|
|
store { ptr, i64, i64 } %t613, ptr %a614
|
|
%t615 = load ptr, ptr %a1
|
|
%t616 = load { ptr, i64, i64 }, ptr %a614
|
|
store { ptr, i64, i64 } { ptr @.str.4666, i64 12, i64 0 }, ptr %a618
|
|
store { ptr, i64, i64 } %t616, ptr %a619
|
|
call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619)
|
|
%t620 = load { ptr, i64, i64 }, ptr %a617
|
|
store { ptr, i64, i64 } %t620, ptr %a622
|
|
store { ptr, i64, i64 } { ptr @.str.4667, i64 3, i64 0 }, ptr %a623
|
|
call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623)
|
|
%t624 = load { ptr, i64, i64 }, ptr %a621
|
|
%t625 = call { ptr, i64, i64 } @finch.gen.op(ptr %t615, { ptr, i64, i64 } %t624)
|
|
%t626 = load ptr, ptr %a1
|
|
%t627 = icmp eq ptr %t626, null
|
|
br i1 %t627, label %panic7156, label %ok7157
|
|
panic7156:
|
|
call void @finch_panic(ptr @.str.4668, i64 4249, ptr @.str.4669)
|
|
unreachable
|
|
ok7157:
|
|
%t628 = getelementptr inbounds %S.gen.Gen, ptr %t626, i32 0, i32 38
|
|
store { ptr, i64, i64 } %t625, ptr %t628
|
|
%t629 = load ptr, ptr %a1
|
|
%t630 = load { ptr, i64, i64 }, ptr %a580
|
|
%t631 = call { ptr, i64, i64 } @finch.gen.load(ptr %t629, { ptr, i64, i64 } { ptr @.str.4670, i64 17, i64 0 }, { ptr, i64, i64 } %t630)
|
|
%t632 = load ptr, ptr %a1
|
|
%t633 = icmp eq ptr %t632, null
|
|
br i1 %t633, label %panic7158, label %ok7159
|
|
panic7158:
|
|
call void @finch_panic(ptr @.str.4671, i64 4250, ptr @.str.4672)
|
|
unreachable
|
|
ok7159:
|
|
%t634 = getelementptr inbounds %S.gen.Gen, ptr %t632, i32 0, i32 39
|
|
store { ptr, i64, i64 } %t631, ptr %t634
|
|
%t635 = load ptr, ptr %a1
|
|
%t636 = load { ptr, i64, i64 }, ptr %a567
|
|
%t637 = call { ptr, i64, i64 } @finch.gen.load(ptr %t635, { ptr, i64, i64 } { ptr @.str.4673, i64 17, i64 0 }, { ptr, i64, i64 } %t636)
|
|
%t638 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t637, 0
|
|
%t639 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4674, i64 3, i64 0 })
|
|
%t640 = insertvalue %S.gen.Val %t638, %S.ast.Type %t639, 1
|
|
%t641 = insertvalue %S.gen.Val %t640, i1 true, 2
|
|
ret %S.gen.Val %t641
|
|
endif7155:
|
|
%t642 = load ptr, ptr %a1
|
|
%t643 = load ptr, ptr %a1
|
|
%t644 = icmp eq ptr %t643, null
|
|
br i1 %t644, label %panic7160, label %ok7161
|
|
panic7160:
|
|
call void @finch_panic(ptr @.str.4675, i64 4253, ptr @.str.4676)
|
|
unreachable
|
|
ok7161:
|
|
%t645 = getelementptr inbounds %S.gen.Gen, ptr %t643, i32 0, i32 1
|
|
%t646 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t647 = load i64, ptr %t646
|
|
%t648 = load { ptr, i64, i64 }, ptr %t645
|
|
%t649 = extractvalue { ptr, i64, i64 } %t648, 1
|
|
%t650 = icmp uge i64 %t647, %t649
|
|
br i1 %t650, label %range7162, label %inrange7163
|
|
range7162:
|
|
call void @finch_panic_index(ptr @.str.4677, i64 4253, i64 %t647, i64 %t649)
|
|
unreachable
|
|
inrange7163:
|
|
%t651 = extractvalue { ptr, i64, i64 } %t648, 0
|
|
%t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t651, i64 %t647
|
|
%t653 = load { ptr, i64, i64 }, ptr %t652
|
|
%t654 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t642, { ptr, i64, i64 } %t653)
|
|
store { ptr, i64, i64 } %t654, ptr %a655
|
|
%t656 = load ptr, ptr %a1
|
|
%t657 = load { ptr, i64, i64 }, ptr %a567
|
|
store { ptr, i64, i64 } { ptr @.str.4678, i64 31, i64 0 }, ptr %a659
|
|
store { ptr, i64, i64 } %t657, ptr %a660
|
|
call void @finch_str_concat(ptr %a658, ptr %a659, ptr %a660)
|
|
%t661 = load { ptr, i64, i64 }, ptr %a658
|
|
store { ptr, i64, i64 } %t661, ptr %a663
|
|
store { ptr, i64, i64 } { ptr @.str.4679, i64 6, i64 0 }, ptr %a664
|
|
call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664)
|
|
%t665 = load { ptr, i64, i64 }, ptr %a662
|
|
%t666 = load { ptr, i64, i64 }, ptr %a533
|
|
store { ptr, i64, i64 } %t665, ptr %a668
|
|
store { ptr, i64, i64 } %t666, ptr %a669
|
|
call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669)
|
|
%t670 = load { ptr, i64, i64 }, ptr %a667
|
|
store { ptr, i64, i64 } %t670, ptr %a672
|
|
store { ptr, i64, i64 } { ptr @.str.4680, i64 6, i64 0 }, ptr %a673
|
|
call void @finch_str_concat(ptr %a671, ptr %a672, ptr %a673)
|
|
%t674 = load { ptr, i64, i64 }, ptr %a671
|
|
%t675 = load { ptr, i64, i64 }, ptr %a655
|
|
store { ptr, i64, i64 } %t674, ptr %a677
|
|
store { ptr, i64, i64 } %t675, ptr %a678
|
|
call void @finch_str_concat(ptr %a676, ptr %a677, ptr %a678)
|
|
%t679 = load { ptr, i64, i64 }, ptr %a676
|
|
store { ptr, i64, i64 } %t679, ptr %a681
|
|
store { ptr, i64, i64 } { ptr @.str.4681, i64 6, i64 0 }, ptr %a682
|
|
call void @finch_str_concat(ptr %a680, ptr %a681, ptr %a682)
|
|
%t683 = load { ptr, i64, i64 }, ptr %a680
|
|
%t684 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t685 = load i64, ptr %t684
|
|
call void @finch_str_from_int(ptr %a686, i64 %t685)
|
|
%t687 = load { ptr, i64, i64 }, ptr %a686
|
|
store { ptr, i64, i64 } %t683, ptr %a689
|
|
store { ptr, i64, i64 } %t687, ptr %a690
|
|
call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690)
|
|
%t691 = load { ptr, i64, i64 }, ptr %a688
|
|
store { ptr, i64, i64 } %t691, ptr %a693
|
|
store { ptr, i64, i64 } { ptr @.str.4682, i64 1, i64 0 }, ptr %a694
|
|
call void @finch_str_concat(ptr %a692, ptr %a693, ptr %a694)
|
|
%t695 = load { ptr, i64, i64 }, ptr %a692
|
|
call void @finch.gen.emit(ptr %t656, { ptr, i64, i64 } %t695)
|
|
%t696 = load ptr, ptr %a1
|
|
%t697 = load { ptr, i64, i64 }, ptr %a567
|
|
%t698 = call { ptr, i64, i64 } @finch.gen.load(ptr %t696, { ptr, i64, i64 } { ptr @.str.4683, i64 17, i64 0 }, { ptr, i64, i64 } %t697)
|
|
%t699 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t698, 0
|
|
%t700 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4684, i64 3, i64 0 })
|
|
%t701 = insertvalue %S.gen.Val %t699, %S.ast.Type %t700, 1
|
|
%t702 = insertvalue %S.gen.Val %t701, i1 true, 2
|
|
ret %S.gen.Val %t702
|
|
endif7145:
|
|
%t703 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t703, ptr %a704
|
|
store { ptr, i64, i64 } { ptr @.str.4685, i64 10, i64 0 }, ptr %a705
|
|
%t706 = call i32 @finch_str_eq(ptr %a704, ptr %a705)
|
|
%t707 = icmp ne i32 %t706, 0
|
|
br i1 %t707, label %then7164, label %endif7166
|
|
then7164:
|
|
%t708 = load ptr, ptr %a1
|
|
%t709 = load %S.ast.Node, ptr %a2
|
|
%t710 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t708, %S.ast.Node %t709, i64 0, i64 2, { ptr, i64, i64 } %t710)
|
|
%t711 = load ptr, ptr %a1
|
|
%t712 = load ptr, ptr %a1
|
|
%t713 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t714 = load { ptr, i64, i64 }, ptr %t713
|
|
%t715 = extractvalue { ptr, i64, i64 } %t714, 1
|
|
%t716 = icmp uge i64 0, %t715
|
|
br i1 %t716, label %range7167, label %inrange7168
|
|
range7167:
|
|
call void @finch_panic_index(ptr @.str.4686, i64 4259, i64 0, i64 %t715)
|
|
unreachable
|
|
inrange7168:
|
|
%t717 = extractvalue { ptr, i64, i64 } %t714, 0
|
|
%t718 = getelementptr inbounds %S.ast.Node, ptr %t717, i64 0
|
|
%t719 = load %S.ast.Node, ptr %t718
|
|
%t720 = call %S.gen.Val @finch.gen.strArg(ptr %t712, %S.ast.Node %t719, { ptr, i64, i64 } { ptr @.str.4687, i64 13, i64 0 })
|
|
%t721 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t711, %S.gen.Val %t720)
|
|
store { ptr, i64, i64 } %t721, ptr %a722
|
|
%t723 = load ptr, ptr %a1
|
|
%t724 = load ptr, ptr %a1
|
|
%t725 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t726 = load { ptr, i64, i64 }, ptr %t725
|
|
%t727 = extractvalue { ptr, i64, i64 } %t726, 1
|
|
%t728 = icmp uge i64 1, %t727
|
|
br i1 %t728, label %range7169, label %inrange7170
|
|
range7169:
|
|
call void @finch_panic_index(ptr @.str.4688, i64 4260, i64 1, i64 %t727)
|
|
unreachable
|
|
inrange7170:
|
|
%t729 = extractvalue { ptr, i64, i64 } %t726, 0
|
|
%t730 = getelementptr inbounds %S.ast.Node, ptr %t729, i64 1
|
|
%t731 = load %S.ast.Node, ptr %t730
|
|
%t732 = call %S.gen.Val @finch.gen.strArg(ptr %t724, %S.ast.Node %t731, { ptr, i64, i64 } { ptr @.str.4689, i64 8, i64 0 })
|
|
%t733 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t723, %S.gen.Val %t732)
|
|
store { ptr, i64, i64 } %t733, ptr %a734
|
|
%t735 = load ptr, ptr %a1
|
|
%t736 = icmp eq ptr %t735, null
|
|
br i1 %t736, label %panic7171, label %ok7172
|
|
panic7171:
|
|
call void @finch_panic(ptr @.str.4690, i64 4261, ptr @.str.4691)
|
|
unreachable
|
|
ok7172:
|
|
%t737 = getelementptr inbounds %S.gen.Gen, ptr %t735, i32 0, i32 37
|
|
%t738 = load { ptr, i64, i64 }, ptr %t737
|
|
%t739 = load %S.ast.Node, ptr %a2
|
|
%t740 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t739)
|
|
store { ptr, i64, i64 } %t738, ptr %a741
|
|
store { ptr, i64, i64 } %t740, ptr %a742
|
|
%t743 = call i32 @finch_str_eq(ptr %a741, ptr %a742)
|
|
%t744 = icmp ne i32 %t743, 0
|
|
br i1 %t744, label %then7173, label %endif7175
|
|
then7173:
|
|
%t745 = load ptr, ptr %a1
|
|
%t746 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t745, { ptr, i64, i64 } { ptr @.str.4692, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t746, ptr %a747
|
|
%t748 = load ptr, ptr %a1
|
|
%t749 = load { ptr, i64, i64 }, ptr %a747
|
|
call void @finch.gen.store(ptr %t748, { ptr, i64, i64 } { ptr @.str.4693, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4694, i64 15, i64 0 }, { ptr, i64, i64 } %t749)
|
|
%t750 = load ptr, ptr %a1
|
|
%t751 = load { ptr, i64, i64 }, ptr %a722
|
|
store { ptr, i64, i64 } { ptr @.str.4695, i64 35, i64 0 }, ptr %a753
|
|
store { ptr, i64, i64 } %t751, ptr %a754
|
|
call void @finch_str_concat(ptr %a752, ptr %a753, ptr %a754)
|
|
%t755 = load { ptr, i64, i64 }, ptr %a752
|
|
store { ptr, i64, i64 } %t755, ptr %a757
|
|
store { ptr, i64, i64 } { ptr @.str.4696, i64 6, i64 0 }, ptr %a758
|
|
call void @finch_str_concat(ptr %a756, ptr %a757, ptr %a758)
|
|
%t759 = load { ptr, i64, i64 }, ptr %a756
|
|
%t760 = load { ptr, i64, i64 }, ptr %a734
|
|
store { ptr, i64, i64 } %t759, ptr %a762
|
|
store { ptr, i64, i64 } %t760, ptr %a763
|
|
call void @finch_str_concat(ptr %a761, ptr %a762, ptr %a763)
|
|
%t764 = load { ptr, i64, i64 }, ptr %a761
|
|
store { ptr, i64, i64 } %t764, ptr %a766
|
|
store { ptr, i64, i64 } { ptr @.str.4697, i64 6, i64 0 }, ptr %a767
|
|
call void @finch_str_concat(ptr %a765, ptr %a766, ptr %a767)
|
|
%t768 = load { ptr, i64, i64 }, ptr %a765
|
|
%t769 = load { ptr, i64, i64 }, ptr %a747
|
|
store { ptr, i64, i64 } %t768, ptr %a771
|
|
store { ptr, i64, i64 } %t769, ptr %a772
|
|
call void @finch_str_concat(ptr %a770, ptr %a771, ptr %a772)
|
|
%t773 = load { ptr, i64, i64 }, ptr %a770
|
|
store { ptr, i64, i64 } %t773, ptr %a775
|
|
store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a776
|
|
call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776)
|
|
%t777 = load { ptr, i64, i64 }, ptr %a774
|
|
%t778 = call { ptr, i64, i64 } @finch.gen.op(ptr %t750, { ptr, i64, i64 } %t777)
|
|
store { ptr, i64, i64 } %t778, ptr %a779
|
|
%t780 = load ptr, ptr %a1
|
|
%t781 = load { ptr, i64, i64 }, ptr %a779
|
|
store { ptr, i64, i64 } { ptr @.str.4699, i64 12, i64 0 }, ptr %a783
|
|
store { ptr, i64, i64 } %t781, ptr %a784
|
|
call void @finch_str_concat(ptr %a782, ptr %a783, ptr %a784)
|
|
%t785 = load { ptr, i64, i64 }, ptr %a782
|
|
store { ptr, i64, i64 } %t785, ptr %a787
|
|
store { ptr, i64, i64 } { ptr @.str.4700, i64 3, i64 0 }, ptr %a788
|
|
call void @finch_str_concat(ptr %a786, ptr %a787, ptr %a788)
|
|
%t789 = load { ptr, i64, i64 }, ptr %a786
|
|
%t790 = call { ptr, i64, i64 } @finch.gen.op(ptr %t780, { ptr, i64, i64 } %t789)
|
|
%t791 = load ptr, ptr %a1
|
|
%t792 = icmp eq ptr %t791, null
|
|
br i1 %t792, label %panic7176, label %ok7177
|
|
panic7176:
|
|
call void @finch_panic(ptr @.str.4701, i64 4265, ptr @.str.4702)
|
|
unreachable
|
|
ok7177:
|
|
%t793 = getelementptr inbounds %S.gen.Gen, ptr %t791, i32 0, i32 38
|
|
store { ptr, i64, i64 } %t790, ptr %t793
|
|
%t794 = load ptr, ptr %a1
|
|
%t795 = load { ptr, i64, i64 }, ptr %a747
|
|
%t796 = call { ptr, i64, i64 } @finch.gen.load(ptr %t794, { ptr, i64, i64 } { ptr @.str.4703, i64 17, i64 0 }, { ptr, i64, i64 } %t795)
|
|
%t797 = load ptr, ptr %a1
|
|
%t798 = icmp eq ptr %t797, null
|
|
br i1 %t798, label %panic7178, label %ok7179
|
|
panic7178:
|
|
call void @finch_panic(ptr @.str.4704, i64 4266, ptr @.str.4705)
|
|
unreachable
|
|
ok7179:
|
|
%t799 = getelementptr inbounds %S.gen.Gen, ptr %t797, i32 0, i32 39
|
|
store { ptr, i64, i64 } %t796, ptr %t799
|
|
%t800 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4706, i64 4, i64 0 })
|
|
%t801 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t800, 1
|
|
ret %S.gen.Val %t801
|
|
endif7175:
|
|
%t802 = load ptr, ptr %a1
|
|
%t803 = load { ptr, i64, i64 }, ptr %a722
|
|
store { ptr, i64, i64 } { ptr @.str.4707, i64 31, i64 0 }, ptr %a805
|
|
store { ptr, i64, i64 } %t803, ptr %a806
|
|
call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806)
|
|
%t807 = load { ptr, i64, i64 }, ptr %a804
|
|
store { ptr, i64, i64 } %t807, ptr %a809
|
|
store { ptr, i64, i64 } { ptr @.str.4708, i64 6, i64 0 }, ptr %a810
|
|
call void @finch_str_concat(ptr %a808, ptr %a809, ptr %a810)
|
|
%t811 = load { ptr, i64, i64 }, ptr %a808
|
|
%t812 = load { ptr, i64, i64 }, ptr %a734
|
|
store { ptr, i64, i64 } %t811, ptr %a814
|
|
store { ptr, i64, i64 } %t812, ptr %a815
|
|
call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815)
|
|
%t816 = load { ptr, i64, i64 }, ptr %a813
|
|
store { ptr, i64, i64 } %t816, ptr %a818
|
|
store { ptr, i64, i64 } { ptr @.str.4709, i64 1, i64 0 }, ptr %a819
|
|
call void @finch_str_concat(ptr %a817, ptr %a818, ptr %a819)
|
|
%t820 = load { ptr, i64, i64 }, ptr %a817
|
|
%t821 = call { ptr, i64, i64 } @finch.gen.op(ptr %t802, { ptr, i64, i64 } %t820)
|
|
store { ptr, i64, i64 } %t821, ptr %a822
|
|
%t823 = load ptr, ptr %a1
|
|
%t824 = load { ptr, i64, i64 }, ptr %a822
|
|
store { ptr, i64, i64 } { ptr @.str.4710, i64 12, i64 0 }, ptr %a826
|
|
store { ptr, i64, i64 } %t824, ptr %a827
|
|
call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827)
|
|
%t828 = load { ptr, i64, i64 }, ptr %a825
|
|
store { ptr, i64, i64 } %t828, ptr %a830
|
|
store { ptr, i64, i64 } { ptr @.str.4711, i64 3, i64 0 }, ptr %a831
|
|
call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831)
|
|
%t832 = load { ptr, i64, i64 }, ptr %a829
|
|
%t833 = call { ptr, i64, i64 } @finch.gen.op(ptr %t823, { ptr, i64, i64 } %t832)
|
|
%t834 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t833, 0
|
|
%t835 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4712, i64 4, i64 0 })
|
|
%t836 = insertvalue %S.gen.Val %t834, %S.ast.Type %t835, 1
|
|
ret %S.gen.Val %t836
|
|
endif7166:
|
|
%t837 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t837, ptr %a838
|
|
store { ptr, i64, i64 } { ptr @.str.4713, i64 11, i64 0 }, ptr %a839
|
|
%t840 = call i32 @finch_str_eq(ptr %a838, ptr %a839)
|
|
%t841 = icmp ne i32 %t840, 0
|
|
br i1 %t841, label %then7180, label %endif7182
|
|
then7180:
|
|
%t842 = load ptr, ptr %a1
|
|
%t843 = load %S.ast.Node, ptr %a2
|
|
%t844 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t842, %S.ast.Node %t843, i64 0, i64 1, { ptr, i64, i64 } %t844)
|
|
%t845 = load ptr, ptr %a1
|
|
%t846 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t847 = load { ptr, i64, i64 }, ptr %t846
|
|
%t848 = extractvalue { ptr, i64, i64 } %t847, 1
|
|
%t849 = icmp uge i64 0, %t848
|
|
br i1 %t849, label %range7183, label %inrange7184
|
|
range7183:
|
|
call void @finch_panic_index(ptr @.str.4714, i64 4274, i64 0, i64 %t848)
|
|
unreachable
|
|
inrange7184:
|
|
%t850 = extractvalue { ptr, i64, i64 } %t847, 0
|
|
%t851 = getelementptr inbounds %S.ast.Node, ptr %t850, i64 0
|
|
%t852 = load %S.ast.Node, ptr %t851
|
|
%t853 = call %S.gen.Val @finch.gen.strArg(ptr %t845, %S.ast.Node %t852, { ptr, i64, i64 } { ptr @.str.4715, i64 13, i64 0 })
|
|
store %S.gen.Val %t853, ptr %a854
|
|
%t855 = load ptr, ptr %a1
|
|
%t856 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t855)
|
|
store { ptr, i64, i64 } %t856, ptr %a857
|
|
%t858 = load ptr, ptr %a1
|
|
%t859 = load { ptr, i64, i64 }, ptr %a857
|
|
store { ptr, i64, i64 } { ptr @.str.4716, i64 30, i64 0 }, ptr %a861
|
|
store { ptr, i64, i64 } %t859, ptr %a862
|
|
call void @finch_str_concat(ptr %a860, ptr %a861, ptr %a862)
|
|
%t863 = load { ptr, i64, i64 }, ptr %a860
|
|
store { ptr, i64, i64 } %t863, ptr %a865
|
|
store { ptr, i64, i64 } { ptr @.str.4717, i64 6, i64 0 }, ptr %a866
|
|
call void @finch_str_concat(ptr %a864, ptr %a865, ptr %a866)
|
|
%t867 = load { ptr, i64, i64 }, ptr %a864
|
|
%t868 = load ptr, ptr %a1
|
|
%t869 = load %S.gen.Val, ptr %a854
|
|
%t870 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t868, %S.gen.Val %t869)
|
|
store { ptr, i64, i64 } %t867, ptr %a872
|
|
store { ptr, i64, i64 } %t870, ptr %a873
|
|
call void @finch_str_concat(ptr %a871, ptr %a872, ptr %a873)
|
|
%t874 = load { ptr, i64, i64 }, ptr %a871
|
|
store { ptr, i64, i64 } %t874, ptr %a876
|
|
store { ptr, i64, i64 } { ptr @.str.4718, i64 1, i64 0 }, ptr %a877
|
|
call void @finch_str_concat(ptr %a875, ptr %a876, ptr %a877)
|
|
%t878 = load { ptr, i64, i64 }, ptr %a875
|
|
call void @finch.gen.emit(ptr %t858, { ptr, i64, i64 } %t878)
|
|
%t879 = load ptr, ptr %a1
|
|
%t880 = icmp eq ptr %t879, null
|
|
br i1 %t880, label %panic7185, label %ok7186
|
|
panic7185:
|
|
call void @finch_panic(ptr @.str.4719, i64 4277, ptr @.str.4720)
|
|
unreachable
|
|
ok7186:
|
|
%t881 = getelementptr inbounds %S.gen.Gen, ptr %t879, i32 0, i32 37
|
|
%t882 = load { ptr, i64, i64 }, ptr %t881
|
|
%t883 = load %S.ast.Node, ptr %a2
|
|
%t884 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t883)
|
|
store { ptr, i64, i64 } %t882, ptr %a885
|
|
store { ptr, i64, i64 } %t884, ptr %a886
|
|
%t887 = call i32 @finch_str_eq(ptr %a885, ptr %a886)
|
|
%t888 = icmp ne i32 %t887, 0
|
|
br i1 %t888, label %then7187, label %endif7189
|
|
then7187:
|
|
%t889 = load ptr, ptr %a1
|
|
%t890 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t889, { ptr, i64, i64 } { ptr @.str.4721, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t890, ptr %a891
|
|
%t892 = load ptr, ptr %a1
|
|
%t893 = load { ptr, i64, i64 }, ptr %a891
|
|
call void @finch.gen.store(ptr %t892, { ptr, i64, i64 } { ptr @.str.4722, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4723, i64 15, i64 0 }, { ptr, i64, i64 } %t893)
|
|
%t894 = load ptr, ptr %a1
|
|
%t895 = load { ptr, i64, i64 }, ptr %a857
|
|
store { ptr, i64, i64 } { ptr @.str.4724, i64 36, i64 0 }, ptr %a897
|
|
store { ptr, i64, i64 } %t895, ptr %a898
|
|
call void @finch_str_concat(ptr %a896, ptr %a897, ptr %a898)
|
|
%t899 = load { ptr, i64, i64 }, ptr %a896
|
|
store { ptr, i64, i64 } %t899, ptr %a901
|
|
store { ptr, i64, i64 } { ptr @.str.4725, i64 6, i64 0 }, ptr %a902
|
|
call void @finch_str_concat(ptr %a900, ptr %a901, ptr %a902)
|
|
%t903 = load { ptr, i64, i64 }, ptr %a900
|
|
%t904 = load { ptr, i64, i64 }, ptr %a891
|
|
store { ptr, i64, i64 } %t903, ptr %a906
|
|
store { ptr, i64, i64 } %t904, ptr %a907
|
|
call void @finch_str_concat(ptr %a905, ptr %a906, ptr %a907)
|
|
%t908 = load { ptr, i64, i64 }, ptr %a905
|
|
store { ptr, i64, i64 } %t908, ptr %a910
|
|
store { ptr, i64, i64 } { ptr @.str.4726, i64 1, i64 0 }, ptr %a911
|
|
call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911)
|
|
%t912 = load { ptr, i64, i64 }, ptr %a909
|
|
%t913 = call { ptr, i64, i64 } @finch.gen.op(ptr %t894, { ptr, i64, i64 } %t912)
|
|
store { ptr, i64, i64 } %t913, ptr %a914
|
|
%t915 = load ptr, ptr %a1
|
|
%t916 = load { ptr, i64, i64 }, ptr %a914
|
|
store { ptr, i64, i64 } { ptr @.str.4727, i64 12, i64 0 }, ptr %a918
|
|
store { ptr, i64, i64 } %t916, ptr %a919
|
|
call void @finch_str_concat(ptr %a917, ptr %a918, ptr %a919)
|
|
%t920 = load { ptr, i64, i64 }, ptr %a917
|
|
store { ptr, i64, i64 } %t920, ptr %a922
|
|
store { ptr, i64, i64 } { ptr @.str.4728, i64 3, i64 0 }, ptr %a923
|
|
call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923)
|
|
%t924 = load { ptr, i64, i64 }, ptr %a921
|
|
%t925 = call { ptr, i64, i64 } @finch.gen.op(ptr %t915, { ptr, i64, i64 } %t924)
|
|
%t926 = load ptr, ptr %a1
|
|
%t927 = icmp eq ptr %t926, null
|
|
br i1 %t927, label %panic7190, label %ok7191
|
|
panic7190:
|
|
call void @finch_panic(ptr @.str.4729, i64 4281, ptr @.str.4730)
|
|
unreachable
|
|
ok7191:
|
|
%t928 = getelementptr inbounds %S.gen.Gen, ptr %t926, i32 0, i32 38
|
|
store { ptr, i64, i64 } %t925, ptr %t928
|
|
%t929 = load ptr, ptr %a1
|
|
%t930 = load { ptr, i64, i64 }, ptr %a891
|
|
%t931 = call { ptr, i64, i64 } @finch.gen.load(ptr %t929, { ptr, i64, i64 } { ptr @.str.4731, i64 17, i64 0 }, { ptr, i64, i64 } %t930)
|
|
%t932 = load ptr, ptr %a1
|
|
%t933 = icmp eq ptr %t932, null
|
|
br i1 %t933, label %panic7192, label %ok7193
|
|
panic7192:
|
|
call void @finch_panic(ptr @.str.4732, i64 4282, ptr @.str.4733)
|
|
unreachable
|
|
ok7193:
|
|
%t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 39
|
|
store { ptr, i64, i64 } %t931, ptr %t934
|
|
%t935 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4734, i64 4, i64 0 })
|
|
%t936 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t935, 1
|
|
ret %S.gen.Val %t936
|
|
endif7189:
|
|
%t937 = load ptr, ptr %a1
|
|
%t938 = load { ptr, i64, i64 }, ptr %a857
|
|
store { ptr, i64, i64 } { ptr @.str.4735, i64 32, i64 0 }, ptr %a940
|
|
store { ptr, i64, i64 } %t938, ptr %a941
|
|
call void @finch_str_concat(ptr %a939, ptr %a940, ptr %a941)
|
|
%t942 = load { ptr, i64, i64 }, ptr %a939
|
|
store { ptr, i64, i64 } %t942, ptr %a944
|
|
store { ptr, i64, i64 } { ptr @.str.4736, i64 1, i64 0 }, ptr %a945
|
|
call void @finch_str_concat(ptr %a943, ptr %a944, ptr %a945)
|
|
%t946 = load { ptr, i64, i64 }, ptr %a943
|
|
%t947 = call { ptr, i64, i64 } @finch.gen.op(ptr %t937, { ptr, i64, i64 } %t946)
|
|
store { ptr, i64, i64 } %t947, ptr %a948
|
|
%t949 = load ptr, ptr %a1
|
|
%t950 = load { ptr, i64, i64 }, ptr %a948
|
|
store { ptr, i64, i64 } { ptr @.str.4737, i64 12, i64 0 }, ptr %a952
|
|
store { ptr, i64, i64 } %t950, ptr %a953
|
|
call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953)
|
|
%t954 = load { ptr, i64, i64 }, ptr %a951
|
|
store { ptr, i64, i64 } %t954, ptr %a956
|
|
store { ptr, i64, i64 } { ptr @.str.4738, i64 3, i64 0 }, ptr %a957
|
|
call void @finch_str_concat(ptr %a955, ptr %a956, ptr %a957)
|
|
%t958 = load { ptr, i64, i64 }, ptr %a955
|
|
%t959 = call { ptr, i64, i64 } @finch.gen.op(ptr %t949, { ptr, i64, i64 } %t958)
|
|
%t960 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t959, 0
|
|
%t961 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4739, i64 4, i64 0 })
|
|
%t962 = insertvalue %S.gen.Val %t960, %S.ast.Type %t961, 1
|
|
ret %S.gen.Val %t962
|
|
endif7182:
|
|
%t963 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t963, ptr %a964
|
|
store { ptr, i64, i64 } { ptr @.str.4740, i64 5, i64 0 }, ptr %a965
|
|
%t966 = call i32 @finch_str_eq(ptr %a964, ptr %a965)
|
|
%t967 = icmp ne i32 %t966, 0
|
|
br i1 %t967, label %then7194, label %endif7196
|
|
then7194:
|
|
%t968 = load ptr, ptr %a1
|
|
%t969 = load %S.ast.Node, ptr %a2
|
|
%t970 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t968, %S.ast.Node %t969, i64 0, i64 1, { ptr, i64, i64 } %t970)
|
|
%t971 = load ptr, ptr %a1
|
|
%t972 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t973 = load { ptr, i64, i64 }, ptr %t972
|
|
%t974 = extractvalue { ptr, i64, i64 } %t973, 1
|
|
%t975 = icmp uge i64 0, %t974
|
|
br i1 %t975, label %range7197, label %inrange7198
|
|
range7197:
|
|
call void @finch_panic_index(ptr @.str.4741, i64 4290, i64 0, i64 %t974)
|
|
unreachable
|
|
inrange7198:
|
|
%t976 = extractvalue { ptr, i64, i64 } %t973, 0
|
|
%t977 = getelementptr inbounds %S.ast.Node, ptr %t976, i64 0
|
|
%t978 = load %S.ast.Node, ptr %t977
|
|
%t979 = call %S.gen.Val @finch.gen.strArg(ptr %t971, %S.ast.Node %t978, { ptr, i64, i64 } { ptr @.str.4742, i64 11, i64 0 })
|
|
store %S.gen.Val %t979, ptr %a980
|
|
%t981 = load ptr, ptr %a1
|
|
%t982 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t981)
|
|
store { ptr, i64, i64 } %t982, ptr %a983
|
|
%t984 = load ptr, ptr %a1
|
|
%t985 = load { ptr, i64, i64 }, ptr %a983
|
|
store { ptr, i64, i64 } { ptr @.str.4743, i64 30, i64 0 }, ptr %a987
|
|
store { ptr, i64, i64 } %t985, ptr %a988
|
|
call void @finch_str_concat(ptr %a986, ptr %a987, ptr %a988)
|
|
%t989 = load { ptr, i64, i64 }, ptr %a986
|
|
store { ptr, i64, i64 } %t989, ptr %a991
|
|
store { ptr, i64, i64 } { ptr @.str.4744, i64 6, i64 0 }, ptr %a992
|
|
call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992)
|
|
%t993 = load { ptr, i64, i64 }, ptr %a990
|
|
%t994 = load ptr, ptr %a1
|
|
%t995 = load %S.gen.Val, ptr %a980
|
|
%t996 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t994, %S.gen.Val %t995)
|
|
store { ptr, i64, i64 } %t993, ptr %a998
|
|
store { ptr, i64, i64 } %t996, ptr %a999
|
|
call void @finch_str_concat(ptr %a997, ptr %a998, ptr %a999)
|
|
%t1000 = load { ptr, i64, i64 }, ptr %a997
|
|
store { ptr, i64, i64 } %t1000, ptr %a1002
|
|
store { ptr, i64, i64 } { ptr @.str.4745, i64 1, i64 0 }, ptr %a1003
|
|
call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003)
|
|
%t1004 = load { ptr, i64, i64 }, ptr %a1001
|
|
call void @finch.gen.emit(ptr %t984, { ptr, i64, i64 } %t1004)
|
|
%t1005 = load ptr, ptr %a1
|
|
%t1006 = load { ptr, i64, i64 }, ptr %a983
|
|
store { ptr, i64, i64 } { ptr @.str.4746, i64 26, i64 0 }, ptr %a1008
|
|
store { ptr, i64, i64 } %t1006, ptr %a1009
|
|
call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009)
|
|
%t1010 = load { ptr, i64, i64 }, ptr %a1007
|
|
store { ptr, i64, i64 } %t1010, ptr %a1012
|
|
store { ptr, i64, i64 } { ptr @.str.4747, i64 1, i64 0 }, ptr %a1013
|
|
call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013)
|
|
%t1014 = load { ptr, i64, i64 }, ptr %a1011
|
|
%t1015 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1005, { ptr, i64, i64 } %t1014)
|
|
%t1016 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1015, 0
|
|
%t1017 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4748, i64 3, i64 0 })
|
|
%t1018 = insertvalue %S.gen.Val %t1016, %S.ast.Type %t1017, 1
|
|
ret %S.gen.Val %t1018
|
|
endif7196:
|
|
%t1019 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t1019, ptr %a1020
|
|
store { ptr, i64, i64 } { ptr @.str.4749, i64 4, i64 0 }, ptr %a1021
|
|
%t1022 = call i32 @finch_str_eq(ptr %a1020, ptr %a1021)
|
|
%t1023 = icmp ne i32 %t1022, 0
|
|
br i1 %t1023, label %then7199, label %endif7201
|
|
then7199:
|
|
%t1024 = load ptr, ptr %a1
|
|
%t1025 = load %S.ast.Node, ptr %a2
|
|
%t1026 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t1024, %S.ast.Node %t1025, i64 0, i64 1, { ptr, i64, i64 } %t1026)
|
|
%t1027 = load ptr, ptr %a1
|
|
%t1028 = load ptr, ptr %a1
|
|
%t1029 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1030 = load { ptr, i64, i64 }, ptr %t1029
|
|
%t1031 = extractvalue { ptr, i64, i64 } %t1030, 1
|
|
%t1032 = icmp uge i64 0, %t1031
|
|
br i1 %t1032, label %range7202, label %inrange7203
|
|
range7202:
|
|
call void @finch_panic_index(ptr @.str.4750, i64 4297, i64 0, i64 %t1031)
|
|
unreachable
|
|
inrange7203:
|
|
%t1033 = extractvalue { ptr, i64, i64 } %t1030, 0
|
|
%t1034 = getelementptr inbounds %S.ast.Node, ptr %t1033, i64 0
|
|
%t1035 = load %S.ast.Node, ptr %t1034
|
|
%t1036 = call %S.gen.Val @finch.gen.expr(ptr %t1028, %S.ast.Node %t1035)
|
|
%t1037 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4751, i64 3, i64 0 })
|
|
%t1038 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1039 = load { ptr, i64, i64 }, ptr %t1038
|
|
%t1040 = extractvalue { ptr, i64, i64 } %t1039, 1
|
|
%t1041 = icmp uge i64 0, %t1040
|
|
br i1 %t1041, label %range7204, label %inrange7205
|
|
range7204:
|
|
call void @finch_panic_index(ptr @.str.4752, i64 4297, i64 0, i64 %t1040)
|
|
unreachable
|
|
inrange7205:
|
|
%t1042 = extractvalue { ptr, i64, i64 } %t1039, 0
|
|
%t1043 = getelementptr inbounds %S.ast.Node, ptr %t1042, i64 0
|
|
%t1044 = load %S.ast.Node, ptr %t1043
|
|
%t1045 = call %S.gen.Val @finch.gen.coerce(ptr %t1027, %S.gen.Val %t1036, %S.ast.Type %t1037, %S.ast.Node %t1044, { ptr, i64, i64 } { ptr @.str.4753, i64 13, i64 0 })
|
|
store %S.gen.Val %t1045, ptr %a1046
|
|
%t1047 = load ptr, ptr %a1
|
|
%t1048 = getelementptr inbounds %S.gen.Val, ptr %a1046, i32 0, i32 0
|
|
%t1049 = load { ptr, i64, i64 }, ptr %t1048
|
|
store { ptr, i64, i64 } { ptr @.str.4754, i64 10, i64 0 }, ptr %a1051
|
|
store { ptr, i64, i64 } %t1049, ptr %a1052
|
|
call void @finch_str_concat(ptr %a1050, ptr %a1051, ptr %a1052)
|
|
%t1053 = load { ptr, i64, i64 }, ptr %a1050
|
|
store { ptr, i64, i64 } %t1053, ptr %a1055
|
|
store { ptr, i64, i64 } { ptr @.str.4755, i64 7, i64 0 }, ptr %a1056
|
|
call void @finch_str_concat(ptr %a1054, ptr %a1055, ptr %a1056)
|
|
%t1057 = load { ptr, i64, i64 }, ptr %a1054
|
|
%t1058 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1057)
|
|
store { ptr, i64, i64 } %t1058, ptr %a1059
|
|
%t1060 = load ptr, ptr %a1
|
|
%t1061 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1060, { ptr, i64, i64 } { ptr @.str.4756, i64 26, i64 0 })
|
|
store { ptr, i64, i64 } %t1061, ptr %a1062
|
|
%t1063 = load ptr, ptr %a1
|
|
%t1064 = load { ptr, i64, i64 }, ptr %a1059
|
|
store { ptr, i64, i64 } { ptr @.str.4757, i64 20, i64 0 }, ptr %a1066
|
|
store { ptr, i64, i64 } %t1064, ptr %a1067
|
|
call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067)
|
|
%t1068 = load { ptr, i64, i64 }, ptr %a1065
|
|
store { ptr, i64, i64 } %t1068, ptr %a1070
|
|
store { ptr, i64, i64 } { ptr @.str.4758, i64 1, i64 0 }, ptr %a1071
|
|
call void @finch_str_concat(ptr %a1069, ptr %a1070, ptr %a1071)
|
|
%t1072 = load { ptr, i64, i64 }, ptr %a1069
|
|
call void @finch.gen.emit(ptr %t1063, { ptr, i64, i64 } %t1072)
|
|
%t1073 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4759, i64 4, i64 0 })
|
|
%t1074 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1073, 1
|
|
ret %S.gen.Val %t1074
|
|
endif7201:
|
|
%t1075 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t1075, ptr %a1076
|
|
store { ptr, i64, i64 } { ptr @.str.4760, i64 5, i64 0 }, ptr %a1077
|
|
%t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077)
|
|
%t1079 = icmp ne i32 %t1078, 0
|
|
br i1 %t1079, label %then7206, label %endif7208
|
|
then7206:
|
|
%t1080 = load ptr, ptr %a1
|
|
%t1081 = call %S.gen.Val @finch.gen.strConst(ptr %t1080, { ptr, i64, i64 } { ptr @.str.4761, i64 0, i64 0 })
|
|
store %S.gen.Val %t1081, ptr %a1082
|
|
%t1083 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1084 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1083, i32 0, i32 1
|
|
%t1085 = load i64, ptr %t1084
|
|
%t1086 = icmp sgt i64 %t1085, 0
|
|
br i1 %t1086, label %then7209, label %endif7211
|
|
then7209:
|
|
%t1087 = load ptr, ptr %a1
|
|
%t1088 = load %S.ast.Node, ptr %a2
|
|
%t1089 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t1087, %S.ast.Node %t1088, i64 0, i64 1, { ptr, i64, i64 } %t1089)
|
|
%t1090 = load ptr, ptr %a1
|
|
%t1091 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1092 = load { ptr, i64, i64 }, ptr %t1091
|
|
%t1093 = extractvalue { ptr, i64, i64 } %t1092, 1
|
|
%t1094 = icmp uge i64 0, %t1093
|
|
br i1 %t1094, label %range7212, label %inrange7213
|
|
range7212:
|
|
call void @finch_panic_index(ptr @.str.4762, i64 4307, i64 0, i64 %t1093)
|
|
unreachable
|
|
inrange7213:
|
|
%t1095 = extractvalue { ptr, i64, i64 } %t1092, 0
|
|
%t1096 = getelementptr inbounds %S.ast.Node, ptr %t1095, i64 0
|
|
%t1097 = load %S.ast.Node, ptr %t1096
|
|
%t1098 = call %S.gen.Val @finch.gen.strArg(ptr %t1090, %S.ast.Node %t1097, { ptr, i64, i64 } { ptr @.str.4763, i64 12, i64 0 })
|
|
store %S.gen.Val %t1098, ptr %a1082
|
|
br label %endif7211
|
|
endif7211:
|
|
%t1099 = load ptr, ptr %a1
|
|
%t1100 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1099)
|
|
store { ptr, i64, i64 } %t1100, ptr %a1101
|
|
%t1102 = load ptr, ptr %a1
|
|
%t1103 = load { ptr, i64, i64 }, ptr %a1101
|
|
store { ptr, i64, i64 } { ptr @.str.4764, i64 27, i64 0 }, ptr %a1105
|
|
store { ptr, i64, i64 } %t1103, ptr %a1106
|
|
call void @finch_str_concat(ptr %a1104, ptr %a1105, ptr %a1106)
|
|
%t1107 = load { ptr, i64, i64 }, ptr %a1104
|
|
store { ptr, i64, i64 } %t1107, ptr %a1109
|
|
store { ptr, i64, i64 } { ptr @.str.4765, i64 6, i64 0 }, ptr %a1110
|
|
call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110)
|
|
%t1111 = load { ptr, i64, i64 }, ptr %a1108
|
|
%t1112 = load ptr, ptr %a1
|
|
%t1113 = load %S.gen.Val, ptr %a1082
|
|
%t1114 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1112, %S.gen.Val %t1113)
|
|
store { ptr, i64, i64 } %t1111, ptr %a1116
|
|
store { ptr, i64, i64 } %t1114, ptr %a1117
|
|
call void @finch_str_concat(ptr %a1115, ptr %a1116, ptr %a1117)
|
|
%t1118 = load { ptr, i64, i64 }, ptr %a1115
|
|
store { ptr, i64, i64 } %t1118, ptr %a1120
|
|
store { ptr, i64, i64 } { ptr @.str.4766, i64 1, i64 0 }, ptr %a1121
|
|
call void @finch_str_concat(ptr %a1119, ptr %a1120, ptr %a1121)
|
|
%t1122 = load { ptr, i64, i64 }, ptr %a1119
|
|
call void @finch.gen.emit(ptr %t1102, { ptr, i64, i64 } %t1122)
|
|
%t1123 = load ptr, ptr %a1
|
|
%t1124 = load { ptr, i64, i64 }, ptr %a1101
|
|
%t1125 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1123, { ptr, i64, i64 } { ptr @.str.4767, i64 17, i64 0 }, { ptr, i64, i64 } %t1124)
|
|
%t1126 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1125, 0
|
|
%t1127 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4768, i64 3, i64 0 })
|
|
%t1128 = insertvalue %S.gen.Val %t1126, %S.ast.Type %t1127, 1
|
|
%t1129 = insertvalue %S.gen.Val %t1128, i1 true, 2
|
|
ret %S.gen.Val %t1129
|
|
endif7208:
|
|
%t1130 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t1130, ptr %a1131
|
|
store { ptr, i64, i64 } { ptr @.str.4769, i64 3, i64 0 }, ptr %a1132
|
|
%t1133 = call i32 @finch_str_eq(ptr %a1131, ptr %a1132)
|
|
%t1134 = icmp ne i32 %t1133, 0
|
|
br i1 %t1134, label %then7214, label %endif7216
|
|
then7214:
|
|
%t1135 = load ptr, ptr %a1
|
|
%t1136 = load %S.ast.Node, ptr %a2
|
|
%t1137 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t1135, %S.ast.Node %t1136, i64 0, i64 1, { ptr, i64, i64 } %t1137)
|
|
%t1138 = load ptr, ptr %a1
|
|
%t1139 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1140 = load { ptr, i64, i64 }, ptr %t1139
|
|
%t1141 = extractvalue { ptr, i64, i64 } %t1140, 1
|
|
%t1142 = icmp uge i64 0, %t1141
|
|
br i1 %t1142, label %range7217, label %inrange7218
|
|
range7217:
|
|
call void @finch_panic_index(ptr @.str.4770, i64 4315, i64 0, i64 %t1141)
|
|
unreachable
|
|
inrange7218:
|
|
%t1143 = extractvalue { ptr, i64, i64 } %t1140, 0
|
|
%t1144 = getelementptr inbounds %S.ast.Node, ptr %t1143, i64 0
|
|
%t1145 = load %S.ast.Node, ptr %t1144
|
|
%t1146 = call %S.gen.Val @finch.gen.expr(ptr %t1138, %S.ast.Node %t1145)
|
|
store %S.gen.Val %t1146, ptr %a1147
|
|
%t1148 = load ptr, ptr %a1
|
|
%t1149 = load ptr, ptr %a1
|
|
%t1150 = getelementptr inbounds %S.gen.Val, ptr %a1147, i32 0, i32 1
|
|
%t1151 = load %S.ast.Type, ptr %t1150
|
|
%t1152 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1149, %S.ast.Type %t1151)
|
|
store { ptr, i64, i64 } { ptr @.str.4771, i64 26, i64 0 }, ptr %a1154
|
|
store { ptr, i64, i64 } %t1152, ptr %a1155
|
|
call void @finch_str_concat(ptr %a1153, ptr %a1154, ptr %a1155)
|
|
%t1156 = load { ptr, i64, i64 }, ptr %a1153
|
|
store { ptr, i64, i64 } %t1156, ptr %a1158
|
|
store { ptr, i64, i64 } { ptr @.str.4772, i64 1, i64 0 }, ptr %a1159
|
|
call void @finch_str_concat(ptr %a1157, ptr %a1158, ptr %a1159)
|
|
%t1160 = load { ptr, i64, i64 }, ptr %a1157
|
|
%t1161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1148, { ptr, i64, i64 } %t1160)
|
|
store { ptr, i64, i64 } %t1161, ptr %a1162
|
|
%t1163 = load ptr, ptr %a1
|
|
%t1164 = load ptr, ptr %a1
|
|
%t1165 = getelementptr inbounds %S.gen.Val, ptr %a1147, i32 0, i32 1
|
|
%t1166 = load %S.ast.Type, ptr %t1165
|
|
%t1167 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1164, %S.ast.Type %t1166)
|
|
%t1168 = load ptr, ptr %a1
|
|
%t1169 = load %S.gen.Val, ptr %a1147
|
|
%t1170 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1168, %S.gen.Val %t1169)
|
|
%t1171 = load { ptr, i64, i64 }, ptr %a1162
|
|
call void @finch.gen.store(ptr %t1163, { ptr, i64, i64 } %t1167, { ptr, i64, i64 } %t1170, { ptr, i64, i64 } %t1171)
|
|
%t1172 = load { ptr, i64, i64 }, ptr %a1162
|
|
store { ptr, i64, i64 } %t1172, ptr %a1173
|
|
call void @finch_str_copy(ptr %a1174, ptr %a1173)
|
|
%t1175 = load { ptr, i64, i64 }, ptr %a1174
|
|
%t1176 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1175, 0
|
|
%t1177 = getelementptr inbounds %S.gen.Val, ptr %a1147, i32 0, i32 1
|
|
%t1178 = load %S.ast.Type, ptr %t1177
|
|
%t1179 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1178)
|
|
%t1180 = insertvalue %S.gen.Val %t1176, %S.ast.Type %t1179, 1
|
|
ret %S.gen.Val %t1180
|
|
endif7216:
|
|
%t1181 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t1181, ptr %a1182
|
|
store { ptr, i64, i64 } { ptr @.str.4773, i64 4, i64 0 }, ptr %a1183
|
|
%t1184 = call i32 @finch_str_eq(ptr %a1182, ptr %a1183)
|
|
%t1185 = icmp ne i32 %t1184, 0
|
|
br i1 %t1185, label %then7219, label %endif7221
|
|
then7219:
|
|
%t1186 = load ptr, ptr %a1
|
|
%t1187 = load %S.ast.Node, ptr %a2
|
|
%t1188 = load { ptr, i64, i64 }, ptr %a8
|
|
call void @finch.gen.checkArgs(ptr %t1186, %S.ast.Node %t1187, i64 0, i64 1, { ptr, i64, i64 } %t1188)
|
|
%t1189 = load ptr, ptr %a1
|
|
%t1190 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1191 = load { ptr, i64, i64 }, ptr %t1190
|
|
%t1192 = extractvalue { ptr, i64, i64 } %t1191, 1
|
|
%t1193 = icmp uge i64 0, %t1192
|
|
br i1 %t1193, label %range7222, label %inrange7223
|
|
range7222:
|
|
call void @finch_panic_index(ptr @.str.4774, i64 4322, i64 0, i64 %t1192)
|
|
unreachable
|
|
inrange7223:
|
|
%t1194 = extractvalue { ptr, i64, i64 } %t1191, 0
|
|
%t1195 = getelementptr inbounds %S.ast.Node, ptr %t1194, i64 0
|
|
%t1196 = load %S.ast.Node, ptr %t1195
|
|
%t1197 = call %S.gen.Val @finch.gen.expr(ptr %t1189, %S.ast.Node %t1196)
|
|
store %S.gen.Val %t1197, ptr %a1198
|
|
%t1199 = getelementptr inbounds %S.gen.Val, ptr %a1198, i32 0, i32 1
|
|
%t1200 = getelementptr inbounds %S.ast.Type, ptr %t1199, i32 0, i32 0
|
|
%t1201 = load { ptr, i64, i64 }, ptr %t1200
|
|
store { ptr, i64, i64 } %t1201, ptr %a1202
|
|
store { ptr, i64, i64 } { ptr @.str.4775, i64 3, i64 0 }, ptr %a1203
|
|
%t1204 = call i32 @finch_str_eq(ptr %a1202, ptr %a1203)
|
|
%t1205 = icmp eq i32 %t1204, 0
|
|
br i1 %t1205, label %then7224, label %endif7226
|
|
then7224:
|
|
%t1206 = load ptr, ptr %a1
|
|
%t1207 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1208 = load { ptr, i64, i64 }, ptr %t1207
|
|
%t1209 = extractvalue { ptr, i64, i64 } %t1208, 1
|
|
%t1210 = icmp uge i64 0, %t1209
|
|
br i1 %t1210, label %range7227, label %inrange7228
|
|
range7227:
|
|
call void @finch_panic_index(ptr @.str.4776, i64 4324, i64 0, i64 %t1209)
|
|
unreachable
|
|
inrange7228:
|
|
%t1211 = extractvalue { ptr, i64, i64 } %t1208, 0
|
|
%t1212 = getelementptr inbounds %S.ast.Node, ptr %t1211, i64 0
|
|
%t1213 = load %S.ast.Node, ptr %t1212
|
|
call void @finch.gen.fail(ptr %t1206, %S.ast.Node %t1213, { ptr, i64, i64 } { ptr @.str.4777, i64 119, i64 0 })
|
|
br label %endif7226
|
|
endif7226:
|
|
%t1214 = load ptr, ptr %a1
|
|
%t1215 = getelementptr inbounds %S.gen.Val, ptr %a1198, i32 0, i32 0
|
|
%t1216 = load { ptr, i64, i64 }, ptr %t1215
|
|
store { ptr, i64, i64 } { ptr @.str.4778, i64 20, i64 0 }, ptr %a1218
|
|
store { ptr, i64, i64 } %t1216, ptr %a1219
|
|
call void @finch_str_concat(ptr %a1217, ptr %a1218, ptr %a1219)
|
|
%t1220 = load { ptr, i64, i64 }, ptr %a1217
|
|
store { ptr, i64, i64 } %t1220, ptr %a1222
|
|
store { ptr, i64, i64 } { ptr @.str.4779, i64 1, i64 0 }, ptr %a1223
|
|
call void @finch_str_concat(ptr %a1221, ptr %a1222, ptr %a1223)
|
|
%t1224 = load { ptr, i64, i64 }, ptr %a1221
|
|
call void @finch.gen.emit(ptr %t1214, { ptr, i64, i64 } %t1224)
|
|
%t1225 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4780, i64 4, i64 0 })
|
|
%t1226 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1225, 1
|
|
ret %S.gen.Val %t1226
|
|
endif7221:
|
|
%t1227 = load ptr, ptr %a1
|
|
%t1228 = load ptr, ptr %a1
|
|
%t1229 = icmp eq ptr %t1228, null
|
|
br i1 %t1229, label %panic7229, label %ok7230
|
|
panic7229:
|
|
call void @finch_panic(ptr @.str.4781, i64 4329, ptr @.str.4782)
|
|
unreachable
|
|
ok7230:
|
|
%t1230 = getelementptr inbounds %S.gen.Gen, ptr %t1228, i32 0, i32 13
|
|
%t1231 = load { ptr, i64, i64 }, ptr %t1230
|
|
%t1232 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1233 = call i64 @finch.gen.findFn(ptr %t1227, { ptr, i64, i64 } %t1231, { ptr, i64, i64 } %t1232)
|
|
store i64 %t1233, ptr %a1234
|
|
%t1235 = load i64, ptr %a1234
|
|
%t1236 = icmp sge i64 %t1235, 0
|
|
br i1 %t1236, label %then7231, label %endif7233
|
|
then7231:
|
|
%t1237 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5
|
|
%t1238 = getelementptr inbounds %S.ast.Type, ptr %t1237, i32 0, i32 1
|
|
%t1239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1238, i32 0, i32 1
|
|
%t1240 = load i64, ptr %t1239
|
|
%t1241 = icmp sgt i64 %t1240, 0
|
|
br i1 %t1241, label %then7234, label %endif7236
|
|
then7234:
|
|
%t1242 = load ptr, ptr %a1
|
|
%t1243 = load %S.ast.Node, ptr %a2
|
|
%t1244 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.4783, i64 1, i64 0 }, ptr %a1246
|
|
store { ptr, i64, i64 } %t1244, ptr %a1247
|
|
call void @finch_str_concat(ptr %a1245, ptr %a1246, ptr %a1247)
|
|
%t1248 = load { ptr, i64, i64 }, ptr %a1245
|
|
store { ptr, i64, i64 } %t1248, ptr %a1250
|
|
store { ptr, i64, i64 } { ptr @.str.4784, i64 47, i64 0 }, ptr %a1251
|
|
call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251)
|
|
%t1252 = load { ptr, i64, i64 }, ptr %a1249
|
|
call void @finch.gen.fail(ptr %t1242, %S.ast.Node %t1243, { ptr, i64, i64 } %t1252)
|
|
br label %endif7236
|
|
endif7236:
|
|
%t1253 = load ptr, ptr %a1
|
|
%t1254 = load i64, ptr %a1234
|
|
%t1255 = load %S.ast.Node, ptr %a2
|
|
%t1256 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1257 = call %S.gen.Val @finch.gen.callFn(ptr %t1253, i64 %t1254, %S.ast.Node %t1255, i64 0, { ptr, i64, i64 } %t1256, { ptr, i64, i64 } { ptr @.str.4785, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.4786, i64 0, i64 0 })
|
|
ret %S.gen.Val %t1257
|
|
endif7233:
|
|
%t1258 = load ptr, ptr %a1
|
|
%t1259 = load ptr, ptr %a1
|
|
%t1260 = icmp eq ptr %t1259, null
|
|
br i1 %t1260, label %panic7237, label %ok7238
|
|
panic7237:
|
|
call void @finch_panic(ptr @.str.4787, i64 4336, ptr @.str.4788)
|
|
unreachable
|
|
ok7238:
|
|
%t1261 = getelementptr inbounds %S.gen.Gen, ptr %t1259, i32 0, i32 13
|
|
%t1262 = load { ptr, i64, i64 }, ptr %t1261
|
|
%t1263 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1264 = call i64 @finch.gen.findTemplate(ptr %t1258, { ptr, i64, i64 } %t1262, { ptr, i64, i64 } %t1263, { ptr, i64, i64 } { ptr @.str.4789, i64 0, i64 0 }, i1 false)
|
|
store i64 %t1264, ptr %a1265
|
|
%t1266 = load i64, ptr %a1265
|
|
%t1267 = icmp sge i64 %t1266, 0
|
|
br i1 %t1267, label %then7239, label %endif7241
|
|
then7239:
|
|
%t1268 = load ptr, ptr %a1
|
|
%t1269 = load %S.ast.Node, ptr %a2
|
|
%t1270 = load i64, ptr %a1265
|
|
%t1271 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1272 = call %S.gen.Val @finch.gen.genericCall(ptr %t1268, %S.ast.Node %t1269, i64 %t1270, i64 0, { ptr, i64, i64 } %t1271)
|
|
ret %S.gen.Val %t1272
|
|
endif7241:
|
|
%t1273 = load ptr, ptr %a1
|
|
%t1274 = load ptr, ptr %a1
|
|
%t1275 = icmp eq ptr %t1274, null
|
|
br i1 %t1275, label %panic7242, label %ok7243
|
|
panic7242:
|
|
call void @finch_panic(ptr @.str.4790, i64 4340, ptr @.str.4791)
|
|
unreachable
|
|
ok7243:
|
|
%t1276 = getelementptr inbounds %S.gen.Gen, ptr %t1274, i32 0, i32 13
|
|
%t1277 = load { ptr, i64, i64 }, ptr %t1276
|
|
%t1278 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1279 = call i64 @finch.gen.findTemplate(ptr %t1273, { ptr, i64, i64 } %t1277, { ptr, i64, i64 } %t1278, { ptr, i64, i64 } { ptr @.str.4792, i64 0, i64 0 }, i1 true)
|
|
%t1280 = icmp sge i64 %t1279, 0
|
|
br i1 %t1280, label %then7244, label %endif7246
|
|
then7244:
|
|
%t1281 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5
|
|
%t1282 = getelementptr inbounds %S.ast.Type, ptr %t1281, i32 0, i32 1
|
|
%t1283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1282, i32 0, i32 1
|
|
%t1284 = load i64, ptr %t1283
|
|
%t1285 = icmp eq i64 %t1284, 0
|
|
br i1 %t1285, label %then7247, label %endif7249
|
|
then7247:
|
|
%t1286 = load ptr, ptr %a1
|
|
%t1287 = load %S.ast.Node, ptr %a2
|
|
%t1288 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.4793, i64 1, i64 0 }, ptr %a1290
|
|
store { ptr, i64, i64 } %t1288, ptr %a1291
|
|
call void @finch_str_concat(ptr %a1289, ptr %a1290, ptr %a1291)
|
|
%t1292 = load { ptr, i64, i64 }, ptr %a1289
|
|
store { ptr, i64, i64 } %t1292, ptr %a1294
|
|
store { ptr, i64, i64 } { ptr @.str.4794, i64 42, i64 0 }, ptr %a1295
|
|
call void @finch_str_concat(ptr %a1293, ptr %a1294, ptr %a1295)
|
|
%t1296 = load { ptr, i64, i64 }, ptr %a1293
|
|
%t1297 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t1296, ptr %a1299
|
|
store { ptr, i64, i64 } %t1297, ptr %a1300
|
|
call void @finch_str_concat(ptr %a1298, ptr %a1299, ptr %a1300)
|
|
%t1301 = load { ptr, i64, i64 }, ptr %a1298
|
|
store { ptr, i64, i64 } %t1301, ptr %a1303
|
|
store { ptr, i64, i64 } { ptr @.str.4795, i64 10, i64 0 }, ptr %a1304
|
|
call void @finch_str_concat(ptr %a1302, ptr %a1303, ptr %a1304)
|
|
%t1305 = load { ptr, i64, i64 }, ptr %a1302
|
|
call void @finch.gen.fail(ptr %t1286, %S.ast.Node %t1287, { ptr, i64, i64 } %t1305)
|
|
br label %endif7249
|
|
endif7249:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a1306
|
|
%t1307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5
|
|
%t1308 = getelementptr inbounds %S.ast.Type, ptr %t1307, i32 0, i32 1
|
|
store i64 0, ptr %a1309
|
|
br label %each.cond7250
|
|
each.cond7250:
|
|
%t1310 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1308, i32 0, i32 1
|
|
%t1311 = load i64, ptr %t1310
|
|
%t1312 = load i64, ptr %a1309
|
|
%t1313 = icmp slt i64 %t1312, %t1311
|
|
br i1 %t1313, label %each.body7251, label %each.end7253
|
|
each.body7251:
|
|
%t1314 = load ptr, ptr %t1308
|
|
%t1315 = getelementptr inbounds %S.ast.Type, ptr %t1314, i64 %t1312
|
|
%t1316 = load %S.ast.Type, ptr %t1315
|
|
store %S.ast.Type %t1316, ptr %a1317
|
|
%t1318 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1306, i32 0, i32 1
|
|
%t1319 = load ptr, ptr %a1
|
|
%t1320 = load %S.ast.Type, ptr %a1317
|
|
%t1321 = load %S.ast.Node, ptr %a2
|
|
%t1322 = call %S.ast.Type @finch.gen.resolve(ptr %t1319, %S.ast.Type %t1320, %S.ast.Node %t1321)
|
|
%t1323 = load i64, ptr %t1318
|
|
%t1324 = add i64 %t1323, 1
|
|
call void @finch_arr_reserve(ptr %a1306, i64 %t1324, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t1325 = load ptr, ptr %a1306
|
|
%t1326 = getelementptr inbounds %S.ast.Type, ptr %t1325, i64 %t1323
|
|
store %S.ast.Type %t1322, ptr %t1326
|
|
store i64 %t1324, ptr %t1318
|
|
br label %each.step7252
|
|
each.step7252:
|
|
%t1327 = load i64, ptr %a1309
|
|
%t1328 = add i64 %t1327, 1
|
|
store i64 %t1328, ptr %a1309
|
|
br label %each.cond7250
|
|
each.end7253:
|
|
%t1329 = load ptr, ptr %a1
|
|
%t1330 = load ptr, ptr %a1
|
|
%t1331 = icmp eq ptr %t1330, null
|
|
br i1 %t1331, label %panic7254, label %ok7255
|
|
panic7254:
|
|
call void @finch_panic(ptr @.str.4796, i64 4349, ptr @.str.4797)
|
|
unreachable
|
|
ok7255:
|
|
%t1332 = getelementptr inbounds %S.gen.Gen, ptr %t1330, i32 0, i32 13
|
|
%t1333 = load { ptr, i64, i64 }, ptr %t1332
|
|
%t1334 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1335 = load { ptr, i64, i64 }, ptr %a1306
|
|
%t1336 = load %S.ast.Node, ptr %a2
|
|
%t1337 = call %S.ast.Type @finch.gen.instStruct(ptr %t1329, { ptr, i64, i64 } %t1333, { ptr, i64, i64 } %t1334, { ptr, i64, i64 } %t1335, %S.ast.Node %t1336)
|
|
store %S.ast.Type %t1337, ptr %a1338
|
|
%t1339 = load ptr, ptr %a1
|
|
%t1340 = load ptr, ptr %a1
|
|
%t1341 = getelementptr inbounds %S.ast.Type, ptr %a1338, i32 0, i32 3
|
|
%t1342 = load { ptr, i64, i64 }, ptr %t1341
|
|
%t1343 = getelementptr inbounds %S.ast.Type, ptr %a1338, i32 0, i32 2
|
|
%t1344 = load { ptr, i64, i64 }, ptr %t1343
|
|
%t1345 = call i64 @finch.gen.findStruct(ptr %t1340, { ptr, i64, i64 } %t1342, { ptr, i64, i64 } %t1344)
|
|
%t1346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1347 = load { ptr, i64, i64 }, ptr %t1346
|
|
%t1348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10
|
|
%t1349 = load { ptr, i64, i64 }, ptr %t1348
|
|
%t1350 = load %S.ast.Node, ptr %a2
|
|
%t1351 = call %S.gen.Val @finch.gen.construct(ptr %t1339, i64 %t1345, { ptr, i64, i64 } %t1347, { ptr, i64, i64 } %t1349, %S.ast.Node %t1350)
|
|
ret %S.gen.Val %t1351
|
|
endif7246:
|
|
%t1352 = load ptr, ptr %a1
|
|
%t1353 = load ptr, ptr %a1
|
|
%t1354 = icmp eq ptr %t1353, null
|
|
br i1 %t1354, label %panic7256, label %ok7257
|
|
panic7256:
|
|
call void @finch_panic(ptr @.str.4798, i64 4352, ptr @.str.4799)
|
|
unreachable
|
|
ok7257:
|
|
%t1355 = getelementptr inbounds %S.gen.Gen, ptr %t1353, i32 0, i32 13
|
|
%t1356 = load { ptr, i64, i64 }, ptr %t1355
|
|
%t1357 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1358 = call i64 @finch.gen.findStruct(ptr %t1352, { ptr, i64, i64 } %t1356, { ptr, i64, i64 } %t1357)
|
|
store i64 %t1358, ptr %a1359
|
|
%t1360 = load i64, ptr %a1359
|
|
%t1361 = icmp sge i64 %t1360, 0
|
|
br i1 %t1361, label %then7258, label %endif7260
|
|
then7258:
|
|
%t1362 = load ptr, ptr %a1
|
|
%t1363 = load i64, ptr %a1359
|
|
%t1364 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1365 = load { ptr, i64, i64 }, ptr %t1364
|
|
%t1366 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10
|
|
%t1367 = load { ptr, i64, i64 }, ptr %t1366
|
|
%t1368 = load %S.ast.Node, ptr %a2
|
|
%t1369 = call %S.gen.Val @finch.gen.construct(ptr %t1362, i64 %t1363, { ptr, i64, i64 } %t1365, { ptr, i64, i64 } %t1367, %S.ast.Node %t1368)
|
|
ret %S.gen.Val %t1369
|
|
endif7260:
|
|
%t1370 = load ptr, ptr %a1
|
|
%t1371 = load ptr, ptr %a1
|
|
%t1372 = icmp eq ptr %t1371, null
|
|
br i1 %t1372, label %panic7261, label %ok7262
|
|
panic7261:
|
|
call void @finch_panic(ptr @.str.4800, i64 4356, ptr @.str.4801)
|
|
unreachable
|
|
ok7262:
|
|
%t1373 = getelementptr inbounds %S.gen.Gen, ptr %t1371, i32 0, i32 13
|
|
%t1374 = load { ptr, i64, i64 }, ptr %t1373
|
|
%t1375 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1376 = call i64 @finch.gen.findEnum(ptr %t1370, { ptr, i64, i64 } %t1374, { ptr, i64, i64 } %t1375)
|
|
store i64 %t1376, ptr %a1377
|
|
%t1378 = load i64, ptr %a1377
|
|
%t1379 = icmp sge i64 %t1378, 0
|
|
br i1 %t1379, label %then7263, label %endif7265
|
|
then7263:
|
|
%t1380 = load ptr, ptr %a1
|
|
%t1381 = load %S.ast.Node, ptr %a2
|
|
%t1382 = load i64, ptr %a1377
|
|
%t1383 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1380, %S.ast.Node %t1381, i64 %t1382)
|
|
ret %S.gen.Val %t1383
|
|
endif7265:
|
|
%t1384 = load ptr, ptr %a1
|
|
%t1385 = icmp eq ptr %t1384, null
|
|
br i1 %t1385, label %panic7266, label %ok7267
|
|
panic7266:
|
|
call void @finch_panic(ptr @.str.4802, i64 4360, ptr @.str.4803)
|
|
unreachable
|
|
ok7267:
|
|
%t1386 = getelementptr inbounds %S.gen.Gen, ptr %t1384, i32 0, i32 24
|
|
%t1387 = getelementptr inbounds %S.cimport.CImports, ptr %t1386, i32 0, i32 0
|
|
%t1388 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t1388, ptr %a1389
|
|
%t1390 = call i64 @finch_map_find(ptr %t1387, ptr %a1389, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t1391 = icmp sge i64 %t1390, 0
|
|
br i1 %t1391, label %then7268, label %endif7270
|
|
then7268:
|
|
%t1392 = load ptr, ptr %a1
|
|
%t1393 = load %S.ast.Node, ptr %a2
|
|
%t1394 = load ptr, ptr %a1
|
|
%t1395 = icmp eq ptr %t1394, null
|
|
br i1 %t1395, label %panic7271, label %ok7272
|
|
panic7271:
|
|
call void @finch_panic(ptr @.str.4804, i64 4361, ptr @.str.4805)
|
|
unreachable
|
|
ok7272:
|
|
%t1396 = getelementptr inbounds %S.gen.Gen, ptr %t1394, i32 0, i32 24
|
|
%t1397 = getelementptr inbounds %S.cimport.CImports, ptr %t1396, i32 0, i32 0
|
|
%t1398 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t1398, ptr %a1399
|
|
%t1400 = call i64 @finch_map_find(ptr %t1397, ptr %a1399, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t1401 = icmp slt i64 %t1400, 0
|
|
br i1 %t1401, label %map.missing7273, label %map.found7274
|
|
map.missing7273:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a1402
|
|
store { ptr, i64, i64 } %t1398, ptr %a1403
|
|
call void @finch_buf_str(ptr %a1402, ptr %a1403, i32 1)
|
|
call void @finch_map_missing(ptr @.str.4806, i64 4361, ptr %a1402)
|
|
unreachable
|
|
map.found7274:
|
|
%t1404 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1397, i32 0, i32 0
|
|
%t1405 = load ptr, ptr %t1404
|
|
%t1406 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1405, i64 %t1400
|
|
%t1407 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1406, i32 0, i32 2
|
|
%t1408 = load %S.cimport.CFunc, ptr %t1407
|
|
%t1409 = call %S.gen.Val @finch.gen.callC(ptr %t1392, %S.ast.Node %t1393, %S.cimport.CFunc %t1408)
|
|
ret %S.gen.Val %t1409
|
|
endif7270:
|
|
%t1410 = load ptr, ptr %a1
|
|
%t1411 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1412 = call i64 @finch.gen.findStruct(ptr %t1410, { ptr, i64, i64 } { ptr @.str.4807, i64 1, i64 0 }, { ptr, i64, i64 } %t1411)
|
|
store i64 %t1412, ptr %a1359
|
|
%t1413 = load i64, ptr %a1359
|
|
%t1414 = icmp sge i64 %t1413, 0
|
|
br i1 %t1414, label %then7275, label %endif7277
|
|
then7275:
|
|
%t1415 = load ptr, ptr %a1
|
|
%t1416 = load i64, ptr %a1359
|
|
%t1417 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1418 = load { ptr, i64, i64 }, ptr %t1417
|
|
%t1419 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10
|
|
%t1420 = load { ptr, i64, i64 }, ptr %t1419
|
|
%t1421 = load %S.ast.Node, ptr %a2
|
|
%t1422 = call %S.gen.Val @finch.gen.construct(ptr %t1415, i64 %t1416, { ptr, i64, i64 } %t1418, { ptr, i64, i64 } %t1420, %S.ast.Node %t1421)
|
|
ret %S.gen.Val %t1422
|
|
endif7277:
|
|
%t1423 = load ptr, ptr %a1
|
|
%t1424 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1425 = call i64 @finch.gen.lookup(ptr %t1423, { ptr, i64, i64 } %t1424)
|
|
%t1426 = icmp sge i64 %t1425, 0
|
|
br i1 %t1426, label %then7278, label %endif7280
|
|
then7278:
|
|
%t1427 = load ptr, ptr %a1
|
|
%t1428 = load %S.ast.Node, ptr %a2
|
|
%t1429 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.4808, i64 1, i64 0 }, ptr %a1431
|
|
store { ptr, i64, i64 } %t1429, ptr %a1432
|
|
call void @finch_str_concat(ptr %a1430, ptr %a1431, ptr %a1432)
|
|
%t1433 = load { ptr, i64, i64 }, ptr %a1430
|
|
store { ptr, i64, i64 } %t1433, ptr %a1435
|
|
store { ptr, i64, i64 } { ptr @.str.4809, i64 31, i64 0 }, ptr %a1436
|
|
call void @finch_str_concat(ptr %a1434, ptr %a1435, ptr %a1436)
|
|
%t1437 = load { ptr, i64, i64 }, ptr %a1434
|
|
call void @finch.gen.fail(ptr %t1427, %S.ast.Node %t1428, { ptr, i64, i64 } %t1437)
|
|
br label %endif7280
|
|
endif7280:
|
|
%t1438 = load ptr, ptr %a1
|
|
%t1439 = load %S.ast.Node, ptr %a2
|
|
%t1440 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.4810, i64 28, i64 0 }, ptr %a1442
|
|
store { ptr, i64, i64 } %t1440, ptr %a1443
|
|
call void @finch_str_concat(ptr %a1441, ptr %a1442, ptr %a1443)
|
|
%t1444 = load { ptr, i64, i64 }, ptr %a1441
|
|
store { ptr, i64, i64 } %t1444, ptr %a1446
|
|
store { ptr, i64, i64 } { ptr @.str.4811, i64 1, i64 0 }, ptr %a1447
|
|
call void @finch_str_concat(ptr %a1445, ptr %a1446, ptr %a1447)
|
|
%t1448 = load { ptr, i64, i64 }, ptr %a1445
|
|
%t1449 = load { ptr, i64, i64 }, ptr %a8
|
|
%t1450 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1449)
|
|
store { ptr, i64, i64 } %t1448, ptr %a1452
|
|
store { ptr, i64, i64 } %t1450, ptr %a1453
|
|
call void @finch_str_concat(ptr %a1451, ptr %a1452, ptr %a1453)
|
|
%t1454 = load { ptr, i64, i64 }, ptr %a1451
|
|
call void @finch.gen.fail(ptr %t1438, %S.ast.Node %t1439, { ptr, i64, i64 } %t1454)
|
|
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
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca i64, align 16
|
|
%a73 = alloca %S.ast.Node, align 16
|
|
%a74 = alloca %S.ast.Node, align 16
|
|
%a76 = alloca %S.ast.Node, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca %S.gen.Val, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca %S.ast.Type, align 16
|
|
%a152 = alloca %S.ast.Type, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
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 %panic7281, label %ok7282
|
|
panic7281:
|
|
call void @finch_panic(ptr @.str.4812, i64 4375, ptr @.str.4813)
|
|
unreachable
|
|
ok7282:
|
|
%t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 14
|
|
%t11 = load i64, ptr %a2
|
|
%t12 = load { ptr, i64, i64 }, ptr %t10
|
|
%t13 = extractvalue { ptr, i64, i64 } %t12, 1
|
|
%t14 = icmp uge i64 %t11, %t13
|
|
br i1 %t14, label %range7283, label %inrange7284
|
|
range7283:
|
|
call void @finch_panic_index(ptr @.str.4814, i64 4375, i64 %t11, i64 %t13)
|
|
unreachable
|
|
inrange7284:
|
|
%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.from7285
|
|
logic.from7285:
|
|
br i1 %t25, label %logic.rhs7286, label %logic.end7287
|
|
logic.rhs7286:
|
|
%t26 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 1
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
store { ptr, i64, i64 } { ptr @.str.4815, i64 4, i64 0 }, ptr %a29
|
|
%t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29)
|
|
%t31 = icmp ne i32 %t30, 0
|
|
br label %logic.rend7288
|
|
logic.rend7288:
|
|
br label %logic.end7287
|
|
logic.end7287:
|
|
%t32 = phi i1 [ false, %logic.from7285 ], [ %t31, %logic.rend7288 ]
|
|
br i1 %t32, label %then7289, label %endif7291
|
|
then7289:
|
|
%t33 = load ptr, ptr %a1
|
|
%t34 = load %S.ast.Node, ptr %a3
|
|
call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } { ptr @.str.4816, i64 52, i64 0 })
|
|
br label %endif7291
|
|
endif7291:
|
|
%t35 = load ptr, ptr %a1
|
|
%t36 = load %S.ast.Node, ptr %a3
|
|
%t37 = load i64, ptr %a4
|
|
%t38 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13
|
|
%t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1
|
|
%t40 = load i64, ptr %t39
|
|
%t41 = load { ptr, i64, i64 }, ptr %a5
|
|
call void @finch.gen.checkArgs(ptr %t35, %S.ast.Node %t36, i64 %t37, i64 %t40, { ptr, i64, i64 } %t41)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a42
|
|
%t43 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 2
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1
|
|
%t45 = load i64, ptr %t44
|
|
%t46 = icmp sgt i64 %t45, 0
|
|
br i1 %t46, label %then7292, label %endif7294
|
|
then7292:
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a42, i32 0, i32 1
|
|
%t48 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.4817, i64 4, i64 0 }, ptr %a50
|
|
store { ptr, i64, i64 } %t48, ptr %a51
|
|
call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51)
|
|
%t52 = load { ptr, i64, i64 }, ptr %a49
|
|
%t53 = load i64, ptr %t47
|
|
%t54 = add i64 %t53, 1
|
|
call void @finch_arr_reserve(ptr %a42, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t55 = load ptr, ptr %a42
|
|
%t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53
|
|
store { ptr, i64, i64 } %t52, ptr %t56
|
|
store i64 %t54, ptr %t47
|
|
br label %endif7294
|
|
endif7294:
|
|
%t57 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13
|
|
%t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1
|
|
%t59 = load i64, ptr %t58
|
|
store i64 0, ptr %a60
|
|
br label %for.cond7295
|
|
for.cond7295:
|
|
%t61 = load i64, ptr %a60
|
|
%t62 = icmp slt i64 %t61, %t59
|
|
br i1 %t62, label %for.body7296, label %for.end7298
|
|
for.body7296:
|
|
%t63 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9
|
|
%t64 = load i64, ptr %a4
|
|
%t65 = load i64, ptr %a60
|
|
%t66 = add i64 %t64, %t65
|
|
%t67 = load { ptr, i64, i64 }, ptr %t63
|
|
%t68 = extractvalue { ptr, i64, i64 } %t67, 1
|
|
%t69 = icmp uge i64 %t66, %t68
|
|
br i1 %t69, label %range7299, label %inrange7300
|
|
range7299:
|
|
call void @finch_panic_index(ptr @.str.4818, i64 4385, i64 %t66, i64 %t68)
|
|
unreachable
|
|
inrange7300:
|
|
%t70 = extractvalue { ptr, i64, i64 } %t67, 0
|
|
%t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 %t66
|
|
%t72 = load %S.ast.Node, ptr %t71
|
|
store %S.ast.Node %t72, ptr %a73
|
|
call void @finch.copy.S_ast_Node(ptr %a74, ptr %a73)
|
|
%t75 = load %S.ast.Node, ptr %a74
|
|
store %S.ast.Node %t75, ptr %a76
|
|
%t77 = load ptr, ptr %a1
|
|
%t78 = load ptr, ptr %a1
|
|
%t79 = load %S.ast.Node, ptr %a76
|
|
%t80 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13
|
|
%t81 = load i64, ptr %a60
|
|
%t82 = load { ptr, i64, i64 }, ptr %t80
|
|
%t83 = extractvalue { ptr, i64, i64 } %t82, 1
|
|
%t84 = icmp uge i64 %t81, %t83
|
|
br i1 %t84, label %range7301, label %inrange7302
|
|
range7301:
|
|
call void @finch_panic_index(ptr @.str.4819, i64 4386, i64 %t81, i64 %t83)
|
|
unreachable
|
|
inrange7302:
|
|
%t85 = extractvalue { ptr, i64, i64 } %t82, 0
|
|
%t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 %t81
|
|
%t87 = load %S.ast.Type, ptr %t86
|
|
%t88 = call %S.gen.Val @finch.gen.exprWant(ptr %t78, %S.ast.Node %t79, %S.ast.Type %t87)
|
|
%t89 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13
|
|
%t90 = load i64, ptr %a60
|
|
%t91 = load { ptr, i64, i64 }, ptr %t89
|
|
%t92 = extractvalue { ptr, i64, i64 } %t91, 1
|
|
%t93 = icmp uge i64 %t90, %t92
|
|
br i1 %t93, label %range7303, label %inrange7304
|
|
range7303:
|
|
call void @finch_panic_index(ptr @.str.4820, i64 4386, i64 %t90, i64 %t92)
|
|
unreachable
|
|
inrange7304:
|
|
%t94 = extractvalue { ptr, i64, i64 } %t91, 0
|
|
%t95 = getelementptr inbounds %S.ast.Type, ptr %t94, i64 %t90
|
|
%t96 = load %S.ast.Type, ptr %t95
|
|
%t97 = load %S.ast.Node, ptr %a76
|
|
%t98 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14
|
|
%t99 = load i64, ptr %a60
|
|
%t100 = load { ptr, i64, i64 }, ptr %t98
|
|
%t101 = extractvalue { ptr, i64, i64 } %t100, 1
|
|
%t102 = icmp uge i64 %t99, %t101
|
|
br i1 %t102, label %range7305, label %inrange7306
|
|
range7305:
|
|
call void @finch_panic_index(ptr @.str.4822, i64 4386, i64 %t99, i64 %t101)
|
|
unreachable
|
|
inrange7306:
|
|
%t103 = extractvalue { ptr, i64, i64 } %t100, 0
|
|
%t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t99
|
|
%t105 = load { ptr, i64, i64 }, ptr %t104
|
|
store { ptr, i64, i64 } { ptr @.str.4821, i64 10, i64 0 }, ptr %a107
|
|
store { ptr, i64, i64 } %t105, ptr %a108
|
|
call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108)
|
|
%t109 = load { ptr, i64, i64 }, ptr %a106
|
|
store { ptr, i64, i64 } %t109, ptr %a111
|
|
store { ptr, i64, i64 } { ptr @.str.4823, i64 1, i64 0 }, ptr %a112
|
|
call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112)
|
|
%t113 = load { ptr, i64, i64 }, ptr %a110
|
|
%t114 = call %S.gen.Val @finch.gen.coerce(ptr %t77, %S.gen.Val %t88, %S.ast.Type %t96, %S.ast.Node %t97, { ptr, i64, i64 } %t113)
|
|
store %S.gen.Val %t114, ptr %a115
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13
|
|
%t118 = load i64, ptr %a60
|
|
%t119 = load { ptr, i64, i64 }, ptr %t117
|
|
%t120 = extractvalue { ptr, i64, i64 } %t119, 1
|
|
%t121 = icmp uge i64 %t118, %t120
|
|
br i1 %t121, label %range7307, label %inrange7308
|
|
range7307:
|
|
call void @finch_panic_index(ptr @.str.4824, i64 4388, i64 %t118, i64 %t120)
|
|
unreachable
|
|
inrange7308:
|
|
%t122 = extractvalue { ptr, i64, i64 } %t119, 0
|
|
%t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i64 %t118
|
|
%t124 = load %S.ast.Type, ptr %t123
|
|
%t125 = call i1 @finch.gen.owning(ptr %t116, %S.ast.Type %t124)
|
|
br label %logic.from7309
|
|
logic.from7309:
|
|
br i1 %t125, label %logic.rhs7310, label %logic.end7311
|
|
logic.rhs7310:
|
|
%t126 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 2
|
|
%t127 = load i1, ptr %t126
|
|
%t128 = xor i1 %t127, true
|
|
br label %logic.rend7312
|
|
logic.rend7312:
|
|
br label %logic.end7311
|
|
logic.end7311:
|
|
%t129 = phi i1 [ false, %logic.from7309 ], [ %t128, %logic.rend7312 ]
|
|
br label %logic.from7313
|
|
logic.from7313:
|
|
br i1 %t129, label %logic.rhs7314, label %logic.end7315
|
|
logic.rhs7314:
|
|
%t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1
|
|
%t131 = load i64, ptr %t130
|
|
%t132 = icmp sgt i64 %t131, 0
|
|
br label %logic.rend7316
|
|
logic.rend7316:
|
|
br label %logic.end7315
|
|
logic.end7315:
|
|
%t133 = phi i1 [ false, %logic.from7313 ], [ %t132, %logic.rend7316 ]
|
|
br label %logic.from7317
|
|
logic.from7317:
|
|
br i1 %t133, label %logic.rhs7318, label %logic.end7319
|
|
logic.rhs7318:
|
|
%t134 = load %S.ast.Node, ptr %a76
|
|
%t135 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t134)
|
|
%t136 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t135, ptr %a137
|
|
store { ptr, i64, i64 } %t136, ptr %a138
|
|
%t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138)
|
|
%t140 = icmp ne i32 %t139, 0
|
|
br label %logic.rend7320
|
|
logic.rend7320:
|
|
br label %logic.end7319
|
|
logic.end7319:
|
|
%t141 = phi i1 [ false, %logic.from7317 ], [ %t140, %logic.rend7320 ]
|
|
br i1 %t141, label %then7321, label %endif7323
|
|
then7321:
|
|
%t142 = load ptr, ptr %a1
|
|
%t143 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 0
|
|
%t144 = load { ptr, i64, i64 }, ptr %t143
|
|
%t145 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 1
|
|
%t146 = load %S.ast.Type, ptr %t145
|
|
%t147 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t142, { ptr, i64, i64 } %t144, %S.ast.Type %t146)
|
|
%t148 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t147, 0
|
|
%t149 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 1
|
|
%t150 = load %S.ast.Type, ptr %t149
|
|
store %S.ast.Type %t150, ptr %a151
|
|
call void @finch.copy.S_ast_Type(ptr %a152, ptr %a151)
|
|
%t153 = load %S.ast.Type, ptr %a152
|
|
%t154 = insertvalue %S.gen.Val %t148, %S.ast.Type %t153, 1
|
|
%t155 = insertvalue %S.gen.Val %t154, i1 true, 2
|
|
store %S.gen.Val %t155, ptr %a115
|
|
br label %endif7323
|
|
endif7323:
|
|
%t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a42, i32 0, i32 1
|
|
%t157 = load ptr, ptr %a1
|
|
%t158 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13
|
|
%t159 = load i64, ptr %a60
|
|
%t160 = load { ptr, i64, i64 }, ptr %t158
|
|
%t161 = extractvalue { ptr, i64, i64 } %t160, 1
|
|
%t162 = icmp uge i64 %t159, %t161
|
|
br i1 %t162, label %range7324, label %inrange7325
|
|
range7324:
|
|
call void @finch_panic_index(ptr @.str.4825, i64 4391, i64 %t159, i64 %t161)
|
|
unreachable
|
|
inrange7325:
|
|
%t163 = extractvalue { ptr, i64, i64 } %t160, 0
|
|
%t164 = getelementptr inbounds %S.ast.Type, ptr %t163, i64 %t159
|
|
%t165 = load %S.ast.Type, ptr %t164
|
|
%t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t157, %S.ast.Type %t165)
|
|
store { ptr, i64, i64 } %t166, ptr %a168
|
|
store { ptr, i64, i64 } { ptr @.str.4826, i64 1, i64 0 }, ptr %a169
|
|
call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169)
|
|
%t170 = load { ptr, i64, i64 }, ptr %a167
|
|
%t171 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 0
|
|
%t172 = load { ptr, i64, i64 }, ptr %t171
|
|
store { ptr, i64, i64 } %t170, ptr %a174
|
|
store { ptr, i64, i64 } %t172, ptr %a175
|
|
call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175)
|
|
%t176 = load { ptr, i64, i64 }, ptr %a173
|
|
%t177 = load i64, ptr %t156
|
|
%t178 = add i64 %t177, 1
|
|
call void @finch_arr_reserve(ptr %a42, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t179 = load ptr, ptr %a42
|
|
%t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177
|
|
store { ptr, i64, i64 } %t176, ptr %t180
|
|
store i64 %t178, ptr %t156
|
|
br label %for.step7297
|
|
for.step7297:
|
|
%t181 = load i64, ptr %a60
|
|
%t182 = add i64 %t181, 1
|
|
store i64 %t182, ptr %a60
|
|
br label %for.cond7295
|
|
for.end7298:
|
|
%t183 = load ptr, ptr %a1
|
|
%t184 = load %S.gen.FnSig, ptr %a21
|
|
%t185 = load %S.ast.Node, ptr %a3
|
|
%t186 = load { ptr, i64, i64 }, ptr %a42
|
|
%t187 = load { ptr, i64, i64 }, ptr %a5
|
|
%t188 = call %S.gen.Val @finch.gen.emitCall(ptr %t183, %S.gen.FnSig %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186, { ptr, i64, i64 } %t187)
|
|
ret %S.gen.Val %t188
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.emitCall(ptr %p0, %S.gen.FnSig %p1, %S.ast.Node %p2, { ptr, i64, i64 } %p3, { ptr, i64, i64 } %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.gen.FnSig, align 16
|
|
%a3 = alloca %S.ast.Node, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca %S.ast.Type, align 16
|
|
%a169 = alloca %S.ast.Type, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca %S.ast.Type, align 16
|
|
%a198 = alloca %S.ast.Type, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca %S.ast.Type, align 16
|
|
%a218 = alloca %S.ast.Type, align 16
|
|
%a227 = alloca %S.ast.Type, align 16
|
|
%a228 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.gen.FnSig %p1, ptr %a2
|
|
store %S.ast.Node %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
store { ptr, i64, i64 } %p4, ptr %a5
|
|
%t6 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9
|
|
%t7 = load i1, ptr %t6
|
|
br label %logic.from7326
|
|
logic.from7326:
|
|
br i1 %t7, label %logic.rhs7327, label %logic.end7328
|
|
logic.rhs7327:
|
|
%t8 = load ptr, ptr %a1
|
|
%t9 = icmp eq ptr %t8, null
|
|
br i1 %t9, label %panic7329, label %ok7330
|
|
panic7329:
|
|
call void @finch_panic(ptr @.str.4827, i64 4398, ptr @.str.4828)
|
|
unreachable
|
|
ok7330:
|
|
%t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 37
|
|
%t11 = load { ptr, i64, i64 }, ptr %t10
|
|
%t12 = load %S.ast.Node, ptr %a3
|
|
%t13 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t12)
|
|
store { ptr, i64, i64 } %t11, ptr %a14
|
|
store { ptr, i64, i64 } %t13, ptr %a15
|
|
%t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15)
|
|
%t17 = icmp eq i32 %t16, 0
|
|
br label %logic.rend7331
|
|
logic.rend7331:
|
|
br label %logic.end7328
|
|
logic.end7328:
|
|
%t18 = phi i1 [ false, %logic.from7326 ], [ %t17, %logic.rend7331 ]
|
|
br i1 %t18, label %then7332, label %endif7334
|
|
then7332:
|
|
%t19 = load ptr, ptr %a1
|
|
%t20 = load %S.ast.Node, ptr %a3
|
|
%t21 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.4829, i64 1, i64 0 }, ptr %a23
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.4830, i64 39, i64 0 }, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
%t30 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t29, ptr %a32
|
|
store { ptr, i64, i64 } %t30, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } %t34, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.4831, i64 19, i64 0 }, ptr %a37
|
|
call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a35
|
|
%t39 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t38, ptr %a41
|
|
store { ptr, i64, i64 } %t39, ptr %a42
|
|
call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a40
|
|
store { ptr, i64, i64 } %t43, ptr %a45
|
|
store { ptr, i64, i64 } { ptr @.str.4832, i64 27, i64 0 }, ptr %a46
|
|
call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46)
|
|
%t47 = load { ptr, i64, i64 }, ptr %a44
|
|
%t48 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t47, ptr %a50
|
|
store { ptr, i64, i64 } %t48, ptr %a51
|
|
call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51)
|
|
%t52 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t52, ptr %a54
|
|
store { ptr, i64, i64 } { ptr @.str.4833, i64 5, i64 0 }, ptr %a55
|
|
call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a53
|
|
call void @finch.gen.fail(ptr %t19, %S.ast.Node %t20, { ptr, i64, i64 } %t56)
|
|
br label %endif7334
|
|
endif7334:
|
|
%t57 = load ptr, ptr %a1
|
|
%t58 = load %S.gen.FnSig, ptr %a2
|
|
%t59 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t57, %S.gen.FnSig %t58)
|
|
store { ptr, i64, i64 } { ptr @.str.4834, i64 5, i64 0 }, ptr %a61
|
|
store { ptr, i64, i64 } %t59, ptr %a62
|
|
call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62)
|
|
%t63 = load { ptr, i64, i64 }, ptr %a60
|
|
store { ptr, i64, i64 } %t63, ptr %a65
|
|
store { ptr, i64, i64 } { ptr @.str.4835, i64 1, i64 0 }, ptr %a66
|
|
call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a64
|
|
%t68 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11
|
|
%t69 = load { ptr, i64, i64 }, ptr %t68
|
|
store { ptr, i64, i64 } %t67, ptr %a71
|
|
store { ptr, i64, i64 } %t69, ptr %a72
|
|
call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72)
|
|
%t73 = load { ptr, i64, i64 }, ptr %a70
|
|
store { ptr, i64, i64 } %t73, ptr %a75
|
|
store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
%t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4837, i64 2, i64 0 }, ptr %a79
|
|
call void @finch_str_join(ptr %a80, ptr %a4, ptr %a79)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t77, ptr %a83
|
|
store { ptr, i64, i64 } %t81, ptr %a84
|
|
call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } %t85, ptr %a87
|
|
store { ptr, i64, i64 } { ptr @.str.4838, i64 1, i64 0 }, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t89, ptr %a90
|
|
%t91 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9
|
|
%t92 = load i1, ptr %t91
|
|
br i1 %t92, label %then7335, label %endif7337
|
|
then7335:
|
|
%t93 = load ptr, ptr %a1
|
|
%t94 = load { ptr, i64, i64 }, ptr %a90
|
|
%t95 = call { ptr, i64, i64 } @finch.gen.op(ptr %t93, { ptr, i64, i64 } %t94)
|
|
store { ptr, i64, i64 } %t95, ptr %a96
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = load ptr, ptr %a1
|
|
%t99 = load %S.gen.FnSig, ptr %a2
|
|
%t100 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t98, %S.gen.FnSig %t99)
|
|
store { ptr, i64, i64 } { ptr @.str.4839, i64 13, i64 0 }, ptr %a102
|
|
store { ptr, i64, i64 } %t100, ptr %a103
|
|
call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103)
|
|
%t104 = load { ptr, i64, i64 }, ptr %a101
|
|
store { ptr, i64, i64 } %t104, ptr %a106
|
|
store { ptr, i64, i64 } { ptr @.str.4840, i64 1, i64 0 }, ptr %a107
|
|
call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107)
|
|
%t108 = load { ptr, i64, i64 }, ptr %a105
|
|
%t109 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t108, ptr %a111
|
|
store { ptr, i64, i64 } %t109, ptr %a112
|
|
call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112)
|
|
%t113 = load { ptr, i64, i64 }, ptr %a110
|
|
store { ptr, i64, i64 } %t113, ptr %a115
|
|
store { ptr, i64, i64 } { ptr @.str.4841, i64 3, i64 0 }, ptr %a116
|
|
call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a114
|
|
%t118 = call { ptr, i64, i64 } @finch.gen.op(ptr %t97, { ptr, i64, i64 } %t117)
|
|
store { ptr, i64, i64 } %t118, ptr %a119
|
|
%t120 = load ptr, ptr %a1
|
|
%t121 = load { ptr, i64, i64 }, ptr %a119
|
|
store { ptr, i64, i64 } { ptr @.str.4842, i64 7, i64 0 }, ptr %a123
|
|
store { ptr, i64, i64 } %t121, ptr %a124
|
|
call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124)
|
|
%t125 = load { ptr, i64, i64 }, ptr %a122
|
|
store { ptr, i64, i64 } %t125, ptr %a127
|
|
store { ptr, i64, i64 } { ptr @.str.4843, i64 6, i64 0 }, ptr %a128
|
|
call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128)
|
|
%t129 = load { ptr, i64, i64 }, ptr %a126
|
|
%t130 = call { ptr, i64, i64 } @finch.gen.op(ptr %t120, { ptr, i64, i64 } %t129)
|
|
%t131 = load ptr, ptr %a1
|
|
%t132 = icmp eq ptr %t131, null
|
|
br i1 %t132, label %panic7338, label %ok7339
|
|
panic7338:
|
|
call void @finch_panic(ptr @.str.4844, i64 4405, ptr @.str.4845)
|
|
unreachable
|
|
ok7339:
|
|
%t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 38
|
|
store { ptr, i64, i64 } %t130, ptr %t133
|
|
%t134 = load ptr, ptr %a1
|
|
%t135 = load ptr, ptr %a1
|
|
%t136 = load %S.gen.FnSig, ptr %a2
|
|
%t137 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t135, %S.gen.FnSig %t136)
|
|
store { ptr, i64, i64 } { ptr @.str.4846, i64 13, i64 0 }, ptr %a139
|
|
store { ptr, i64, i64 } %t137, ptr %a140
|
|
call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140)
|
|
%t141 = load { ptr, i64, i64 }, ptr %a138
|
|
store { ptr, i64, i64 } %t141, ptr %a143
|
|
store { ptr, i64, i64 } { ptr @.str.4847, i64 1, i64 0 }, ptr %a144
|
|
call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144)
|
|
%t145 = load { ptr, i64, i64 }, ptr %a142
|
|
%t146 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t145, ptr %a148
|
|
store { ptr, i64, i64 } %t146, ptr %a149
|
|
call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149)
|
|
%t150 = load { ptr, i64, i64 }, ptr %a147
|
|
store { ptr, i64, i64 } %t150, ptr %a152
|
|
store { ptr, i64, i64 } { ptr @.str.4848, i64 3, i64 0 }, ptr %a153
|
|
call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153)
|
|
%t154 = load { ptr, i64, i64 }, ptr %a151
|
|
%t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t154)
|
|
%t156 = load ptr, ptr %a1
|
|
%t157 = icmp eq ptr %t156, null
|
|
br i1 %t157, label %panic7340, label %ok7341
|
|
panic7340:
|
|
call void @finch_panic(ptr @.str.4849, i64 4406, ptr @.str.4850)
|
|
unreachable
|
|
ok7341:
|
|
%t158 = getelementptr inbounds %S.gen.Gen, ptr %t156, i32 0, i32 39
|
|
store { ptr, i64, i64 } %t155, ptr %t158
|
|
%t159 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t160 = getelementptr inbounds %S.ast.Type, ptr %t159, i32 0, i32 0
|
|
%t161 = load { ptr, i64, i64 }, ptr %t160
|
|
store { ptr, i64, i64 } %t161, ptr %a162
|
|
store { ptr, i64, i64 } { ptr @.str.4851, i64 4, i64 0 }, ptr %a163
|
|
%t164 = call i32 @finch_str_eq(ptr %a162, ptr %a163)
|
|
%t165 = icmp ne i32 %t164, 0
|
|
br i1 %t165, label %then7342, label %endif7344
|
|
then7342:
|
|
%t166 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t167 = load %S.ast.Type, ptr %t166
|
|
store %S.ast.Type %t167, ptr %a168
|
|
call void @finch.copy.S_ast_Type(ptr %a169, ptr %a168)
|
|
%t170 = load %S.ast.Type, ptr %a169
|
|
%t171 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t170, 1
|
|
ret %S.gen.Val %t171
|
|
endif7344:
|
|
%t172 = load ptr, ptr %a1
|
|
%t173 = load ptr, ptr %a1
|
|
%t174 = load %S.gen.FnSig, ptr %a2
|
|
%t175 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t173, %S.gen.FnSig %t174)
|
|
store { ptr, i64, i64 } { ptr @.str.4852, i64 13, i64 0 }, ptr %a177
|
|
store { ptr, i64, i64 } %t175, ptr %a178
|
|
call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178)
|
|
%t179 = load { ptr, i64, i64 }, ptr %a176
|
|
store { ptr, i64, i64 } %t179, ptr %a181
|
|
store { ptr, i64, i64 } { ptr @.str.4853, i64 1, i64 0 }, ptr %a182
|
|
call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182)
|
|
%t183 = load { ptr, i64, i64 }, ptr %a180
|
|
%t184 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t183, ptr %a186
|
|
store { ptr, i64, i64 } %t184, ptr %a187
|
|
call void @finch_str_concat(ptr %a185, ptr %a186, ptr %a187)
|
|
%t188 = load { ptr, i64, i64 }, ptr %a185
|
|
store { ptr, i64, i64 } %t188, ptr %a190
|
|
store { ptr, i64, i64 } { ptr @.str.4854, i64 3, i64 0 }, ptr %a191
|
|
call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191)
|
|
%t192 = load { ptr, i64, i64 }, ptr %a189
|
|
%t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t172, { ptr, i64, i64 } %t192)
|
|
%t194 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t193, 0
|
|
%t195 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t196 = load %S.ast.Type, ptr %t195
|
|
store %S.ast.Type %t196, ptr %a197
|
|
call void @finch.copy.S_ast_Type(ptr %a198, ptr %a197)
|
|
%t199 = load %S.ast.Type, ptr %a198
|
|
%t200 = insertvalue %S.gen.Val %t194, %S.ast.Type %t199, 1
|
|
%t201 = load ptr, ptr %a1
|
|
%t202 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t203 = load %S.ast.Type, ptr %t202
|
|
%t204 = call i1 @finch.gen.owning(ptr %t201, %S.ast.Type %t203)
|
|
%t205 = insertvalue %S.gen.Val %t200, i1 %t204, 2
|
|
ret %S.gen.Val %t205
|
|
endif7337:
|
|
%t206 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t207 = getelementptr inbounds %S.ast.Type, ptr %t206, i32 0, i32 0
|
|
%t208 = load { ptr, i64, i64 }, ptr %t207
|
|
store { ptr, i64, i64 } %t208, ptr %a209
|
|
store { ptr, i64, i64 } { ptr @.str.4855, i64 4, i64 0 }, ptr %a210
|
|
%t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210)
|
|
%t212 = icmp ne i32 %t211, 0
|
|
br i1 %t212, label %then7345, label %endif7347
|
|
then7345:
|
|
%t213 = load ptr, ptr %a1
|
|
%t214 = load { ptr, i64, i64 }, ptr %a90
|
|
call void @finch.gen.emit(ptr %t213, { ptr, i64, i64 } %t214)
|
|
%t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t216 = load %S.ast.Type, ptr %t215
|
|
store %S.ast.Type %t216, ptr %a217
|
|
call void @finch.copy.S_ast_Type(ptr %a218, ptr %a217)
|
|
%t219 = load %S.ast.Type, ptr %a218
|
|
%t220 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t219, 1
|
|
ret %S.gen.Val %t220
|
|
endif7347:
|
|
%t221 = load ptr, ptr %a1
|
|
%t222 = load { ptr, i64, i64 }, ptr %a90
|
|
%t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t221, { ptr, i64, i64 } %t222)
|
|
%t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t223, 0
|
|
%t225 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t226 = load %S.ast.Type, ptr %t225
|
|
store %S.ast.Type %t226, ptr %a227
|
|
call void @finch.copy.S_ast_Type(ptr %a228, ptr %a227)
|
|
%t229 = load %S.ast.Type, ptr %a228
|
|
%t230 = insertvalue %S.gen.Val %t224, %S.ast.Type %t229, 1
|
|
%t231 = load ptr, ptr %a1
|
|
%t232 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12
|
|
%t233 = load %S.ast.Type, ptr %t232
|
|
%t234 = call i1 @finch.gen.owning(ptr %t231, %S.ast.Type %t233)
|
|
%t235 = insertvalue %S.gen.Val %t230, i1 %t234, 2
|
|
ret %S.gen.Val %t235
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca %S.ast.Node, align 16
|
|
%a16 = alloca %S.gen.StructDef, align 16
|
|
%a17 = alloca %S.gen.StructDef, align 16
|
|
%a19 = alloca %S.gen.StructDef, align 16
|
|
%a20 = alloca %S.ast.Node, align 16
|
|
%a43 = alloca %S.ast.Node, align 16
|
|
%a44 = alloca %S.ast.Node, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca %S.ast.Type, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca i1, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca i64, align 16
|
|
%a93 = alloca i64, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca i64, align 16
|
|
%a185 = alloca i64, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca i64, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca i64, align 16
|
|
%a283 = alloca %S.ast.Type, align 16
|
|
%a284 = alloca %S.ast.Type, align 16
|
|
%a286 = alloca %S.ast.Type, align 16
|
|
%a287 = alloca %S.gen.Val, align 16
|
|
%a335 = alloca { ptr, i64, i64 }, align 16
|
|
%a336 = alloca { ptr, i64, i64 }, align 16
|
|
%a337 = alloca { ptr, i64, i64 }, align 16
|
|
%a339 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a363 = alloca { ptr, i64, i64 }, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a372 = alloca { ptr, i64, i64 }, align 16
|
|
%a374 = alloca { ptr, i64, i64 }, align 16
|
|
%a379 = alloca { ptr, i64, i64 }, align 16
|
|
%a380 = alloca { ptr, i64, i64 }, align 16
|
|
%a382 = alloca { ptr, i64, i64 }, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a388 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a396 = alloca { ptr, i64, i64 }, align 16
|
|
%a397 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a405 = alloca { ptr, i64, i64 }, align 16
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a422 = alloca { ptr, i64, i64 }, align 16
|
|
%a465 = alloca { ptr, i64, i64 }, align 16
|
|
%a466 = alloca { ptr, i64, i64 }, align 16
|
|
%a467 = alloca { ptr, i64, i64 }, align 16
|
|
%a469 = alloca { ptr, i64, i64 }, align 16
|
|
%a470 = alloca { ptr, i64, i64 }, align 16
|
|
%a471 = alloca { ptr, i64, i64 }, align 16
|
|
%a478 = alloca { ptr, i64, i64 }, align 16
|
|
%a479 = alloca { ptr, i64, i64 }, align 16
|
|
%a485 = alloca { ptr, i64, i64 }, align 16
|
|
%a486 = alloca { ptr, i64, i64 }, align 16
|
|
%a492 = alloca { ptr, i64, i64 }, align 16
|
|
%a493 = alloca { ptr, i64, i64 }, align 16
|
|
%a499 = alloca { ptr, i64, i64 }, align 16
|
|
%a500 = alloca { ptr, i64, i64 }, align 16
|
|
%a504 = alloca { ptr, i64, i64 }, align 16
|
|
%a505 = alloca { ptr, i64, i64 }, align 16
|
|
%a506 = alloca { ptr, i64, i64 }, align 16
|
|
%a508 = alloca { ptr, i64, i64 }, align 16
|
|
%a509 = alloca { ptr, i64, i64 }, align 16
|
|
%a510 = alloca { ptr, i64, i64 }, align 16
|
|
%a513 = alloca { ptr, i64, i64 }, align 16
|
|
%a514 = alloca { ptr, i64, i64 }, align 16
|
|
%a515 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a518 = alloca { ptr, i64, i64 }, align 16
|
|
%a519 = alloca { ptr, i64, i64 }, align 16
|
|
%a524 = alloca { ptr, i64, i64 }, align 16
|
|
%a525 = alloca { ptr, i64, i64 }, align 16
|
|
%a526 = alloca { ptr, i64, i64 }, align 16
|
|
%a528 = alloca { ptr, i64, i64 }, align 16
|
|
%a529 = alloca { ptr, i64, i64 }, align 16
|
|
%a530 = alloca { ptr, i64, i64 }, align 16
|
|
%a535 = alloca { ptr, i64, i64 }, align 16
|
|
%a536 = alloca { ptr, i64, i64 }, align 16
|
|
%a537 = alloca { ptr, i64, i64 }, align 16
|
|
%a539 = alloca { ptr, i64, i64 }, align 16
|
|
%a540 = alloca { ptr, i64, i64 }, align 16
|
|
%a541 = alloca { ptr, i64, i64 }, align 16
|
|
%a551 = alloca { ptr, i64, i64 }, align 16
|
|
%a553 = alloca { ptr, i64, i64 }, align 16
|
|
%a554 = alloca { ptr, i64, i64 }, align 16
|
|
%a555 = alloca { ptr, i64, i64 }, align 16
|
|
%a561 = alloca { ptr, i64, i64 }, align 16
|
|
%a562 = alloca { ptr, i64, i64 }, align 16
|
|
%a566 = alloca %S.ast.Type, align 16
|
|
%a567 = alloca %S.ast.Type, align 16
|
|
store ptr %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store { ptr, i64, i64 } %p3, ptr %a4
|
|
store %S.ast.Node %p4, ptr %a5
|
|
%t6 = load ptr, ptr %a1
|
|
%t7 = icmp eq ptr %t6, null
|
|
br i1 %t7, label %panic7348, label %ok7349
|
|
panic7348:
|
|
call void @finch_panic(ptr @.str.4856, i64 4420, ptr @.str.4857)
|
|
unreachable
|
|
ok7349:
|
|
%t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15
|
|
%t9 = load i64, ptr %a2
|
|
%t10 = load { ptr, i64, i64 }, ptr %t8
|
|
%t11 = extractvalue { ptr, i64, i64 } %t10, 1
|
|
%t12 = icmp uge i64 %t9, %t11
|
|
br i1 %t12, label %range7350, label %inrange7351
|
|
range7350:
|
|
call void @finch_panic_index(ptr @.str.4858, i64 4420, i64 %t9, i64 %t11)
|
|
unreachable
|
|
inrange7351:
|
|
%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 %then7352, label %endif7354
|
|
then7352:
|
|
%t24 = load ptr, ptr %a1
|
|
%t25 = icmp eq ptr %t24, null
|
|
br i1 %t25, label %panic7355, label %ok7356
|
|
panic7355:
|
|
call void @finch_panic(ptr @.str.4859, i64 4423, ptr @.str.4860)
|
|
unreachable
|
|
ok7356:
|
|
%t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 0
|
|
%t27 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 13
|
|
%t28 = load i64, ptr %t27
|
|
%t29 = load { ptr, i64, i64 }, ptr %t26
|
|
%t30 = extractvalue { ptr, i64, i64 } %t29, 1
|
|
%t31 = icmp uge i64 %t28, %t30
|
|
br i1 %t31, label %range7357, label %inrange7358
|
|
range7357:
|
|
call void @finch_panic_index(ptr @.str.4861, i64 4423, i64 %t28, i64 %t30)
|
|
unreachable
|
|
inrange7358:
|
|
%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 %range7359, label %inrange7360
|
|
range7359:
|
|
call void @finch_panic_index(ptr @.str.4862, i64 4423, i64 %t36, i64 %t38)
|
|
unreachable
|
|
inrange7360:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36
|
|
%t42 = load %S.ast.Node, ptr %t41
|
|
store %S.ast.Node %t42, ptr %a43
|
|
call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43)
|
|
%t45 = load %S.ast.Node, ptr %a44
|
|
store %S.ast.Node %t45, ptr %a20
|
|
br label %endif7354
|
|
endif7354:
|
|
%t46 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4863, i64 6, i64 0 }, 0
|
|
%t47 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1
|
|
%t48 = load { ptr, i64, i64 }, ptr %t47
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
call void @finch_str_copy(ptr %a50, ptr %a49)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a50
|
|
%t52 = insertvalue %S.ast.Type %t46, { ptr, i64, i64 } %t51, 2
|
|
%t53 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0
|
|
%t54 = load { ptr, i64, i64 }, ptr %t53
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
call void @finch_str_copy(ptr %a56, ptr %a55)
|
|
%t57 = load { ptr, i64, i64 }, ptr %a56
|
|
%t58 = insertvalue %S.ast.Type %t52, { ptr, i64, i64 } %t57, 3
|
|
store %S.ast.Type %t58, ptr %a59
|
|
%t60 = load ptr, ptr %a1
|
|
%t61 = load %S.ast.Type, ptr %a59
|
|
%t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61)
|
|
store { ptr, i64, i64 } %t62, ptr %a63
|
|
%t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1
|
|
%t65 = load i64, ptr %t64
|
|
%t66 = icmp sgt i64 %t65, 0
|
|
br label %logic.from7361
|
|
logic.from7361:
|
|
br i1 %t66, label %logic.rhs7362, label %logic.end7363
|
|
logic.rhs7362:
|
|
%t67 = load { ptr, i64, i64 }, ptr %a4
|
|
%t68 = extractvalue { ptr, i64, i64 } %t67, 1
|
|
%t69 = icmp uge i64 0, %t68
|
|
br i1 %t69, label %range7364, label %inrange7365
|
|
range7364:
|
|
call void @finch_panic_index(ptr @.str.4864, i64 4427, i64 0, i64 %t68)
|
|
unreachable
|
|
inrange7365:
|
|
%t70 = extractvalue { ptr, i64, i64 } %t67, 0
|
|
%t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 0
|
|
%t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1
|
|
%t73 = load i64, ptr %t72
|
|
%t74 = icmp sgt i64 %t73, 0
|
|
br label %logic.rend7366
|
|
logic.rend7366:
|
|
br label %logic.end7363
|
|
logic.end7363:
|
|
%t75 = phi i1 [ false, %logic.from7361 ], [ %t74, %logic.rend7366 ]
|
|
store i1 %t75, ptr %a76
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a77
|
|
%t78 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11
|
|
%t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1
|
|
%t80 = load i64, ptr %t79
|
|
store i64 0, ptr %a81
|
|
br label %for.cond7367
|
|
for.cond7367:
|
|
%t82 = load i64, ptr %a81
|
|
%t83 = icmp slt i64 %t82, %t80
|
|
br i1 %t83, label %for.body7368, label %for.end7370
|
|
for.body7368:
|
|
%t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a77, i32 0, i32 1
|
|
%t85 = load i64, ptr %t84
|
|
%t86 = add i64 %t85, 1
|
|
call void @finch_arr_reserve(ptr %a77, i64 %t86, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64))
|
|
%t87 = load ptr, ptr %a77
|
|
%t88 = getelementptr inbounds i64, ptr %t87, i64 %t85
|
|
store i64 -1, ptr %t88
|
|
store i64 %t86, ptr %t84
|
|
br label %for.step7369
|
|
for.step7369:
|
|
%t89 = load i64, ptr %a81
|
|
%t90 = add i64 %t89, 1
|
|
store i64 %t90, ptr %a81
|
|
br label %for.cond7367
|
|
for.end7370:
|
|
%t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t92 = load i64, ptr %t91
|
|
store i64 0, ptr %a93
|
|
br label %for.cond7371
|
|
for.cond7371:
|
|
%t94 = load i64, ptr %a93
|
|
%t95 = icmp slt i64 %t94, %t92
|
|
br i1 %t95, label %for.body7372, label %for.end7374
|
|
for.body7372:
|
|
%t96 = load i64, ptr %a93
|
|
%t97 = load { ptr, i64, i64 }, ptr %a4
|
|
%t98 = extractvalue { ptr, i64, i64 } %t97, 1
|
|
%t99 = icmp uge i64 %t96, %t98
|
|
br i1 %t99, label %range7375, label %inrange7376
|
|
range7375:
|
|
call void @finch_panic_index(ptr @.str.4865, i64 4433, i64 %t96, i64 %t98)
|
|
unreachable
|
|
inrange7376:
|
|
%t100 = extractvalue { ptr, i64, i64 } %t97, 0
|
|
%t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t96
|
|
%t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t101, i32 0, i32 1
|
|
%t103 = load i64, ptr %t102
|
|
%t104 = icmp sgt i64 %t103, 0
|
|
%t105 = load i1, ptr %a76
|
|
%t106 = icmp ne i1 %t104, %t105
|
|
br i1 %t106, label %then7377, label %endif7379
|
|
then7377:
|
|
%t107 = load ptr, ptr %a1
|
|
%t108 = load i64, ptr %a93
|
|
%t109 = load { ptr, i64, i64 }, ptr %a3
|
|
%t110 = extractvalue { ptr, i64, i64 } %t109, 1
|
|
%t111 = icmp uge i64 %t108, %t110
|
|
br i1 %t111, label %range7380, label %inrange7381
|
|
range7380:
|
|
call void @finch_panic_index(ptr @.str.4866, i64 4434, i64 %t108, i64 %t110)
|
|
unreachable
|
|
inrange7381:
|
|
%t112 = extractvalue { ptr, i64, i64 } %t109, 0
|
|
%t113 = getelementptr inbounds %S.ast.Node, ptr %t112, i64 %t108
|
|
%t114 = load %S.ast.Node, ptr %t113
|
|
call void @finch.gen.fail(ptr %t107, %S.ast.Node %t114, { ptr, i64, i64 } { ptr @.str.4867, i64 69, i64 0 })
|
|
br label %endif7379
|
|
endif7379:
|
|
%t115 = load i1, ptr %a76
|
|
%t116 = xor i1 %t115, true
|
|
br i1 %t116, label %then7382, label %endif7384
|
|
then7382:
|
|
%t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t118 = load i64, ptr %t117
|
|
%t119 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11
|
|
%t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1
|
|
%t121 = load i64, ptr %t120
|
|
%t122 = icmp ne i64 %t118, %t121
|
|
br i1 %t122, label %then7385, label %endif7387
|
|
then7385:
|
|
%t123 = load ptr, ptr %a1
|
|
%t124 = load %S.ast.Node, ptr %a5
|
|
%t125 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1
|
|
%t126 = load { ptr, i64, i64 }, ptr %t125
|
|
store { ptr, i64, i64 } %t126, ptr %a128
|
|
store { ptr, i64, i64 } { ptr @.str.4868, i64 5, i64 0 }, ptr %a129
|
|
call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129)
|
|
%t130 = load { ptr, i64, i64 }, ptr %a127
|
|
%t131 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11
|
|
%t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1
|
|
%t133 = load i64, ptr %t132
|
|
call void @finch_str_from_int(ptr %a134, i64 %t133)
|
|
%t135 = load { ptr, i64, i64 }, ptr %a134
|
|
store { ptr, i64, i64 } %t130, ptr %a137
|
|
store { ptr, i64, i64 } %t135, ptr %a138
|
|
call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138)
|
|
%t139 = load { ptr, i64, i64 }, ptr %a136
|
|
store { ptr, i64, i64 } %t139, ptr %a141
|
|
store { ptr, i64, i64 } { ptr @.str.4869, i64 17, i64 0 }, ptr %a142
|
|
call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142)
|
|
%t143 = load { ptr, i64, i64 }, ptr %a140
|
|
%t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1
|
|
%t145 = load i64, ptr %t144
|
|
call void @finch_str_from_int(ptr %a146, i64 %t145)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a146
|
|
store { ptr, i64, i64 } %t143, ptr %a149
|
|
store { ptr, i64, i64 } %t147, ptr %a150
|
|
call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150)
|
|
%t151 = load { ptr, i64, i64 }, ptr %a148
|
|
store { ptr, i64, i64 } %t151, ptr %a153
|
|
store { ptr, i64, i64 } { ptr @.str.4870, i64 23, i64 0 }, ptr %a154
|
|
call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154)
|
|
%t155 = load { ptr, i64, i64 }, ptr %a152
|
|
%t156 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1
|
|
%t157 = load { ptr, i64, i64 }, ptr %t156
|
|
store { ptr, i64, i64 } %t155, ptr %a159
|
|
store { ptr, i64, i64 } %t157, ptr %a160
|
|
call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160)
|
|
%t161 = load { ptr, i64, i64 }, ptr %a158
|
|
store { ptr, i64, i64 } %t161, ptr %a163
|
|
store { ptr, i64, i64 } { ptr @.str.4871, i64 15, i64 0 }, ptr %a164
|
|
call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164)
|
|
%t165 = load { ptr, i64, i64 }, ptr %a162
|
|
call void @finch.gen.fail(ptr %t123, %S.ast.Node %t124, { ptr, i64, i64 } %t165)
|
|
br label %endif7387
|
|
endif7387:
|
|
%t166 = load i64, ptr %a93
|
|
%t167 = load i64, ptr %a93
|
|
%t168 = load { ptr, i64, i64 }, ptr %a77
|
|
%t169 = extractvalue { ptr, i64, i64 } %t168, 1
|
|
%t170 = icmp uge i64 %t167, %t169
|
|
br i1 %t170, label %range7388, label %inrange7389
|
|
range7388:
|
|
call void @finch_panic_index(ptr @.str.4872, i64 4440, i64 %t167, i64 %t169)
|
|
unreachable
|
|
inrange7389:
|
|
%t171 = extractvalue { ptr, i64, i64 } %t168, 0
|
|
%t172 = getelementptr inbounds i64, ptr %t171, i64 %t167
|
|
store i64 %t166, ptr %t172
|
|
br label %for.step7373
|
|
endif7384:
|
|
%t173 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11
|
|
%t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1
|
|
%t175 = load i64, ptr %a93
|
|
%t176 = load { ptr, i64, i64 }, ptr %a4
|
|
%t177 = extractvalue { ptr, i64, i64 } %t176, 1
|
|
%t178 = icmp uge i64 %t175, %t177
|
|
br i1 %t178, label %range7390, label %inrange7391
|
|
range7390:
|
|
call void @finch_panic_index(ptr @.str.4873, i64 4443, i64 %t175, i64 %t177)
|
|
unreachable
|
|
inrange7391:
|
|
%t179 = extractvalue { ptr, i64, i64 } %t176, 0
|
|
%t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t175
|
|
%t181 = load { ptr, i64, i64 }, ptr %t180
|
|
store i64 -1, ptr %a182
|
|
%t183 = load i64, ptr %t174
|
|
%t184 = load ptr, ptr %t173
|
|
store i64 0, ptr %a185
|
|
br label %find.cond7392
|
|
find.cond7392:
|
|
%t186 = load i64, ptr %a185
|
|
%t187 = icmp slt i64 %t186, %t183
|
|
br i1 %t187, label %find.body7393, label %find.end7396
|
|
find.body7393:
|
|
%t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t186
|
|
%t189 = load { ptr, i64, i64 }, ptr %t188
|
|
store { ptr, i64, i64 } %t189, ptr %a190
|
|
store { ptr, i64, i64 } %t181, ptr %a191
|
|
%t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191)
|
|
%t193 = icmp ne i32 %t192, 0
|
|
br i1 %t193, label %find.hit7394, label %find.next7395
|
|
find.hit7394:
|
|
store i64 %t186, ptr %a182
|
|
br label %find.end7396
|
|
find.next7395:
|
|
%t194 = add i64 %t186, 1
|
|
store i64 %t194, ptr %a185
|
|
br label %find.cond7392
|
|
find.end7396:
|
|
%t195 = load i64, ptr %a182
|
|
store i64 %t195, ptr %a196
|
|
%t197 = load i64, ptr %a196
|
|
%t198 = icmp slt i64 %t197, 0
|
|
br i1 %t198, label %then7397, label %endif7399
|
|
then7397:
|
|
%t199 = load ptr, ptr %a1
|
|
%t200 = load i64, ptr %a93
|
|
%t201 = load { ptr, i64, i64 }, ptr %a3
|
|
%t202 = extractvalue { ptr, i64, i64 } %t201, 1
|
|
%t203 = icmp uge i64 %t200, %t202
|
|
br i1 %t203, label %range7400, label %inrange7401
|
|
range7400:
|
|
call void @finch_panic_index(ptr @.str.4874, i64 4445, i64 %t200, i64 %t202)
|
|
unreachable
|
|
inrange7401:
|
|
%t204 = extractvalue { ptr, i64, i64 } %t201, 0
|
|
%t205 = getelementptr inbounds %S.ast.Node, ptr %t204, i64 %t200
|
|
%t206 = load %S.ast.Node, ptr %t205
|
|
%t207 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1
|
|
%t208 = load { ptr, i64, i64 }, ptr %t207
|
|
store { ptr, i64, i64 } %t208, ptr %a210
|
|
store { ptr, i64, i64 } { ptr @.str.4875, i64 15, i64 0 }, ptr %a211
|
|
call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211)
|
|
%t212 = load { ptr, i64, i64 }, ptr %a209
|
|
%t213 = load i64, ptr %a93
|
|
%t214 = load { ptr, i64, i64 }, ptr %a4
|
|
%t215 = extractvalue { ptr, i64, i64 } %t214, 1
|
|
%t216 = icmp uge i64 %t213, %t215
|
|
br i1 %t216, label %range7402, label %inrange7403
|
|
range7402:
|
|
call void @finch_panic_index(ptr @.str.4876, i64 4445, i64 %t213, i64 %t215)
|
|
unreachable
|
|
inrange7403:
|
|
%t217 = extractvalue { ptr, i64, i64 } %t214, 0
|
|
%t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %t217, i64 %t213
|
|
%t219 = load { ptr, i64, i64 }, ptr %t218
|
|
store { ptr, i64, i64 } %t212, ptr %a221
|
|
store { ptr, i64, i64 } %t219, ptr %a222
|
|
call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222)
|
|
%t223 = load { ptr, i64, i64 }, ptr %a220
|
|
store { ptr, i64, i64 } %t223, ptr %a225
|
|
store { ptr, i64, i64 } { ptr @.str.4877, i64 1, i64 0 }, ptr %a226
|
|
call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226)
|
|
%t227 = load { ptr, i64, i64 }, ptr %a224
|
|
call void @finch.gen.fail(ptr %t199, %S.ast.Node %t206, { ptr, i64, i64 } %t227)
|
|
br label %endif7399
|
|
endif7399:
|
|
%t228 = load i64, ptr %a196
|
|
%t229 = load { ptr, i64, i64 }, ptr %a77
|
|
%t230 = extractvalue { ptr, i64, i64 } %t229, 1
|
|
%t231 = icmp uge i64 %t228, %t230
|
|
br i1 %t231, label %range7404, label %inrange7405
|
|
range7404:
|
|
call void @finch_panic_index(ptr @.str.4878, i64 4447, i64 %t228, i64 %t230)
|
|
unreachable
|
|
inrange7405:
|
|
%t232 = extractvalue { ptr, i64, i64 } %t229, 0
|
|
%t233 = getelementptr inbounds i64, ptr %t232, i64 %t228
|
|
%t234 = load i64, ptr %t233
|
|
%t235 = icmp sge i64 %t234, 0
|
|
br i1 %t235, label %then7406, label %endif7408
|
|
then7406:
|
|
%t236 = load ptr, ptr %a1
|
|
%t237 = load i64, ptr %a93
|
|
%t238 = load { ptr, i64, i64 }, ptr %a3
|
|
%t239 = extractvalue { ptr, i64, i64 } %t238, 1
|
|
%t240 = icmp uge i64 %t237, %t239
|
|
br i1 %t240, label %range7409, label %inrange7410
|
|
range7409:
|
|
call void @finch_panic_index(ptr @.str.4879, i64 4448, i64 %t237, i64 %t239)
|
|
unreachable
|
|
inrange7410:
|
|
%t241 = extractvalue { ptr, i64, i64 } %t238, 0
|
|
%t242 = getelementptr inbounds %S.ast.Node, ptr %t241, i64 %t237
|
|
%t243 = load %S.ast.Node, ptr %t242
|
|
%t244 = load i64, ptr %a93
|
|
%t245 = load { ptr, i64, i64 }, ptr %a4
|
|
%t246 = extractvalue { ptr, i64, i64 } %t245, 1
|
|
%t247 = icmp uge i64 %t244, %t246
|
|
br i1 %t247, label %range7411, label %inrange7412
|
|
range7411:
|
|
call void @finch_panic_index(ptr @.str.4881, i64 4448, i64 %t244, i64 %t246)
|
|
unreachable
|
|
inrange7412:
|
|
%t248 = extractvalue { ptr, i64, i64 } %t245, 0
|
|
%t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244
|
|
%t250 = load { ptr, i64, i64 }, ptr %t249
|
|
store { ptr, i64, i64 } { ptr @.str.4880, i64 11, i64 0 }, ptr %a252
|
|
store { ptr, i64, i64 } %t250, ptr %a253
|
|
call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253)
|
|
%t254 = load { ptr, i64, i64 }, ptr %a251
|
|
store { ptr, i64, i64 } %t254, ptr %a256
|
|
store { ptr, i64, i64 } { ptr @.str.4882, i64 16, i64 0 }, ptr %a257
|
|
call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257)
|
|
%t258 = load { ptr, i64, i64 }, ptr %a255
|
|
call void @finch.gen.fail(ptr %t236, %S.ast.Node %t243, { ptr, i64, i64 } %t258)
|
|
br label %endif7408
|
|
endif7408:
|
|
%t259 = load i64, ptr %a93
|
|
%t260 = load i64, ptr %a196
|
|
%t261 = load { ptr, i64, i64 }, ptr %a77
|
|
%t262 = extractvalue { ptr, i64, i64 } %t261, 1
|
|
%t263 = icmp uge i64 %t260, %t262
|
|
br i1 %t263, label %range7413, label %inrange7414
|
|
range7413:
|
|
call void @finch_panic_index(ptr @.str.4883, i64 4450, i64 %t260, i64 %t262)
|
|
unreachable
|
|
inrange7414:
|
|
%t264 = extractvalue { ptr, i64, i64 } %t261, 0
|
|
%t265 = getelementptr inbounds i64, ptr %t264, i64 %t260
|
|
store i64 %t259, ptr %t265
|
|
br label %for.step7373
|
|
for.step7373:
|
|
%t266 = load i64, ptr %a93
|
|
%t267 = add i64 %t266, 1
|
|
store i64 %t267, ptr %a93
|
|
br label %for.cond7371
|
|
for.end7374:
|
|
store { ptr, i64, i64 } { ptr @.str.4884, i64 15, i64 0 }, ptr %a268
|
|
%t269 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11
|
|
%t270 = getelementptr inbounds { ptr, i64, i64 }, ptr %t269, i32 0, i32 1
|
|
%t271 = load i64, ptr %t270
|
|
store i64 0, ptr %a272
|
|
br label %for.cond7415
|
|
for.cond7415:
|
|
%t273 = load i64, ptr %a272
|
|
%t274 = icmp slt i64 %t273, %t271
|
|
br i1 %t274, label %for.body7416, label %for.end7418
|
|
for.body7416:
|
|
%t275 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12
|
|
%t276 = load i64, ptr %a272
|
|
%t277 = load { ptr, i64, i64 }, ptr %t275
|
|
%t278 = extractvalue { ptr, i64, i64 } %t277, 1
|
|
%t279 = icmp uge i64 %t276, %t278
|
|
br i1 %t279, label %range7419, label %inrange7420
|
|
range7419:
|
|
call void @finch_panic_index(ptr @.str.4885, i64 4454, i64 %t276, i64 %t278)
|
|
unreachable
|
|
inrange7420:
|
|
%t280 = extractvalue { ptr, i64, i64 } %t277, 0
|
|
%t281 = getelementptr inbounds %S.ast.Type, ptr %t280, i64 %t276
|
|
%t282 = load %S.ast.Type, ptr %t281
|
|
store %S.ast.Type %t282, ptr %a283
|
|
call void @finch.copy.S_ast_Type(ptr %a284, ptr %a283)
|
|
%t285 = load %S.ast.Type, ptr %a284
|
|
store %S.ast.Type %t285, ptr %a286
|
|
store %S.gen.Val zeroinitializer, ptr %a287
|
|
%t288 = load i64, ptr %a272
|
|
%t289 = load { ptr, i64, i64 }, ptr %a77
|
|
%t290 = extractvalue { ptr, i64, i64 } %t289, 1
|
|
%t291 = icmp uge i64 %t288, %t290
|
|
br i1 %t291, label %range7421, label %inrange7422
|
|
range7421:
|
|
call void @finch_panic_index(ptr @.str.4886, i64 4456, i64 %t288, i64 %t290)
|
|
unreachable
|
|
inrange7422:
|
|
%t292 = extractvalue { ptr, i64, i64 } %t289, 0
|
|
%t293 = getelementptr inbounds i64, ptr %t292, i64 %t288
|
|
%t294 = load i64, ptr %t293
|
|
%t295 = icmp sge i64 %t294, 0
|
|
br i1 %t295, label %then7423, label %else7424
|
|
then7423:
|
|
%t296 = load ptr, ptr %a1
|
|
%t297 = load ptr, ptr %a1
|
|
%t298 = load i64, ptr %a272
|
|
%t299 = load { ptr, i64, i64 }, ptr %a77
|
|
%t300 = extractvalue { ptr, i64, i64 } %t299, 1
|
|
%t301 = icmp uge i64 %t298, %t300
|
|
br i1 %t301, label %range7426, label %inrange7427
|
|
range7426:
|
|
call void @finch_panic_index(ptr @.str.4887, i64 4457, i64 %t298, i64 %t300)
|
|
unreachable
|
|
inrange7427:
|
|
%t302 = extractvalue { ptr, i64, i64 } %t299, 0
|
|
%t303 = getelementptr inbounds i64, ptr %t302, i64 %t298
|
|
%t304 = load i64, ptr %t303
|
|
%t305 = load { ptr, i64, i64 }, ptr %a3
|
|
%t306 = extractvalue { ptr, i64, i64 } %t305, 1
|
|
%t307 = icmp uge i64 %t304, %t306
|
|
br i1 %t307, label %range7428, label %inrange7429
|
|
range7428:
|
|
call void @finch_panic_index(ptr @.str.4888, i64 4457, i64 %t304, i64 %t306)
|
|
unreachable
|
|
inrange7429:
|
|
%t308 = extractvalue { ptr, i64, i64 } %t305, 0
|
|
%t309 = getelementptr inbounds %S.ast.Node, ptr %t308, i64 %t304
|
|
%t310 = load %S.ast.Node, ptr %t309
|
|
%t311 = load %S.ast.Type, ptr %a286
|
|
%t312 = call %S.gen.Val @finch.gen.exprWant(ptr %t297, %S.ast.Node %t310, %S.ast.Type %t311)
|
|
%t313 = load %S.ast.Type, ptr %a286
|
|
%t314 = load i64, ptr %a272
|
|
%t315 = load { ptr, i64, i64 }, ptr %a77
|
|
%t316 = extractvalue { ptr, i64, i64 } %t315, 1
|
|
%t317 = icmp uge i64 %t314, %t316
|
|
br i1 %t317, label %range7430, label %inrange7431
|
|
range7430:
|
|
call void @finch_panic_index(ptr @.str.4889, i64 4457, i64 %t314, i64 %t316)
|
|
unreachable
|
|
inrange7431:
|
|
%t318 = extractvalue { ptr, i64, i64 } %t315, 0
|
|
%t319 = getelementptr inbounds i64, ptr %t318, i64 %t314
|
|
%t320 = load i64, ptr %t319
|
|
%t321 = load { ptr, i64, i64 }, ptr %a3
|
|
%t322 = extractvalue { ptr, i64, i64 } %t321, 1
|
|
%t323 = icmp uge i64 %t320, %t322
|
|
br i1 %t323, label %range7432, label %inrange7433
|
|
range7432:
|
|
call void @finch_panic_index(ptr @.str.4890, i64 4457, i64 %t320, i64 %t322)
|
|
unreachable
|
|
inrange7433:
|
|
%t324 = extractvalue { ptr, i64, i64 } %t321, 0
|
|
%t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320
|
|
%t326 = load %S.ast.Node, ptr %t325
|
|
%t327 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11
|
|
%t328 = load i64, ptr %a272
|
|
%t329 = load { ptr, i64, i64 }, ptr %t327
|
|
%t330 = extractvalue { ptr, i64, i64 } %t329, 1
|
|
%t331 = icmp uge i64 %t328, %t330
|
|
br i1 %t331, label %range7434, label %inrange7435
|
|
range7434:
|
|
call void @finch_panic_index(ptr @.str.4892, i64 4457, i64 %t328, i64 %t330)
|
|
unreachable
|
|
inrange7435:
|
|
%t332 = extractvalue { ptr, i64, i64 } %t329, 0
|
|
%t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t332, i64 %t328
|
|
%t334 = load { ptr, i64, i64 }, ptr %t333
|
|
store { ptr, i64, i64 } { ptr @.str.4891, i64 11, i64 0 }, ptr %a336
|
|
store { ptr, i64, i64 } %t334, ptr %a337
|
|
call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337)
|
|
%t338 = load { ptr, i64, i64 }, ptr %a335
|
|
store { ptr, i64, i64 } %t338, ptr %a340
|
|
store { ptr, i64, i64 } { ptr @.str.4893, i64 1, i64 0 }, ptr %a341
|
|
call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341)
|
|
%t342 = load { ptr, i64, i64 }, ptr %a339
|
|
%t343 = call %S.gen.Val @finch.gen.coerce(ptr %t296, %S.gen.Val %t312, %S.ast.Type %t313, %S.ast.Node %t326, { ptr, i64, i64 } %t342)
|
|
store %S.gen.Val %t343, ptr %a287
|
|
br label %endif7425
|
|
else7424:
|
|
%t344 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2
|
|
%t345 = load i1, ptr %t344
|
|
%t346 = xor i1 %t345, true
|
|
br label %logic.from7436
|
|
logic.from7436:
|
|
br i1 %t346, label %logic.rhs7437, label %logic.end7438
|
|
logic.rhs7437:
|
|
%t347 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9
|
|
%t348 = load i64, ptr %a272
|
|
%t349 = load { ptr, i64, i64 }, ptr %t347
|
|
%t350 = extractvalue { ptr, i64, i64 } %t349, 1
|
|
%t351 = icmp uge i64 %t348, %t350
|
|
br i1 %t351, label %range7439, label %inrange7440
|
|
range7439:
|
|
call void @finch_panic_index(ptr @.str.4894, i64 4458, i64 %t348, i64 %t350)
|
|
unreachable
|
|
inrange7440:
|
|
%t352 = extractvalue { ptr, i64, i64 } %t349, 0
|
|
%t353 = getelementptr inbounds %S.ast.Node, ptr %t352, i64 %t348
|
|
%t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i32 0, i32 9
|
|
%t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i32 0, i32 1
|
|
%t356 = load i64, ptr %t355
|
|
%t357 = icmp sgt i64 %t356, 0
|
|
br label %logic.rend7441
|
|
logic.rend7441:
|
|
br label %logic.end7438
|
|
logic.end7438:
|
|
%t358 = phi i1 [ false, %logic.from7436 ], [ %t357, %logic.rend7441 ]
|
|
br i1 %t358, label %then7442, label %else7443
|
|
then7442:
|
|
%t359 = load ptr, ptr %a1
|
|
%t360 = icmp eq ptr %t359, null
|
|
br i1 %t360, label %panic7445, label %ok7446
|
|
panic7445:
|
|
call void @finch_panic(ptr @.str.4895, i64 4460, ptr @.str.4896)
|
|
unreachable
|
|
ok7446:
|
|
%t361 = getelementptr inbounds %S.gen.Gen, ptr %t359, i32 0, i32 10
|
|
%t362 = load { ptr, i64, i64 }, ptr %t361
|
|
store { ptr, i64, i64 } %t362, ptr %a363
|
|
call void @finch.copy.arr_S_gen_Scope(ptr %a364, ptr %a363)
|
|
%t365 = load { ptr, i64, i64 }, ptr %a364
|
|
store { ptr, i64, i64 } %t365, ptr %a366
|
|
%t367 = load ptr, ptr %a1
|
|
%t368 = icmp eq ptr %t367, null
|
|
br i1 %t368, label %panic7447, label %ok7448
|
|
panic7447:
|
|
call void @finch_panic(ptr @.str.4897, i64 4461, ptr @.str.4898)
|
|
unreachable
|
|
ok7448:
|
|
%t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13
|
|
%t370 = load { ptr, i64, i64 }, ptr %t369
|
|
store { ptr, i64, i64 } %t370, ptr %a371
|
|
call void @finch_str_copy(ptr %a372, ptr %a371)
|
|
%t373 = load { ptr, i64, i64 }, ptr %a372
|
|
store { ptr, i64, i64 } %t373, ptr %a374
|
|
%t375 = load ptr, ptr %a1
|
|
%t376 = icmp eq ptr %t375, null
|
|
br i1 %t376, label %panic7449, label %ok7450
|
|
panic7449:
|
|
call void @finch_panic(ptr @.str.4899, i64 4462, ptr @.str.4900)
|
|
unreachable
|
|
ok7450:
|
|
%t377 = getelementptr inbounds %S.gen.Gen, ptr %t375, i32 0, i32 17
|
|
%t378 = load { ptr, i64, i64 }, ptr %t377
|
|
store { ptr, i64, i64 } %t378, ptr %a379
|
|
call void @finch.copy.arr_str(ptr %a380, ptr %a379)
|
|
%t381 = load { ptr, i64, i64 }, ptr %a380
|
|
store { ptr, i64, i64 } %t381, ptr %a382
|
|
%t383 = load ptr, ptr %a1
|
|
%t384 = icmp eq ptr %t383, null
|
|
br i1 %t384, label %panic7451, label %ok7452
|
|
panic7451:
|
|
call void @finch_panic(ptr @.str.4901, i64 4463, ptr @.str.4902)
|
|
unreachable
|
|
ok7452:
|
|
%t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 18
|
|
%t386 = load { ptr, i64, i64 }, ptr %t385
|
|
store { ptr, i64, i64 } %t386, ptr %a387
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a388, ptr %a387)
|
|
%t389 = load { ptr, i64, i64 }, ptr %a388
|
|
store { ptr, i64, i64 } %t389, ptr %a390
|
|
%t391 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6
|
|
%t392 = load { ptr, i64, i64 }, ptr %t391
|
|
%t393 = load ptr, ptr %a1
|
|
%t394 = icmp eq ptr %t393, null
|
|
br i1 %t394, label %panic7453, label %ok7454
|
|
panic7453:
|
|
call void @finch_panic(ptr @.str.4903, i64 4464, ptr @.str.4904)
|
|
unreachable
|
|
ok7454:
|
|
%t395 = getelementptr inbounds %S.gen.Gen, ptr %t393, i32 0, i32 17
|
|
store { ptr, i64, i64 } %t392, ptr %a396
|
|
call void @finch.copy.arr_str(ptr %a397, ptr %a396)
|
|
%t398 = load { ptr, i64, i64 }, ptr %a397
|
|
store { ptr, i64, i64 } %t398, ptr %t395
|
|
%t399 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7
|
|
%t400 = load { ptr, i64, i64 }, ptr %t399
|
|
%t401 = load ptr, ptr %a1
|
|
%t402 = icmp eq ptr %t401, null
|
|
br i1 %t402, label %panic7455, label %ok7456
|
|
panic7455:
|
|
call void @finch_panic(ptr @.str.4905, i64 4465, ptr @.str.4906)
|
|
unreachable
|
|
ok7456:
|
|
%t403 = getelementptr inbounds %S.gen.Gen, ptr %t401, i32 0, i32 18
|
|
store { ptr, i64, i64 } %t400, ptr %a404
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a405, ptr %a404)
|
|
%t406 = load { ptr, i64, i64 }, ptr %a405
|
|
store { ptr, i64, i64 } %t406, ptr %t403
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a407
|
|
%t408 = load { ptr, i64, i64 }, ptr %a407
|
|
%t409 = load ptr, ptr %a1
|
|
%t410 = icmp eq ptr %t409, null
|
|
br i1 %t410, label %panic7457, label %ok7458
|
|
panic7457:
|
|
call void @finch_panic(ptr @.str.4907, i64 4467, ptr @.str.4908)
|
|
unreachable
|
|
ok7458:
|
|
%t411 = getelementptr inbounds %S.gen.Gen, ptr %t409, i32 0, i32 10
|
|
store { ptr, i64, i64 } %t408, ptr %a412
|
|
call void @finch.copy.arr_S_gen_Scope(ptr %a413, ptr %a412)
|
|
%t414 = load { ptr, i64, i64 }, ptr %a413
|
|
store { ptr, i64, i64 } %t414, ptr %t411
|
|
%t415 = load ptr, ptr %a1
|
|
call void @finch.gen.pushScope(ptr %t415)
|
|
%t416 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0
|
|
%t417 = load { ptr, i64, i64 }, ptr %t416
|
|
%t418 = load ptr, ptr %a1
|
|
%t419 = icmp eq ptr %t418, null
|
|
br i1 %t419, label %panic7459, label %ok7460
|
|
panic7459:
|
|
call void @finch_panic(ptr @.str.4909, i64 4469, ptr @.str.4910)
|
|
unreachable
|
|
ok7460:
|
|
%t420 = getelementptr inbounds %S.gen.Gen, ptr %t418, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t417, ptr %a421
|
|
call void @finch_str_copy(ptr %a422, ptr %a421)
|
|
%t423 = load { ptr, i64, i64 }, ptr %a422
|
|
store { ptr, i64, i64 } %t423, ptr %t420
|
|
%t424 = load ptr, ptr %a1
|
|
%t425 = load ptr, ptr %a1
|
|
%t426 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9
|
|
%t427 = load i64, ptr %a272
|
|
%t428 = load { ptr, i64, i64 }, ptr %t426
|
|
%t429 = extractvalue { ptr, i64, i64 } %t428, 1
|
|
%t430 = icmp uge i64 %t427, %t429
|
|
br i1 %t430, label %range7461, label %inrange7462
|
|
range7461:
|
|
call void @finch_panic_index(ptr @.str.4911, i64 4470, i64 %t427, i64 %t429)
|
|
unreachable
|
|
inrange7462:
|
|
%t431 = extractvalue { ptr, i64, i64 } %t428, 0
|
|
%t432 = getelementptr inbounds %S.ast.Node, ptr %t431, i64 %t427
|
|
%t433 = getelementptr inbounds %S.ast.Node, ptr %t432, i32 0, i32 9
|
|
%t434 = load { ptr, i64, i64 }, ptr %t433
|
|
%t435 = extractvalue { ptr, i64, i64 } %t434, 1
|
|
%t436 = icmp uge i64 0, %t435
|
|
br i1 %t436, label %range7463, label %inrange7464
|
|
range7463:
|
|
call void @finch_panic_index(ptr @.str.4912, i64 4470, i64 0, i64 %t435)
|
|
unreachable
|
|
inrange7464:
|
|
%t437 = extractvalue { ptr, i64, i64 } %t434, 0
|
|
%t438 = getelementptr inbounds %S.ast.Node, ptr %t437, i64 0
|
|
%t439 = load %S.ast.Node, ptr %t438
|
|
%t440 = load %S.ast.Type, ptr %a286
|
|
%t441 = call %S.gen.Val @finch.gen.exprWant(ptr %t425, %S.ast.Node %t439, %S.ast.Type %t440)
|
|
%t442 = load %S.ast.Type, ptr %a286
|
|
%t443 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9
|
|
%t444 = load i64, ptr %a272
|
|
%t445 = load { ptr, i64, i64 }, ptr %t443
|
|
%t446 = extractvalue { ptr, i64, i64 } %t445, 1
|
|
%t447 = icmp uge i64 %t444, %t446
|
|
br i1 %t447, label %range7465, label %inrange7466
|
|
range7465:
|
|
call void @finch_panic_index(ptr @.str.4913, i64 4470, i64 %t444, i64 %t446)
|
|
unreachable
|
|
inrange7466:
|
|
%t448 = extractvalue { ptr, i64, i64 } %t445, 0
|
|
%t449 = getelementptr inbounds %S.ast.Node, ptr %t448, i64 %t444
|
|
%t450 = getelementptr inbounds %S.ast.Node, ptr %t449, i32 0, i32 9
|
|
%t451 = load { ptr, i64, i64 }, ptr %t450
|
|
%t452 = extractvalue { ptr, i64, i64 } %t451, 1
|
|
%t453 = icmp uge i64 0, %t452
|
|
br i1 %t453, label %range7467, label %inrange7468
|
|
range7467:
|
|
call void @finch_panic_index(ptr @.str.4914, i64 4470, i64 0, i64 %t452)
|
|
unreachable
|
|
inrange7468:
|
|
%t454 = extractvalue { ptr, i64, i64 } %t451, 0
|
|
%t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 0
|
|
%t456 = load %S.ast.Node, ptr %t455
|
|
%t457 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11
|
|
%t458 = load i64, ptr %a272
|
|
%t459 = load { ptr, i64, i64 }, ptr %t457
|
|
%t460 = extractvalue { ptr, i64, i64 } %t459, 1
|
|
%t461 = icmp uge i64 %t458, %t460
|
|
br i1 %t461, label %range7469, label %inrange7470
|
|
range7469:
|
|
call void @finch_panic_index(ptr @.str.4916, i64 4470, i64 %t458, i64 %t460)
|
|
unreachable
|
|
inrange7470:
|
|
%t462 = extractvalue { ptr, i64, i64 } %t459, 0
|
|
%t463 = getelementptr inbounds { ptr, i64, i64 }, ptr %t462, i64 %t458
|
|
%t464 = load { ptr, i64, i64 }, ptr %t463
|
|
store { ptr, i64, i64 } { ptr @.str.4915, i64 16, i64 0 }, ptr %a466
|
|
store { ptr, i64, i64 } %t464, ptr %a467
|
|
call void @finch_str_concat(ptr %a465, ptr %a466, ptr %a467)
|
|
%t468 = load { ptr, i64, i64 }, ptr %a465
|
|
store { ptr, i64, i64 } %t468, ptr %a470
|
|
store { ptr, i64, i64 } { ptr @.str.4917, i64 1, i64 0 }, ptr %a471
|
|
call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471)
|
|
%t472 = load { ptr, i64, i64 }, ptr %a469
|
|
%t473 = call %S.gen.Val @finch.gen.coerce(ptr %t424, %S.gen.Val %t441, %S.ast.Type %t442, %S.ast.Node %t456, { ptr, i64, i64 } %t472)
|
|
store %S.gen.Val %t473, ptr %a287
|
|
%t474 = load { ptr, i64, i64 }, ptr %a374
|
|
%t475 = load ptr, ptr %a1
|
|
%t476 = icmp eq ptr %t475, null
|
|
br i1 %t476, label %panic7471, label %ok7472
|
|
panic7471:
|
|
call void @finch_panic(ptr @.str.4918, i64 4471, ptr @.str.4919)
|
|
unreachable
|
|
ok7472:
|
|
%t477 = getelementptr inbounds %S.gen.Gen, ptr %t475, i32 0, i32 13
|
|
store { ptr, i64, i64 } %t474, ptr %a478
|
|
call void @finch_str_copy(ptr %a479, ptr %a478)
|
|
%t480 = load { ptr, i64, i64 }, ptr %a479
|
|
store { ptr, i64, i64 } %t480, ptr %t477
|
|
%t481 = load { ptr, i64, i64 }, ptr %a382
|
|
%t482 = load ptr, ptr %a1
|
|
%t483 = icmp eq ptr %t482, null
|
|
br i1 %t483, label %panic7473, label %ok7474
|
|
panic7473:
|
|
call void @finch_panic(ptr @.str.4920, i64 4472, ptr @.str.4921)
|
|
unreachable
|
|
ok7474:
|
|
%t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 17
|
|
store { ptr, i64, i64 } %t481, ptr %a485
|
|
call void @finch.copy.arr_str(ptr %a486, ptr %a485)
|
|
%t487 = load { ptr, i64, i64 }, ptr %a486
|
|
store { ptr, i64, i64 } %t487, ptr %t484
|
|
%t488 = load { ptr, i64, i64 }, ptr %a390
|
|
%t489 = load ptr, ptr %a1
|
|
%t490 = icmp eq ptr %t489, null
|
|
br i1 %t490, label %panic7475, label %ok7476
|
|
panic7475:
|
|
call void @finch_panic(ptr @.str.4922, i64 4473, ptr @.str.4923)
|
|
unreachable
|
|
ok7476:
|
|
%t491 = getelementptr inbounds %S.gen.Gen, ptr %t489, i32 0, i32 18
|
|
store { ptr, i64, i64 } %t488, ptr %a492
|
|
call void @finch.copy.arr_S_ast_Type(ptr %a493, ptr %a492)
|
|
%t494 = load { ptr, i64, i64 }, ptr %a493
|
|
store { ptr, i64, i64 } %t494, ptr %t491
|
|
%t495 = load { ptr, i64, i64 }, ptr %a366
|
|
%t496 = load ptr, ptr %a1
|
|
%t497 = icmp eq ptr %t496, null
|
|
br i1 %t497, label %panic7477, label %ok7478
|
|
panic7477:
|
|
call void @finch_panic(ptr @.str.4924, i64 4474, ptr @.str.4925)
|
|
unreachable
|
|
ok7478:
|
|
%t498 = getelementptr inbounds %S.gen.Gen, ptr %t496, i32 0, i32 10
|
|
store { ptr, i64, i64 } %t495, ptr %a499
|
|
call void @finch.copy.arr_S_gen_Scope(ptr %a500, ptr %a499)
|
|
%t501 = load { ptr, i64, i64 }, ptr %a500
|
|
store { ptr, i64, i64 } %t501, ptr %t498
|
|
br label %endif7444
|
|
else7443:
|
|
br label %for.step7417
|
|
endif7444:
|
|
br label %endif7425
|
|
endif7425:
|
|
%t502 = load ptr, ptr %a1
|
|
%t503 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } { ptr @.str.4926, i64 12, i64 0 }, ptr %a505
|
|
store { ptr, i64, i64 } %t503, ptr %a506
|
|
call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506)
|
|
%t507 = load { ptr, i64, i64 }, ptr %a504
|
|
store { ptr, i64, i64 } %t507, ptr %a509
|
|
store { ptr, i64, i64 } { ptr @.str.4927, i64 1, i64 0 }, ptr %a510
|
|
call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510)
|
|
%t511 = load { ptr, i64, i64 }, ptr %a508
|
|
%t512 = load { ptr, i64, i64 }, ptr %a268
|
|
store { ptr, i64, i64 } %t511, ptr %a514
|
|
store { ptr, i64, i64 } %t512, ptr %a515
|
|
call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515)
|
|
%t516 = load { ptr, i64, i64 }, ptr %a513
|
|
store { ptr, i64, i64 } %t516, ptr %a518
|
|
store { ptr, i64, i64 } { ptr @.str.4928, i64 2, i64 0 }, ptr %a519
|
|
call void @finch_str_concat(ptr %a517, ptr %a518, ptr %a519)
|
|
%t520 = load { ptr, i64, i64 }, ptr %a517
|
|
%t521 = load ptr, ptr %a1
|
|
%t522 = load %S.ast.Type, ptr %a286
|
|
%t523 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t521, %S.ast.Type %t522)
|
|
store { ptr, i64, i64 } %t520, ptr %a525
|
|
store { ptr, i64, i64 } %t523, ptr %a526
|
|
call void @finch_str_concat(ptr %a524, ptr %a525, ptr %a526)
|
|
%t527 = load { ptr, i64, i64 }, ptr %a524
|
|
store { ptr, i64, i64 } %t527, ptr %a529
|
|
store { ptr, i64, i64 } { ptr @.str.4929, i64 1, i64 0 }, ptr %a530
|
|
call void @finch_str_concat(ptr %a528, ptr %a529, ptr %a530)
|
|
%t531 = load { ptr, i64, i64 }, ptr %a528
|
|
%t532 = load ptr, ptr %a1
|
|
%t533 = load %S.gen.Val, ptr %a287
|
|
%t534 = call { ptr, i64, i64 } @finch.gen.own(ptr %t532, %S.gen.Val %t533)
|
|
store { ptr, i64, i64 } %t531, ptr %a536
|
|
store { ptr, i64, i64 } %t534, ptr %a537
|
|
call void @finch_str_concat(ptr %a535, ptr %a536, ptr %a537)
|
|
%t538 = load { ptr, i64, i64 }, ptr %a535
|
|
store { ptr, i64, i64 } %t538, ptr %a540
|
|
store { ptr, i64, i64 } { ptr @.str.4930, i64 2, i64 0 }, ptr %a541
|
|
call void @finch_str_concat(ptr %a539, ptr %a540, ptr %a541)
|
|
%t542 = load { ptr, i64, i64 }, ptr %a539
|
|
%t543 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3
|
|
%t544 = load i64, ptr %a272
|
|
%t545 = load { ptr, i64, i64 }, ptr %t543
|
|
%t546 = extractvalue { ptr, i64, i64 } %t545, 1
|
|
%t547 = icmp uge i64 %t544, %t546
|
|
br i1 %t547, label %range7479, label %inrange7480
|
|
range7479:
|
|
call void @finch_panic_index(ptr @.str.4931, i64 4478, i64 %t544, i64 %t546)
|
|
unreachable
|
|
inrange7480:
|
|
%t548 = extractvalue { ptr, i64, i64 } %t545, 0
|
|
%t549 = getelementptr inbounds i64, ptr %t548, i64 %t544
|
|
%t550 = load i64, ptr %t549
|
|
call void @finch_str_from_int(ptr %a551, i64 %t550)
|
|
%t552 = load { ptr, i64, i64 }, ptr %a551
|
|
store { ptr, i64, i64 } %t542, ptr %a554
|
|
store { ptr, i64, i64 } %t552, ptr %a555
|
|
call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555)
|
|
%t556 = load { ptr, i64, i64 }, ptr %a553
|
|
%t557 = call { ptr, i64, i64 } @finch.gen.op(ptr %t502, { ptr, i64, i64 } %t556)
|
|
store { ptr, i64, i64 } %t557, ptr %a268
|
|
br label %for.step7417
|
|
for.step7417:
|
|
%t558 = load i64, ptr %a272
|
|
%t559 = add i64 %t558, 1
|
|
store i64 %t559, ptr %a272
|
|
br label %for.cond7415
|
|
for.end7418:
|
|
%t560 = load { ptr, i64, i64 }, ptr %a268
|
|
store { ptr, i64, i64 } %t560, ptr %a561
|
|
call void @finch_str_copy(ptr %a562, ptr %a561)
|
|
%t563 = load { ptr, i64, i64 }, ptr %a562
|
|
%t564 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t563, 0
|
|
%t565 = load %S.ast.Type, ptr %a59
|
|
store %S.ast.Type %t565, ptr %a566
|
|
call void @finch.copy.S_ast_Type(ptr %a567, ptr %a566)
|
|
%t568 = load %S.ast.Type, ptr %a567
|
|
%t569 = insertvalue %S.gen.Val %t564, %S.ast.Type %t568, 1
|
|
%t570 = load ptr, ptr %a1
|
|
%t571 = load %S.ast.Type, ptr %a59
|
|
%t572 = call i1 @finch.gen.owning(ptr %t570, %S.ast.Type %t571)
|
|
%t573 = insertvalue %S.gen.Val %t569, i1 %t572, 2
|
|
ret %S.gen.Val %t573
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.method(ptr %p0, %S.ast.Node %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a10 = alloca %S.ast.Node, align 16
|
|
%a11 = alloca %S.ast.Node, align 16
|
|
%a13 = alloca %S.ast.Node, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca i64, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca i64, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca i64, align 16
|
|
%a119 = alloca i64, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca i64, align 16
|
|
%a138 = alloca %S.ast.Node, align 16
|
|
%a139 = alloca %S.ast.Node, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca i64, align 16
|
|
%a197 = alloca i64, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca %S.gen.Ref, align 16
|
|
%a214 = alloca %S.ast.Type, align 16
|
|
%a215 = alloca %S.ast.Type, align 16
|
|
%a217 = alloca %S.ast.Type, align 16
|
|
%a223 = alloca %S.ast.Type, align 16
|
|
%a224 = alloca %S.ast.Type, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca i64, align 16
|
|
%a247 = alloca i64, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca %S.gen.Val, align 16
|
|
%a285 = alloca %S.gen.Val, align 16
|
|
%a287 = alloca %S.gen.Val, align 16
|
|
%a297 = alloca %S.ast.Type, align 16
|
|
%a298 = alloca %S.ast.Type, align 16
|
|
%a309 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a319 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca i64, align 16
|
|
%a328 = alloca i64, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a344 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca { ptr, i64, i64 }, align 16
|
|
%a346 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = alloca %S.ast.Type, align 16
|
|
%a359 = alloca %S.ast.Type, align 16
|
|
%a361 = alloca %S.ast.Type, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a382 = alloca { ptr, i64, i64 }, align 16
|
|
%a383 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a391 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a405 = alloca { ptr, i64, i64 }, align 16
|
|
%a406 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a410 = alloca { ptr, i64, i64 }, align 16
|
|
%a415 = alloca { ptr, i64, i64 }, align 16
|
|
%a416 = alloca { ptr, i64, i64 }, align 16
|
|
%a417 = alloca { ptr, i64, i64 }, align 16
|
|
%a419 = alloca { ptr, i64, i64 }, align 16
|
|
%a420 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a431 = alloca %S.ast.Type, align 16
|
|
%a432 = alloca %S.ast.Type, align 16
|
|
%a435 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a441 = alloca { ptr, i64, i64 }, align 16
|
|
%a446 = alloca { ptr, i64, i64 }, align 16
|
|
%a447 = alloca { ptr, i64, i64 }, align 16
|
|
%a456 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a465 = alloca { ptr, i64, i64 }, align 16
|
|
%a466 = alloca { ptr, i64, i64 }, align 16
|
|
%a471 = alloca { ptr, i64, i64 }, align 16
|
|
%a472 = alloca { ptr, i64, i64 }, align 16
|
|
%a484 = alloca i64, align 16
|
|
%a489 = alloca { ptr, i64, i64 }, align 16
|
|
%a490 = alloca { ptr, i64, i64 }, align 16
|
|
%a500 = alloca i64, align 16
|
|
%a531 = alloca i64, align 16
|
|
%a552 = alloca { ptr, i64, i64 }, align 16
|
|
%a556 = alloca i64, align 16
|
|
%a564 = alloca %S.gen.FnSig, align 16
|
|
%a569 = alloca { ptr, i64, i64 }, align 16
|
|
%a570 = alloca { ptr, i64, i64 }, align 16
|
|
%a577 = alloca { ptr, i64, i64 }, align 16
|
|
%a578 = alloca { ptr, i64, i64 }, align 16
|
|
%a585 = alloca { ptr, i64, i64 }, align 16
|
|
%a586 = alloca { ptr, i64, i64 }, align 16
|
|
%a601 = alloca { ptr, i64, i64 }, align 16
|
|
%a602 = alloca { ptr, i64, i64 }, align 16
|
|
%a603 = alloca { ptr, i64, i64 }, align 16
|
|
%a605 = alloca { ptr, i64, i64 }, align 16
|
|
%a606 = alloca { ptr, i64, i64 }, align 16
|
|
%a607 = alloca { ptr, i64, i64 }, align 16
|
|
%a611 = alloca { ptr, i64, i64 }, align 16
|
|
%a612 = alloca { ptr, i64, i64 }, align 16
|
|
%a613 = 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
|
|
%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
|
|
%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
|
|
%a643 = alloca { ptr, i64, i64 }, align 16
|
|
%a644 = alloca { ptr, i64, i64 }, align 16
|
|
%a645 = alloca { ptr, i64, i64 }, align 16
|
|
%a647 = alloca { ptr, i64, i64 }, align 16
|
|
%a648 = alloca { ptr, i64, i64 }, align 16
|
|
%a649 = alloca { ptr, i64, i64 }, align 16
|
|
%a653 = alloca { ptr, i64, i64 }, align 16
|
|
%a654 = alloca { ptr, i64, i64 }, align 16
|
|
%a655 = alloca { ptr, i64, i64 }, align 16
|
|
%a657 = alloca { ptr, i64, i64 }, align 16
|
|
%a658 = alloca { ptr, i64, i64 }, align 16
|
|
%a659 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%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
|
|
%a679 = alloca { ptr, i64, i64 }, align 16
|
|
%a680 = alloca { ptr, i64, i64 }, align 16
|
|
%a681 = alloca { ptr, i64, i64 }, align 16
|
|
%a696 = alloca { ptr, i64, i64 }, align 16
|
|
%a697 = alloca { ptr, i64, i64 }, align 16
|
|
%a702 = alloca { ptr, i64, i64 }, align 16
|
|
%a703 = alloca { ptr, i64, i64 }, align 16
|
|
%a715 = alloca { ptr, i64, i64 }, align 16
|
|
%a716 = alloca { ptr, i64, i64 }, align 16
|
|
%a717 = alloca { ptr, i64, i64 }, align 16
|
|
%a721 = alloca { ptr, i64, i64 }, align 16
|
|
%a722 = alloca { ptr, i64, i64 }, align 16
|
|
%a723 = alloca { ptr, i64, i64 }, align 16
|
|
%a725 = alloca { ptr, i64, i64 }, align 16
|
|
%a726 = alloca { ptr, i64, i64 }, align 16
|
|
%a727 = alloca { ptr, i64, i64 }, align 16
|
|
%a731 = alloca { ptr, i64, i64 }, align 16
|
|
%a738 = alloca i64, align 16
|
|
%a749 = alloca { ptr, i64, i64 }, align 16
|
|
%a750 = alloca { ptr, i64, i64 }, align 16
|
|
%a751 = alloca { ptr, i64, i64 }, align 16
|
|
%a753 = alloca { ptr, i64, i64 }, align 16
|
|
%a754 = alloca { ptr, i64, i64 }, align 16
|
|
%a755 = alloca { ptr, i64, i64 }, align 16
|
|
%a762 = alloca { ptr, i64, i64 }, align 16
|
|
%a763 = alloca { ptr, i64, i64 }, align 16
|
|
%a764 = alloca { ptr, i64, i64 }, align 16
|
|
%a768 = alloca { ptr, i64, i64 }, align 16
|
|
%a769 = alloca { ptr, i64, i64 }, align 16
|
|
%a770 = alloca { ptr, i64, i64 }, align 16
|
|
%a780 = alloca { ptr, i64, i64 }, align 16
|
|
%a781 = alloca { ptr, i64, i64 }, align 16
|
|
%a782 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
%t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t4 = load { ptr, i64, i64 }, ptr %t3
|
|
%t5 = extractvalue { ptr, i64, i64 } %t4, 1
|
|
%t6 = icmp uge i64 0, %t5
|
|
br i1 %t6, label %range7481, label %inrange7482
|
|
range7481:
|
|
call void @finch_panic_index(ptr @.str.4932, i64 4486, i64 0, i64 %t5)
|
|
unreachable
|
|
inrange7482:
|
|
%t7 = extractvalue { ptr, i64, i64 } %t4, 0
|
|
%t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0
|
|
%t9 = load %S.ast.Node, ptr %t8
|
|
store %S.ast.Node %t9, ptr %a10
|
|
call void @finch.copy.S_ast_Node(ptr %a11, ptr %a10)
|
|
%t12 = load %S.ast.Node, ptr %a11
|
|
store %S.ast.Node %t12, ptr %a13
|
|
%t14 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0
|
|
%t15 = load { ptr, i64, i64 }, ptr %t14
|
|
store { ptr, i64, i64 } %t15, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.4933, i64 3, i64 0 }, ptr %a17
|
|
%t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17)
|
|
%t19 = icmp ne i32 %t18, 0
|
|
br label %logic.from7483
|
|
logic.from7483:
|
|
br i1 %t19, label %logic.rhs7484, label %logic.end7485
|
|
logic.rhs7484:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1
|
|
%t22 = load { ptr, i64, i64 }, ptr %t21
|
|
%t23 = call i64 @finch.gen.lookup(ptr %t20, { ptr, i64, i64 } %t22)
|
|
%t24 = icmp slt i64 %t23, 0
|
|
br label %logic.rend7486
|
|
logic.rend7486:
|
|
br label %logic.end7485
|
|
logic.end7485:
|
|
%t25 = phi i1 [ false, %logic.from7483 ], [ %t24, %logic.rend7486 ]
|
|
br i1 %t25, label %then7487, label %endif7489
|
|
then7487:
|
|
%t26 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1
|
|
%t27 = load { ptr, i64, i64 }, ptr %t26
|
|
store { ptr, i64, i64 } %t27, ptr %a28
|
|
call void @finch_str_copy(ptr %a29, ptr %a28)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a29
|
|
store { ptr, i64, i64 } %t30, ptr %a31
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = load { ptr, i64, i64 }, ptr %a31
|
|
%t34 = call i1 @finch.gen.imports(ptr %t32, { ptr, i64, i64 } %t33)
|
|
%t35 = xor i1 %t34, true
|
|
br i1 %t35, label %then7490, label %endif7492
|
|
then7490:
|
|
%t36 = load ptr, ptr %a1
|
|
%t37 = load %S.ast.Node, ptr %a13
|
|
%t38 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } { ptr @.str.4934, i64 38, i64 0 }, ptr %a40
|
|
store { ptr, i64, i64 } %t38, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
store { ptr, i64, i64 } %t42, ptr %a44
|
|
store { ptr, i64, i64 } { ptr @.str.4935, i64 32, i64 0 }, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
%t47 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } %t46, ptr %a49
|
|
store { ptr, i64, i64 } %t47, ptr %a50
|
|
call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a48
|
|
store { ptr, i64, i64 } %t51, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.4936, i64 13, i64 0 }, ptr %a54
|
|
call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54)
|
|
%t55 = load { ptr, i64, i64 }, ptr %a52
|
|
call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } %t55)
|
|
br label %endif7492
|
|
endif7492:
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = load { ptr, i64, i64 }, ptr %a31
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t59 = load { ptr, i64, i64 }, ptr %t58
|
|
%t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t57, { ptr, i64, i64 } %t59)
|
|
store i64 %t60, ptr %a61
|
|
%t62 = load i64, ptr %a61
|
|
%t63 = icmp sge i64 %t62, 0
|
|
br i1 %t63, label %then7493, label %endif7495
|
|
then7493:
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = load i64, ptr %a61
|
|
%t66 = load %S.ast.Node, ptr %a2
|
|
%t67 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } %t67, ptr %a69
|
|
store { ptr, i64, i64 } { ptr @.str.4937, i64 1, i64 0 }, ptr %a70
|
|
call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70)
|
|
%t71 = load { ptr, i64, i64 }, ptr %a68
|
|
%t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t73 = load { ptr, i64, i64 }, ptr %t72
|
|
store { ptr, i64, i64 } %t71, ptr %a75
|
|
store { ptr, i64, i64 } %t73, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
%t78 = call %S.gen.Val @finch.gen.callFn(ptr %t64, i64 %t65, %S.ast.Node %t66, i64 1, { ptr, i64, i64 } %t77, { ptr, i64, i64 } { ptr @.str.4938, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.4939, i64 0, i64 0 })
|
|
ret %S.gen.Val %t78
|
|
endif7495:
|
|
%t79 = load ptr, ptr %a1
|
|
%t80 = load { ptr, i64, i64 }, ptr %a31
|
|
%t81 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t82 = load { ptr, i64, i64 }, ptr %t81
|
|
%t83 = call i64 @finch.gen.findTemplate(ptr %t79, { ptr, i64, i64 } %t80, { ptr, i64, i64 } %t82, { ptr, i64, i64 } { ptr @.str.4940, i64 0, i64 0 }, i1 false)
|
|
store i64 %t83, ptr %a84
|
|
%t85 = load i64, ptr %a84
|
|
%t86 = icmp sge i64 %t85, 0
|
|
br i1 %t86, label %then7496, label %endif7498
|
|
then7496:
|
|
%t87 = load ptr, ptr %a1
|
|
%t88 = load %S.ast.Node, ptr %a2
|
|
%t89 = load i64, ptr %a84
|
|
%t90 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } %t90, ptr %a92
|
|
store { ptr, i64, i64 } { ptr @.str.4941, i64 1, i64 0 }, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
%t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t96 = load { ptr, i64, i64 }, ptr %t95
|
|
store { ptr, i64, i64 } %t94, ptr %a98
|
|
store { ptr, i64, i64 } %t96, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
%t101 = call %S.gen.Val @finch.gen.genericCall(ptr %t87, %S.ast.Node %t88, i64 %t89, i64 1, { ptr, i64, i64 } %t100)
|
|
ret %S.gen.Val %t101
|
|
endif7498:
|
|
%t102 = load ptr, ptr %a1
|
|
%t103 = load { ptr, i64, i64 }, ptr %a31
|
|
%t104 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t105 = load { ptr, i64, i64 }, ptr %t104
|
|
%t106 = call i64 @finch.gen.findEnum(ptr %t102, { ptr, i64, i64 } %t103, { ptr, i64, i64 } %t105)
|
|
store i64 %t106, ptr %a107
|
|
%t108 = load i64, ptr %a107
|
|
%t109 = icmp sge i64 %t108, 0
|
|
br i1 %t109, label %then7499, label %endif7501
|
|
then7499:
|
|
%t110 = load ptr, ptr %a1
|
|
%t111 = load %S.ast.Node, ptr %a2
|
|
%t112 = load i64, ptr %a107
|
|
%t113 = call %S.gen.Val @finch.gen.enumFrom(ptr %t110, %S.ast.Node %t111, i64 %t112)
|
|
ret %S.gen.Val %t113
|
|
endif7501:
|
|
%t114 = load ptr, ptr %a1
|
|
%t115 = load { ptr, i64, i64 }, ptr %a31
|
|
%t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t117 = load { ptr, i64, i64 }, ptr %t116
|
|
%t118 = call i64 @finch.gen.findStruct(ptr %t114, { ptr, i64, i64 } %t115, { ptr, i64, i64 } %t117)
|
|
store i64 %t118, ptr %a119
|
|
%t120 = load i64, ptr %a119
|
|
%t121 = icmp sge i64 %t120, 0
|
|
br i1 %t121, label %then7502, label %endif7504
|
|
then7502:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a122
|
|
%t123 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1
|
|
%t125 = load i64, ptr %t124
|
|
store i64 1, ptr %a126
|
|
br label %for.cond7505
|
|
for.cond7505:
|
|
%t127 = load i64, ptr %a126
|
|
%t128 = icmp slt i64 %t127, %t125
|
|
br i1 %t128, label %for.body7506, label %for.end7508
|
|
for.body7506:
|
|
%t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1
|
|
%t130 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t131 = load i64, ptr %a126
|
|
%t132 = load { ptr, i64, i64 }, ptr %t130
|
|
%t133 = extractvalue { ptr, i64, i64 } %t132, 1
|
|
%t134 = icmp uge i64 %t131, %t133
|
|
br i1 %t134, label %range7509, label %inrange7510
|
|
range7509:
|
|
call void @finch_panic_index(ptr @.str.4942, i64 4508, i64 %t131, i64 %t133)
|
|
unreachable
|
|
inrange7510:
|
|
%t135 = extractvalue { ptr, i64, i64 } %t132, 0
|
|
%t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 %t131
|
|
%t137 = load %S.ast.Node, ptr %t136
|
|
store %S.ast.Node %t137, ptr %a138
|
|
call void @finch.copy.S_ast_Node(ptr %a139, ptr %a138)
|
|
%t140 = load %S.ast.Node, ptr %a139
|
|
%t141 = load i64, ptr %t129
|
|
%t142 = add i64 %t141, 1
|
|
call void @finch_arr_reserve(ptr %a122, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64))
|
|
%t143 = load ptr, ptr %a122
|
|
%t144 = getelementptr inbounds %S.ast.Node, ptr %t143, i64 %t141
|
|
store %S.ast.Node %t140, ptr %t144
|
|
store i64 %t142, ptr %t129
|
|
br label %for.step7507
|
|
for.step7507:
|
|
%t145 = load i64, ptr %a126
|
|
%t146 = add i64 %t145, 1
|
|
store i64 %t146, ptr %a126
|
|
br label %for.cond7505
|
|
for.end7508:
|
|
%t147 = load ptr, ptr %a1
|
|
%t148 = load i64, ptr %a119
|
|
%t149 = load { ptr, i64, i64 }, ptr %a122
|
|
%t150 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10
|
|
%t151 = load { ptr, i64, i64 }, ptr %t150
|
|
%t152 = load %S.ast.Node, ptr %a2
|
|
%t153 = call %S.gen.Val @finch.gen.construct(ptr %t147, i64 %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t151, %S.ast.Node %t152)
|
|
ret %S.gen.Val %t153
|
|
endif7504:
|
|
%t154 = load ptr, ptr %a1
|
|
%t155 = load %S.ast.Node, ptr %a2
|
|
%t156 = load { ptr, i64, i64 }, ptr %a31
|
|
store { ptr, i64, i64 } { ptr @.str.4943, i64 12, i64 0 }, ptr %a158
|
|
store { ptr, i64, i64 } %t156, ptr %a159
|
|
call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159)
|
|
%t160 = load { ptr, i64, i64 }, ptr %a157
|
|
store { ptr, i64, i64 } %t160, ptr %a162
|
|
store { ptr, i64, i64 } { ptr @.str.4944, i64 35, i64 0 }, ptr %a163
|
|
call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163)
|
|
%t164 = load { ptr, i64, i64 }, ptr %a161
|
|
%t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t166 = load { ptr, i64, i64 }, ptr %t165
|
|
store { ptr, i64, i64 } %t164, ptr %a168
|
|
store { ptr, i64, i64 } %t166, ptr %a169
|
|
call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169)
|
|
%t170 = load { ptr, i64, i64 }, ptr %a167
|
|
store { ptr, i64, i64 } %t170, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.4945, i64 1, i64 0 }, ptr %a173
|
|
call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173)
|
|
%t174 = load { ptr, i64, i64 }, ptr %a171
|
|
call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } %t174)
|
|
br label %endif7489
|
|
endif7489:
|
|
%t175 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t176 = call ptr @finch_alloc(i64 %t175)
|
|
%t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.4946, i64 4, i64 0 }, ptr %t177
|
|
%t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.4947, i64 3, i64 0 }, ptr %t178
|
|
%t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.4948, i64 6, i64 0 }, ptr %t179
|
|
%t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.4949, i64 6, i64 0 }, ptr %t180
|
|
%t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.4950, i64 5, i64 0 }, ptr %t181
|
|
%t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.4951, i64 6, i64 0 }, ptr %t182
|
|
%t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.4952, i64 4, i64 0 }, ptr %t183
|
|
%t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.4953, i64 7, i64 0 }, ptr %t184
|
|
%t185 = insertvalue { ptr, i64, i64 } undef, ptr %t176, 0
|
|
%t186 = insertvalue { ptr, i64, i64 } %t185, i64 8, 1
|
|
%t187 = insertvalue { ptr, i64, i64 } %t186, i64 8, 2
|
|
store { ptr, i64, i64 } %t187, ptr %a188
|
|
%t189 = load ptr, ptr %a1
|
|
%t190 = load %S.ast.Node, ptr %a13
|
|
%t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a188, i32 0, i32 1
|
|
%t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t193 = load { ptr, i64, i64 }, ptr %t192
|
|
store i64 -1, ptr %a194
|
|
%t195 = load i64, ptr %t191
|
|
%t196 = load ptr, ptr %a188
|
|
store i64 0, ptr %a197
|
|
br label %find.cond7511
|
|
find.cond7511:
|
|
%t198 = load i64, ptr %a197
|
|
%t199 = icmp slt i64 %t198, %t195
|
|
br i1 %t199, label %find.body7512, label %find.end7515
|
|
find.body7512:
|
|
%t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t196, i64 %t198
|
|
%t201 = load { ptr, i64, i64 }, ptr %t200
|
|
store { ptr, i64, i64 } %t201, ptr %a202
|
|
store { ptr, i64, i64 } %t193, ptr %a203
|
|
%t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203)
|
|
%t205 = icmp ne i32 %t204, 0
|
|
br i1 %t205, label %find.hit7513, label %find.next7514
|
|
find.hit7513:
|
|
store i64 %t198, ptr %a194
|
|
br label %find.end7515
|
|
find.next7514:
|
|
%t206 = add i64 %t198, 1
|
|
store i64 %t206, ptr %a197
|
|
br label %find.cond7511
|
|
find.end7515:
|
|
%t207 = load i64, ptr %a194
|
|
%t208 = icmp sge i64 %t207, 0
|
|
%t209 = call %S.gen.Ref @finch.gen.ref(ptr %t189, %S.ast.Node %t190, i1 %t208)
|
|
store %S.gen.Ref %t209, ptr %a210
|
|
%t211 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2
|
|
%t212 = getelementptr inbounds %S.gen.Val, ptr %t211, i32 0, i32 1
|
|
%t213 = load %S.ast.Type, ptr %t212
|
|
store %S.ast.Type %t213, ptr %a214
|
|
call void @finch.copy.S_ast_Type(ptr %a215, ptr %a214)
|
|
%t216 = load %S.ast.Type, ptr %a215
|
|
store %S.ast.Type %t216, ptr %a217
|
|
%t218 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0
|
|
%t219 = load i1, ptr %t218
|
|
br i1 %t219, label %then7516, label %endif7518
|
|
then7516:
|
|
%t220 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1
|
|
%t221 = getelementptr inbounds %S.gen.Place, ptr %t220, i32 0, i32 1
|
|
%t222 = load %S.ast.Type, ptr %t221
|
|
store %S.ast.Type %t222, ptr %a223
|
|
call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223)
|
|
%t225 = load %S.ast.Type, ptr %a224
|
|
store %S.ast.Type %t225, ptr %a217
|
|
br label %endif7518
|
|
endif7518:
|
|
%t226 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0
|
|
%t227 = load { ptr, i64, i64 }, ptr %t226
|
|
store { ptr, i64, i64 } %t227, ptr %a228
|
|
store { ptr, i64, i64 } { ptr @.str.4954, i64 5, i64 0 }, ptr %a229
|
|
%t230 = call i32 @finch_str_eq(ptr %a228, ptr %a229)
|
|
%t231 = icmp ne i32 %t230, 0
|
|
br i1 %t231, label %then7519, label %endif7521
|
|
then7519:
|
|
store { ptr, i64, i64 } { ptr @.str.4955, i64 0, i64 0 }, ptr %a232
|
|
%t233 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0
|
|
%t234 = load i1, ptr %t233
|
|
br i1 %t234, label %then7522, label %else7523
|
|
then7522:
|
|
%t235 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1
|
|
%t236 = getelementptr inbounds %S.gen.Place, ptr %t235, i32 0, i32 0
|
|
%t237 = load { ptr, i64, i64 }, ptr %t236
|
|
store { ptr, i64, i64 } %t237, ptr %a238
|
|
call void @finch_str_copy(ptr %a239, ptr %a238)
|
|
%t240 = load { ptr, i64, i64 }, ptr %a239
|
|
store { ptr, i64, i64 } %t240, ptr %a232
|
|
br label %endif7524
|
|
else7523:
|
|
%t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a188, i32 0, i32 1
|
|
%t242 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t243 = load { ptr, i64, i64 }, ptr %t242
|
|
store i64 -1, ptr %a244
|
|
%t245 = load i64, ptr %t241
|
|
%t246 = load ptr, ptr %a188
|
|
store i64 0, ptr %a247
|
|
br label %find.cond7525
|
|
find.cond7525:
|
|
%t248 = load i64, ptr %a247
|
|
%t249 = icmp slt i64 %t248, %t245
|
|
br i1 %t249, label %find.body7526, label %find.end7529
|
|
find.body7526:
|
|
%t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t248
|
|
%t251 = load { ptr, i64, i64 }, ptr %t250
|
|
store { ptr, i64, i64 } %t251, ptr %a252
|
|
store { ptr, i64, i64 } %t243, ptr %a253
|
|
%t254 = call i32 @finch_str_eq(ptr %a252, ptr %a253)
|
|
%t255 = icmp ne i32 %t254, 0
|
|
br i1 %t255, label %find.hit7527, label %find.next7528
|
|
find.hit7527:
|
|
store i64 %t248, ptr %a244
|
|
br label %find.end7529
|
|
find.next7528:
|
|
%t256 = add i64 %t248, 1
|
|
store i64 %t256, ptr %a247
|
|
br label %find.cond7525
|
|
find.end7529:
|
|
%t257 = load i64, ptr %a244
|
|
%t258 = icmp sge i64 %t257, 0
|
|
br i1 %t258, label %then7530, label %endif7532
|
|
then7530:
|
|
%t259 = load ptr, ptr %a1
|
|
%t260 = load %S.ast.Node, ptr %a2
|
|
%t261 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t262 = load { ptr, i64, i64 }, ptr %t261
|
|
store { ptr, i64, i64 } %t262, ptr %a264
|
|
store { ptr, i64, i64 } { ptr @.str.4956, i64 63, i64 0 }, ptr %a265
|
|
call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265)
|
|
%t266 = load { ptr, i64, i64 }, ptr %a263
|
|
call void @finch.gen.fail(ptr %t259, %S.ast.Node %t260, { ptr, i64, i64 } %t266)
|
|
br label %endif7532
|
|
endif7532:
|
|
%t267 = load ptr, ptr %a1
|
|
%t268 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2
|
|
%t269 = load %S.gen.Val, ptr %t268
|
|
%t270 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t267, %S.gen.Val %t269)
|
|
store { ptr, i64, i64 } %t270, ptr %a232
|
|
br label %endif7524
|
|
endif7524:
|
|
%t271 = load ptr, ptr %a1
|
|
%t272 = load %S.ast.Node, ptr %a2
|
|
%t273 = load { ptr, i64, i64 }, ptr %a232
|
|
%t274 = load %S.ast.Type, ptr %a217
|
|
%t275 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t271, %S.ast.Node %t272, { ptr, i64, i64 } %t273, %S.ast.Type %t274)
|
|
ret %S.gen.Val %t275
|
|
endif7521:
|
|
%t276 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0
|
|
%t277 = load { ptr, i64, i64 }, ptr %t276
|
|
store { ptr, i64, i64 } %t277, ptr %a278
|
|
store { ptr, i64, i64 } { ptr @.str.4957, i64 3, i64 0 }, ptr %a279
|
|
%t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279)
|
|
%t281 = icmp ne i32 %t280, 0
|
|
br i1 %t281, label %then7533, label %endif7535
|
|
then7533:
|
|
%t282 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2
|
|
%t283 = load %S.gen.Val, ptr %t282
|
|
store %S.gen.Val %t283, ptr %a284
|
|
call void @finch.copy.S_gen_Val(ptr %a285, ptr %a284)
|
|
%t286 = load %S.gen.Val, ptr %a285
|
|
store %S.gen.Val %t286, ptr %a287
|
|
%t288 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0
|
|
%t289 = load i1, ptr %t288
|
|
br i1 %t289, label %then7536, label %endif7538
|
|
then7536:
|
|
%t290 = load ptr, ptr %a1
|
|
%t291 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1
|
|
%t292 = getelementptr inbounds %S.gen.Place, ptr %t291, i32 0, i32 0
|
|
%t293 = load { ptr, i64, i64 }, ptr %t292
|
|
%t294 = call { ptr, i64, i64 } @finch.gen.load(ptr %t290, { ptr, i64, i64 } { ptr @.str.4958, i64 17, i64 0 }, { ptr, i64, i64 } %t293)
|
|
%t295 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t294, 0
|
|
%t296 = load %S.ast.Type, ptr %a217
|
|
store %S.ast.Type %t296, ptr %a297
|
|
call void @finch.copy.S_ast_Type(ptr %a298, ptr %a297)
|
|
%t299 = load %S.ast.Type, ptr %a298
|
|
%t300 = insertvalue %S.gen.Val %t295, %S.ast.Type %t299, 1
|
|
store %S.gen.Val %t300, ptr %a287
|
|
br label %endif7538
|
|
endif7538:
|
|
%t301 = load ptr, ptr %a1
|
|
%t302 = load %S.ast.Node, ptr %a2
|
|
%t303 = load ptr, ptr %a1
|
|
%t304 = load %S.gen.Val, ptr %a287
|
|
%t305 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t303, %S.gen.Val %t304)
|
|
%t306 = call %S.gen.Val @finch.gen.strMethod(ptr %t301, %S.ast.Node %t302, { ptr, i64, i64 } %t305)
|
|
ret %S.gen.Val %t306
|
|
endif7535:
|
|
%t307 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0
|
|
%t308 = load { ptr, i64, i64 }, ptr %t307
|
|
store { ptr, i64, i64 } %t308, ptr %a309
|
|
store { ptr, i64, i64 } { ptr @.str.4959, i64 3, i64 0 }, ptr %a310
|
|
%t311 = call i32 @finch_str_eq(ptr %a309, ptr %a310)
|
|
%t312 = icmp ne i32 %t311, 0
|
|
br i1 %t312, label %then7539, label %endif7541
|
|
then7539:
|
|
store { ptr, i64, i64 } { ptr @.str.4960, i64 0, i64 0 }, ptr %a313
|
|
%t314 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0
|
|
%t315 = load i1, ptr %t314
|
|
br i1 %t315, label %then7542, label %else7543
|
|
then7542:
|
|
%t316 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1
|
|
%t317 = getelementptr inbounds %S.gen.Place, ptr %t316, i32 0, i32 0
|
|
%t318 = load { ptr, i64, i64 }, ptr %t317
|
|
store { ptr, i64, i64 } %t318, ptr %a319
|
|
call void @finch_str_copy(ptr %a320, ptr %a319)
|
|
%t321 = load { ptr, i64, i64 }, ptr %a320
|
|
store { ptr, i64, i64 } %t321, ptr %a313
|
|
br label %endif7544
|
|
else7543:
|
|
%t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %a188, i32 0, i32 1
|
|
%t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t324 = load { ptr, i64, i64 }, ptr %t323
|
|
store i64 -1, ptr %a325
|
|
%t326 = load i64, ptr %t322
|
|
%t327 = load ptr, ptr %a188
|
|
store i64 0, ptr %a328
|
|
br label %find.cond7545
|
|
find.cond7545:
|
|
%t329 = load i64, ptr %a328
|
|
%t330 = icmp slt i64 %t329, %t326
|
|
br i1 %t330, label %find.body7546, label %find.end7549
|
|
find.body7546:
|
|
%t331 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t329
|
|
%t332 = load { ptr, i64, i64 }, ptr %t331
|
|
store { ptr, i64, i64 } %t332, ptr %a333
|
|
store { ptr, i64, i64 } %t324, ptr %a334
|
|
%t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334)
|
|
%t336 = icmp ne i32 %t335, 0
|
|
br i1 %t336, label %find.hit7547, label %find.next7548
|
|
find.hit7547:
|
|
store i64 %t329, ptr %a325
|
|
br label %find.end7549
|
|
find.next7548:
|
|
%t337 = add i64 %t329, 1
|
|
store i64 %t337, ptr %a328
|
|
br label %find.cond7545
|
|
find.end7549:
|
|
%t338 = load i64, ptr %a325
|
|
%t339 = icmp sge i64 %t338, 0
|
|
br i1 %t339, label %then7550, label %endif7552
|
|
then7550:
|
|
%t340 = load ptr, ptr %a1
|
|
%t341 = load %S.ast.Node, ptr %a2
|
|
%t342 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t343 = load { ptr, i64, i64 }, ptr %t342
|
|
store { ptr, i64, i64 } %t343, ptr %a345
|
|
store { ptr, i64, i64 } { ptr @.str.4961, i64 61, i64 0 }, ptr %a346
|
|
call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346)
|
|
%t347 = load { ptr, i64, i64 }, ptr %a344
|
|
call void @finch.gen.fail(ptr %t340, %S.ast.Node %t341, { ptr, i64, i64 } %t347)
|
|
br label %endif7552
|
|
endif7552:
|
|
%t348 = load ptr, ptr %a1
|
|
%t349 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2
|
|
%t350 = load %S.gen.Val, ptr %t349
|
|
%t351 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t348, %S.gen.Val %t350)
|
|
store { ptr, i64, i64 } %t351, ptr %a313
|
|
br label %endif7544
|
|
endif7544:
|
|
%t352 = load ptr, ptr %a1
|
|
%t353 = load %S.ast.Node, ptr %a2
|
|
%t354 = load { ptr, i64, i64 }, ptr %a313
|
|
%t355 = load %S.ast.Type, ptr %a217
|
|
%t356 = call %S.gen.Val @finch.gen.mapMethod(ptr %t352, %S.ast.Node %t353, { ptr, i64, i64 } %t354, %S.ast.Type %t355)
|
|
ret %S.gen.Val %t356
|
|
endif7541:
|
|
%t357 = load %S.ast.Type, ptr %a217
|
|
store %S.ast.Type %t357, ptr %a358
|
|
call void @finch.copy.S_ast_Type(ptr %a359, ptr %a358)
|
|
%t360 = load %S.ast.Type, ptr %a359
|
|
store %S.ast.Type %t360, ptr %a361
|
|
store { ptr, i64, i64 } { ptr @.str.4962, i64 0, i64 0 }, ptr %a362
|
|
%t363 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0
|
|
%t364 = load { ptr, i64, i64 }, ptr %t363
|
|
store { ptr, i64, i64 } %t364, ptr %a365
|
|
store { ptr, i64, i64 } { ptr @.str.4963, i64 3, i64 0 }, ptr %a366
|
|
%t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366)
|
|
%t368 = icmp ne i32 %t367, 0
|
|
br label %logic.from7553
|
|
logic.from7553:
|
|
br i1 %t368, label %logic.rhs7554, label %logic.end7555
|
|
logic.rhs7554:
|
|
%t369 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1
|
|
%t370 = getelementptr inbounds { ptr, i64, i64 }, ptr %t369, i32 0, i32 1
|
|
%t371 = load i64, ptr %t370
|
|
%t372 = icmp sgt i64 %t371, 0
|
|
br label %logic.rend7556
|
|
logic.rend7556:
|
|
br label %logic.end7555
|
|
logic.end7555:
|
|
%t373 = phi i1 [ false, %logic.from7553 ], [ %t372, %logic.rend7556 ]
|
|
br label %logic.from7557
|
|
logic.from7557:
|
|
br i1 %t373, label %logic.rhs7558, label %logic.end7559
|
|
logic.rhs7558:
|
|
%t374 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1
|
|
%t375 = load { ptr, i64, i64 }, ptr %t374
|
|
%t376 = extractvalue { ptr, i64, i64 } %t375, 1
|
|
%t377 = icmp uge i64 0, %t376
|
|
br i1 %t377, label %range7560, label %inrange7561
|
|
range7560:
|
|
call void @finch_panic_index(ptr @.str.4964, i64 4553, i64 0, i64 %t376)
|
|
unreachable
|
|
inrange7561:
|
|
%t378 = extractvalue { ptr, i64, i64 } %t375, 0
|
|
%t379 = getelementptr inbounds %S.ast.Type, ptr %t378, i64 0
|
|
%t380 = getelementptr inbounds %S.ast.Type, ptr %t379, i32 0, i32 0
|
|
%t381 = load { ptr, i64, i64 }, ptr %t380
|
|
store { ptr, i64, i64 } %t381, ptr %a382
|
|
store { ptr, i64, i64 } { ptr @.str.4965, i64 6, i64 0 }, ptr %a383
|
|
%t384 = call i32 @finch_str_eq(ptr %a382, ptr %a383)
|
|
%t385 = icmp ne i32 %t384, 0
|
|
br label %logic.rend7562
|
|
logic.rend7562:
|
|
br label %logic.end7559
|
|
logic.end7559:
|
|
%t386 = phi i1 [ false, %logic.from7557 ], [ %t385, %logic.rend7562 ]
|
|
br i1 %t386, label %then7563, label %else7564
|
|
then7563:
|
|
%t387 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2
|
|
%t388 = getelementptr inbounds %S.gen.Val, ptr %t387, i32 0, i32 0
|
|
%t389 = load { ptr, i64, i64 }, ptr %t388
|
|
store { ptr, i64, i64 } %t389, ptr %a390
|
|
call void @finch_str_copy(ptr %a391, ptr %a390)
|
|
%t392 = load { ptr, i64, i64 }, ptr %a391
|
|
store { ptr, i64, i64 } %t392, ptr %a393
|
|
%t394 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0
|
|
%t395 = load i1, ptr %t394
|
|
br i1 %t395, label %then7566, label %endif7568
|
|
then7566:
|
|
%t396 = load ptr, ptr %a1
|
|
%t397 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1
|
|
%t398 = getelementptr inbounds %S.gen.Place, ptr %t397, i32 0, i32 0
|
|
%t399 = load { ptr, i64, i64 }, ptr %t398
|
|
%t400 = call { ptr, i64, i64 } @finch.gen.load(ptr %t396, { ptr, i64, i64 } { ptr @.str.4966, i64 3, i64 0 }, { ptr, i64, i64 } %t399)
|
|
store { ptr, i64, i64 } %t400, ptr %a393
|
|
br label %endif7568
|
|
endif7568:
|
|
%t401 = load ptr, ptr %a1
|
|
%t402 = load ptr, ptr %a1
|
|
%t403 = load { ptr, i64, i64 }, ptr %a393
|
|
store { ptr, i64, i64 } { ptr @.str.4967, i64 12, i64 0 }, ptr %a405
|
|
store { ptr, i64, i64 } %t403, ptr %a406
|
|
call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406)
|
|
%t407 = load { ptr, i64, i64 }, ptr %a404
|
|
store { ptr, i64, i64 } %t407, ptr %a409
|
|
store { ptr, i64, i64 } { ptr @.str.4968, i64 6, i64 0 }, ptr %a410
|
|
call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410)
|
|
%t411 = load { ptr, i64, i64 }, ptr %a408
|
|
%t412 = call { ptr, i64, i64 } @finch.gen.op(ptr %t402, { ptr, i64, i64 } %t411)
|
|
%t413 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t414 = load { ptr, i64, i64 }, ptr %t413
|
|
store { ptr, i64, i64 } { ptr @.str.4969, i64 8, i64 0 }, ptr %a416
|
|
store { ptr, i64, i64 } %t414, ptr %a417
|
|
call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417)
|
|
%t418 = load { ptr, i64, i64 }, ptr %a415
|
|
store { ptr, i64, i64 } %t418, ptr %a420
|
|
store { ptr, i64, i64 } { ptr @.str.4970, i64 20, i64 0 }, ptr %a421
|
|
call void @finch_str_concat(ptr %a419, ptr %a420, ptr %a421)
|
|
%t422 = load { ptr, i64, i64 }, ptr %a419
|
|
%t423 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.panicIf(ptr %t401, { ptr, i64, i64 } %t412, { ptr, i64, i64 } %t422, %S.ast.Node %t423)
|
|
%t424 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1
|
|
%t425 = load { ptr, i64, i64 }, ptr %t424
|
|
%t426 = extractvalue { ptr, i64, i64 } %t425, 1
|
|
%t427 = icmp uge i64 0, %t426
|
|
br i1 %t427, label %range7569, label %inrange7570
|
|
range7569:
|
|
call void @finch_panic_index(ptr @.str.4971, i64 4559, i64 0, i64 %t426)
|
|
unreachable
|
|
inrange7570:
|
|
%t428 = extractvalue { ptr, i64, i64 } %t425, 0
|
|
%t429 = getelementptr inbounds %S.ast.Type, ptr %t428, i64 0
|
|
%t430 = load %S.ast.Type, ptr %t429
|
|
store %S.ast.Type %t430, ptr %a431
|
|
call void @finch.copy.S_ast_Type(ptr %a432, ptr %a431)
|
|
%t433 = load %S.ast.Type, ptr %a432
|
|
store %S.ast.Type %t433, ptr %a361
|
|
%t434 = load { ptr, i64, i64 }, ptr %a393
|
|
store { ptr, i64, i64 } %t434, ptr %a435
|
|
call void @finch_str_copy(ptr %a436, ptr %a435)
|
|
%t437 = load { ptr, i64, i64 }, ptr %a436
|
|
store { ptr, i64, i64 } %t437, ptr %a362
|
|
br label %endif7565
|
|
else7564:
|
|
%t438 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0
|
|
%t439 = load { ptr, i64, i64 }, ptr %t438
|
|
store { ptr, i64, i64 } %t439, ptr %a440
|
|
store { ptr, i64, i64 } { ptr @.str.4972, i64 6, i64 0 }, ptr %a441
|
|
%t442 = call i32 @finch_str_eq(ptr %a440, ptr %a441)
|
|
%t443 = icmp ne i32 %t442, 0
|
|
br label %logic.from7571
|
|
logic.from7571:
|
|
br i1 %t443, label %logic.end7573, label %logic.rhs7572
|
|
logic.rhs7572:
|
|
%t444 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0
|
|
%t445 = load { ptr, i64, i64 }, ptr %t444
|
|
store { ptr, i64, i64 } %t445, ptr %a446
|
|
store { ptr, i64, i64 } { ptr @.str.4973, i64 4, i64 0 }, ptr %a447
|
|
%t448 = call i32 @finch_str_eq(ptr %a446, ptr %a447)
|
|
%t449 = icmp ne i32 %t448, 0
|
|
br label %logic.rend7574
|
|
logic.rend7574:
|
|
br label %logic.end7573
|
|
logic.end7573:
|
|
%t450 = phi i1 [ true, %logic.from7571 ], [ %t449, %logic.rend7574 ]
|
|
br i1 %t450, label %then7575, label %endif7577
|
|
then7575:
|
|
%t451 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0
|
|
%t452 = load i1, ptr %t451
|
|
br i1 %t452, label %then7578, label %else7579
|
|
then7578:
|
|
%t453 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1
|
|
%t454 = getelementptr inbounds %S.gen.Place, ptr %t453, i32 0, i32 0
|
|
%t455 = load { ptr, i64, i64 }, ptr %t454
|
|
store { ptr, i64, i64 } %t455, ptr %a456
|
|
call void @finch_str_copy(ptr %a457, ptr %a456)
|
|
%t458 = load { ptr, i64, i64 }, ptr %a457
|
|
store { ptr, i64, i64 } %t458, ptr %a362
|
|
br label %endif7580
|
|
else7579:
|
|
%t459 = load ptr, ptr %a1
|
|
%t460 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2
|
|
%t461 = load %S.gen.Val, ptr %t460
|
|
%t462 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t459, %S.gen.Val %t461)
|
|
store { ptr, i64, i64 } %t462, ptr %a362
|
|
br label %endif7580
|
|
endif7580:
|
|
br label %endif7577
|
|
endif7577:
|
|
br label %endif7565
|
|
endif7565:
|
|
%t463 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0
|
|
%t464 = load { ptr, i64, i64 }, ptr %t463
|
|
store { ptr, i64, i64 } %t464, ptr %a465
|
|
store { ptr, i64, i64 } { ptr @.str.4974, i64 6, i64 0 }, ptr %a466
|
|
%t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466)
|
|
%t468 = icmp ne i32 %t467, 0
|
|
br label %logic.from7581
|
|
logic.from7581:
|
|
br i1 %t468, label %logic.end7583, label %logic.rhs7582
|
|
logic.rhs7582:
|
|
%t469 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0
|
|
%t470 = load { ptr, i64, i64 }, ptr %t469
|
|
store { ptr, i64, i64 } %t470, ptr %a471
|
|
store { ptr, i64, i64 } { ptr @.str.4975, i64 4, i64 0 }, ptr %a472
|
|
%t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472)
|
|
%t474 = icmp ne i32 %t473, 0
|
|
br label %logic.rend7584
|
|
logic.rend7584:
|
|
br label %logic.end7583
|
|
logic.end7583:
|
|
%t475 = phi i1 [ true, %logic.from7581 ], [ %t474, %logic.rend7584 ]
|
|
br i1 %t475, label %then7585, label %endif7587
|
|
then7585:
|
|
%t476 = load ptr, ptr %a1
|
|
%t477 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 3
|
|
%t478 = load { ptr, i64, i64 }, ptr %t477
|
|
%t479 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 2
|
|
%t480 = load { ptr, i64, i64 }, ptr %t479
|
|
%t481 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t482 = load { ptr, i64, i64 }, ptr %t481
|
|
%t483 = call i64 @finch.gen.findMethod(ptr %t476, { ptr, i64, i64 } %t478, { ptr, i64, i64 } %t480, { ptr, i64, i64 } %t482)
|
|
store i64 %t483, ptr %a484
|
|
%t485 = load i64, ptr %a484
|
|
%t486 = icmp slt i64 %t485, 0
|
|
br label %logic.from7588
|
|
logic.from7588:
|
|
br i1 %t486, label %logic.rhs7589, label %logic.end7590
|
|
logic.rhs7589:
|
|
%t487 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0
|
|
%t488 = load { ptr, i64, i64 }, ptr %t487
|
|
store { ptr, i64, i64 } %t488, ptr %a489
|
|
store { ptr, i64, i64 } { ptr @.str.4976, i64 6, i64 0 }, ptr %a490
|
|
%t491 = call i32 @finch_str_eq(ptr %a489, ptr %a490)
|
|
%t492 = icmp ne i32 %t491, 0
|
|
br label %logic.rend7591
|
|
logic.rend7591:
|
|
br label %logic.end7590
|
|
logic.end7590:
|
|
%t493 = phi i1 [ false, %logic.from7588 ], [ %t492, %logic.rend7591 ]
|
|
br i1 %t493, label %then7592, label %endif7594
|
|
then7592:
|
|
%t494 = load ptr, ptr %a1
|
|
%t495 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 3
|
|
%t496 = load { ptr, i64, i64 }, ptr %t495
|
|
%t497 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 2
|
|
%t498 = load { ptr, i64, i64 }, ptr %t497
|
|
%t499 = call i64 @finch.gen.findStruct(ptr %t494, { ptr, i64, i64 } %t496, { ptr, i64, i64 } %t498)
|
|
store i64 %t499, ptr %a500
|
|
%t501 = load ptr, ptr %a1
|
|
%t502 = icmp eq ptr %t501, null
|
|
br i1 %t502, label %panic7595, label %ok7596
|
|
panic7595:
|
|
call void @finch_panic(ptr @.str.4977, i64 4572, ptr @.str.4978)
|
|
unreachable
|
|
ok7596:
|
|
%t503 = getelementptr inbounds %S.gen.Gen, ptr %t501, i32 0, i32 15
|
|
%t504 = load i64, ptr %a500
|
|
%t505 = load { ptr, i64, i64 }, ptr %t503
|
|
%t506 = extractvalue { ptr, i64, i64 } %t505, 1
|
|
%t507 = icmp uge i64 %t504, %t506
|
|
br i1 %t507, label %range7597, label %inrange7598
|
|
range7597:
|
|
call void @finch_panic_index(ptr @.str.4979, i64 4572, i64 %t504, i64 %t506)
|
|
unreachable
|
|
inrange7598:
|
|
%t508 = extractvalue { ptr, i64, i64 } %t505, 0
|
|
%t509 = getelementptr inbounds %S.gen.StructDef, ptr %t508, i64 %t504
|
|
%t510 = getelementptr inbounds %S.gen.StructDef, ptr %t509, i32 0, i32 5
|
|
%t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %t510, i32 0, i32 1
|
|
%t512 = load i64, ptr %t511
|
|
%t513 = icmp sgt i64 %t512, 0
|
|
br i1 %t513, label %then7599, label %endif7601
|
|
then7599:
|
|
%t514 = load ptr, ptr %a1
|
|
%t515 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 3
|
|
%t516 = load { ptr, i64, i64 }, ptr %t515
|
|
%t517 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t518 = load { ptr, i64, i64 }, ptr %t517
|
|
%t519 = load ptr, ptr %a1
|
|
%t520 = icmp eq ptr %t519, null
|
|
br i1 %t520, label %panic7602, label %ok7603
|
|
panic7602:
|
|
call void @finch_panic(ptr @.str.4980, i64 4573, ptr @.str.4981)
|
|
unreachable
|
|
ok7603:
|
|
%t521 = getelementptr inbounds %S.gen.Gen, ptr %t519, i32 0, i32 15
|
|
%t522 = load i64, ptr %a500
|
|
%t523 = load { ptr, i64, i64 }, ptr %t521
|
|
%t524 = extractvalue { ptr, i64, i64 } %t523, 1
|
|
%t525 = icmp uge i64 %t522, %t524
|
|
br i1 %t525, label %range7604, label %inrange7605
|
|
range7604:
|
|
call void @finch_panic_index(ptr @.str.4982, i64 4573, i64 %t522, i64 %t524)
|
|
unreachable
|
|
inrange7605:
|
|
%t526 = extractvalue { ptr, i64, i64 } %t523, 0
|
|
%t527 = getelementptr inbounds %S.gen.StructDef, ptr %t526, i64 %t522
|
|
%t528 = getelementptr inbounds %S.gen.StructDef, ptr %t527, i32 0, i32 5
|
|
%t529 = load { ptr, i64, i64 }, ptr %t528
|
|
%t530 = call i64 @finch.gen.findTemplate(ptr %t514, { ptr, i64, i64 } %t516, { ptr, i64, i64 } %t518, { ptr, i64, i64 } %t529, i1 false)
|
|
store i64 %t530, ptr %a531
|
|
%t532 = load i64, ptr %a531
|
|
%t533 = icmp sge i64 %t532, 0
|
|
br i1 %t533, label %then7606, label %endif7608
|
|
then7606:
|
|
%t534 = load ptr, ptr %a1
|
|
%t535 = load i64, ptr %a531
|
|
%t536 = load ptr, ptr %a1
|
|
%t537 = icmp eq ptr %t536, null
|
|
br i1 %t537, label %panic7609, label %ok7610
|
|
panic7609:
|
|
call void @finch_panic(ptr @.str.4983, i64 4575, ptr @.str.4984)
|
|
unreachable
|
|
ok7610:
|
|
%t538 = getelementptr inbounds %S.gen.Gen, ptr %t536, i32 0, i32 15
|
|
%t539 = load i64, ptr %a500
|
|
%t540 = load { ptr, i64, i64 }, ptr %t538
|
|
%t541 = extractvalue { ptr, i64, i64 } %t540, 1
|
|
%t542 = icmp uge i64 %t539, %t541
|
|
br i1 %t542, label %range7611, label %inrange7612
|
|
range7611:
|
|
call void @finch_panic_index(ptr @.str.4985, i64 4575, i64 %t539, i64 %t541)
|
|
unreachable
|
|
inrange7612:
|
|
%t543 = extractvalue { ptr, i64, i64 } %t540, 0
|
|
%t544 = getelementptr inbounds %S.gen.StructDef, ptr %t543, i64 %t539
|
|
%t545 = getelementptr inbounds %S.gen.StructDef, ptr %t544, i32 0, i32 7
|
|
%t546 = load { ptr, i64, i64 }, ptr %t545
|
|
%t547 = load %S.ast.Type, ptr %a361
|
|
%t548 = load %S.ast.Node, ptr %a2
|
|
%t549 = call i64 @finch.gen.instFn(ptr %t534, i64 %t535, { ptr, i64, i64 } %t546, %S.ast.Type %t547, %S.ast.Node %t548)
|
|
store i64 %t549, ptr %a484
|
|
br label %endif7608
|
|
endif7608:
|
|
br label %endif7601
|
|
endif7601:
|
|
br label %endif7594
|
|
endif7594:
|
|
%t550 = load i64, ptr %a484
|
|
%t551 = icmp slt i64 %t550, 0
|
|
br i1 %t551, label %then7613, label %endif7615
|
|
then7613:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a552
|
|
%t553 = load ptr, ptr %a1
|
|
%t554 = icmp eq ptr %t553, null
|
|
br i1 %t554, label %panic7616, label %ok7617
|
|
panic7616:
|
|
call void @finch_panic(ptr @.str.4986, i64 4581, ptr @.str.4987)
|
|
unreachable
|
|
ok7617:
|
|
%t555 = getelementptr inbounds %S.gen.Gen, ptr %t553, i32 0, i32 14
|
|
store i64 0, ptr %a556
|
|
br label %each.cond7618
|
|
each.cond7618:
|
|
%t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t555, i32 0, i32 1
|
|
%t558 = load i64, ptr %t557
|
|
%t559 = load i64, ptr %a556
|
|
%t560 = icmp slt i64 %t559, %t558
|
|
br i1 %t560, label %each.body7619, label %each.end7621
|
|
each.body7619:
|
|
%t561 = load ptr, ptr %t555
|
|
%t562 = getelementptr inbounds %S.gen.FnSig, ptr %t561, i64 %t559
|
|
%t563 = load %S.gen.FnSig, ptr %t562
|
|
store %S.gen.FnSig %t563, ptr %a564
|
|
%t565 = getelementptr inbounds %S.gen.FnSig, ptr %a564, i32 0, i32 2
|
|
%t566 = load { ptr, i64, i64 }, ptr %t565
|
|
%t567 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 2
|
|
%t568 = load { ptr, i64, i64 }, ptr %t567
|
|
store { ptr, i64, i64 } %t566, ptr %a569
|
|
store { ptr, i64, i64 } %t568, ptr %a570
|
|
%t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570)
|
|
%t572 = icmp ne i32 %t571, 0
|
|
br label %logic.from7622
|
|
logic.from7622:
|
|
br i1 %t572, label %logic.rhs7623, label %logic.end7624
|
|
logic.rhs7623:
|
|
%t573 = getelementptr inbounds %S.gen.FnSig, ptr %a564, i32 0, i32 3
|
|
%t574 = load { ptr, i64, i64 }, ptr %t573
|
|
%t575 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 3
|
|
%t576 = load { ptr, i64, i64 }, ptr %t575
|
|
store { ptr, i64, i64 } %t574, ptr %a577
|
|
store { ptr, i64, i64 } %t576, ptr %a578
|
|
%t579 = call i32 @finch_str_eq(ptr %a577, ptr %a578)
|
|
%t580 = icmp ne i32 %t579, 0
|
|
br label %logic.rend7625
|
|
logic.rend7625:
|
|
br label %logic.end7624
|
|
logic.end7624:
|
|
%t581 = phi i1 [ false, %logic.from7622 ], [ %t580, %logic.rend7625 ]
|
|
br i1 %t581, label %then7626, label %endif7628
|
|
then7626:
|
|
%t582 = getelementptr inbounds { ptr, i64, i64 }, ptr %a552, i32 0, i32 1
|
|
%t583 = getelementptr inbounds %S.gen.FnSig, ptr %a564, i32 0, i32 1
|
|
%t584 = load { ptr, i64, i64 }, ptr %t583
|
|
store { ptr, i64, i64 } %t584, ptr %a585
|
|
call void @finch_str_copy(ptr %a586, ptr %a585)
|
|
%t587 = load { ptr, i64, i64 }, ptr %a586
|
|
%t588 = load i64, ptr %t582
|
|
%t589 = add i64 %t588, 1
|
|
call void @finch_arr_reserve(ptr %a552, i64 %t589, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t590 = load ptr, ptr %a552
|
|
%t591 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i64 %t588
|
|
store { ptr, i64, i64 } %t587, ptr %t591
|
|
store i64 %t589, ptr %t582
|
|
br label %endif7628
|
|
endif7628:
|
|
br label %each.step7620
|
|
each.step7620:
|
|
%t592 = load i64, ptr %a556
|
|
%t593 = add i64 %t592, 1
|
|
store i64 %t593, ptr %a556
|
|
br label %each.cond7618
|
|
each.end7621:
|
|
%t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %a552, i32 0, i32 1
|
|
%t595 = load i64, ptr %t594
|
|
%t596 = icmp eq i64 %t595, 0
|
|
br i1 %t596, label %then7629, label %endif7631
|
|
then7629:
|
|
%t597 = load ptr, ptr %a1
|
|
%t598 = load %S.ast.Node, ptr %a2
|
|
%t599 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0
|
|
%t600 = load { ptr, i64, i64 }, ptr %t599
|
|
store { ptr, i64, i64 } { ptr @.str.4988, i64 4, i64 0 }, ptr %a602
|
|
store { ptr, i64, i64 } %t600, ptr %a603
|
|
call void @finch_str_concat(ptr %a601, ptr %a602, ptr %a603)
|
|
%t604 = load { ptr, i64, i64 }, ptr %a601
|
|
store { ptr, i64, i64 } %t604, ptr %a606
|
|
store { ptr, i64, i64 } { ptr @.str.4989, i64 1, i64 0 }, ptr %a607
|
|
call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607)
|
|
%t608 = load { ptr, i64, i64 }, ptr %a605
|
|
%t609 = load %S.ast.Type, ptr %a361
|
|
%t610 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t609)
|
|
store { ptr, i64, i64 } %t608, ptr %a612
|
|
store { ptr, i64, i64 } %t610, ptr %a613
|
|
call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613)
|
|
%t614 = load { ptr, i64, i64 }, ptr %a611
|
|
store { ptr, i64, i64 } %t614, ptr %a616
|
|
store { ptr, i64, i64 } { ptr @.str.4990, i64 34, i64 0 }, ptr %a617
|
|
call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617)
|
|
%t618 = load { ptr, i64, i64 }, ptr %a615
|
|
%t619 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 2
|
|
%t620 = load { ptr, i64, i64 }, ptr %t619
|
|
store { ptr, i64, i64 } %t618, ptr %a622
|
|
store { ptr, i64, i64 } %t620, ptr %a623
|
|
call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623)
|
|
%t624 = load { ptr, i64, i64 }, ptr %a621
|
|
store { ptr, i64, i64 } %t624, ptr %a626
|
|
store { ptr, i64, i64 } { ptr @.str.4991, i64 1, i64 0 }, ptr %a627
|
|
call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627)
|
|
%t628 = load { ptr, i64, i64 }, ptr %a625
|
|
%t629 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t630 = load { ptr, i64, i64 }, ptr %t629
|
|
store { ptr, i64, i64 } %t628, ptr %a632
|
|
store { ptr, i64, i64 } %t630, ptr %a633
|
|
call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633)
|
|
%t634 = load { ptr, i64, i64 }, ptr %a631
|
|
store { ptr, i64, i64 } %t634, ptr %a636
|
|
store { ptr, i64, i64 } { ptr @.str.4992, i64 13, i64 0 }, ptr %a637
|
|
call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637)
|
|
%t638 = load { ptr, i64, i64 }, ptr %a635
|
|
call void @finch.gen.fail(ptr %t597, %S.ast.Node %t598, { ptr, i64, i64 } %t638)
|
|
br label %endif7631
|
|
endif7631:
|
|
%t639 = load ptr, ptr %a1
|
|
%t640 = load %S.ast.Node, ptr %a2
|
|
%t641 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0
|
|
%t642 = load { ptr, i64, i64 }, ptr %t641
|
|
store { ptr, i64, i64 } { ptr @.str.4993, i64 4, i64 0 }, ptr %a644
|
|
store { ptr, i64, i64 } %t642, ptr %a645
|
|
call void @finch_str_concat(ptr %a643, ptr %a644, ptr %a645)
|
|
%t646 = load { ptr, i64, i64 }, ptr %a643
|
|
store { ptr, i64, i64 } %t646, ptr %a648
|
|
store { ptr, i64, i64 } { ptr @.str.4994, i64 1, i64 0 }, ptr %a649
|
|
call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649)
|
|
%t650 = load { ptr, i64, i64 }, ptr %a647
|
|
%t651 = load %S.ast.Type, ptr %a361
|
|
%t652 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t651)
|
|
store { ptr, i64, i64 } %t650, ptr %a654
|
|
store { ptr, i64, i64 } %t652, ptr %a655
|
|
call void @finch_str_concat(ptr %a653, ptr %a654, ptr %a655)
|
|
%t656 = load { ptr, i64, i64 }, ptr %a653
|
|
store { ptr, i64, i64 } %t656, ptr %a658
|
|
store { ptr, i64, i64 } { ptr @.str.4995, i64 16, i64 0 }, ptr %a659
|
|
call void @finch_str_concat(ptr %a657, ptr %a658, ptr %a659)
|
|
%t660 = load { ptr, i64, i64 }, ptr %a657
|
|
%t661 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t662 = load { ptr, i64, i64 }, ptr %t661
|
|
store { ptr, i64, i64 } %t660, ptr %a664
|
|
store { ptr, i64, i64 } %t662, ptr %a665
|
|
call void @finch_str_concat(ptr %a663, ptr %a664, ptr %a665)
|
|
%t666 = load { ptr, i64, i64 }, ptr %a663
|
|
store { ptr, i64, i64 } %t666, ptr %a668
|
|
store { ptr, i64, i64 } { ptr @.str.4996, i64 11, i64 0 }, ptr %a669
|
|
call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669)
|
|
%t670 = load { ptr, i64, i64 }, ptr %a667
|
|
%t671 = getelementptr inbounds { ptr, i64, i64 }, ptr %a552, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.4997, i64 2, i64 0 }, ptr %a672
|
|
call void @finch_str_join(ptr %a673, ptr %a552, ptr %a672)
|
|
%t674 = load { ptr, i64, i64 }, ptr %a673
|
|
store { ptr, i64, i64 } %t670, ptr %a676
|
|
store { ptr, i64, i64 } %t674, ptr %a677
|
|
call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677)
|
|
%t678 = load { ptr, i64, i64 }, ptr %a675
|
|
store { ptr, i64, i64 } %t678, ptr %a680
|
|
store { ptr, i64, i64 } { ptr @.str.4998, i64 1, i64 0 }, ptr %a681
|
|
call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681)
|
|
%t682 = load { ptr, i64, i64 }, ptr %a679
|
|
call void @finch.gen.fail(ptr %t639, %S.ast.Node %t640, { ptr, i64, i64 } %t682)
|
|
br label %endif7615
|
|
endif7615:
|
|
%t683 = load ptr, ptr %a1
|
|
%t684 = icmp eq ptr %t683, null
|
|
br i1 %t684, label %panic7632, label %ok7633
|
|
panic7632:
|
|
call void @finch_panic(ptr @.str.4999, i64 4592, ptr @.str.5000)
|
|
unreachable
|
|
ok7633:
|
|
%t685 = getelementptr inbounds %S.gen.Gen, ptr %t683, i32 0, i32 14
|
|
%t686 = load i64, ptr %a484
|
|
%t687 = load { ptr, i64, i64 }, ptr %t685
|
|
%t688 = extractvalue { ptr, i64, i64 } %t687, 1
|
|
%t689 = icmp uge i64 %t686, %t688
|
|
br i1 %t689, label %range7634, label %inrange7635
|
|
range7634:
|
|
call void @finch_panic_index(ptr @.str.5001, i64 4592, i64 %t686, i64 %t688)
|
|
unreachable
|
|
inrange7635:
|
|
%t690 = extractvalue { ptr, i64, i64 } %t687, 0
|
|
%t691 = getelementptr inbounds %S.gen.FnSig, ptr %t690, i64 %t686
|
|
%t692 = getelementptr inbounds %S.gen.FnSig, ptr %t691, i32 0, i32 10
|
|
%t693 = load i1, ptr %t692
|
|
br label %logic.from7636
|
|
logic.from7636:
|
|
br i1 %t693, label %logic.rhs7637, label %logic.end7638
|
|
logic.rhs7637:
|
|
%t694 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0
|
|
%t695 = load { ptr, i64, i64 }, ptr %t694
|
|
store { ptr, i64, i64 } %t695, ptr %a696
|
|
store { ptr, i64, i64 } { ptr @.str.5002, i64 6, i64 0 }, ptr %a697
|
|
%t698 = call i32 @finch_str_eq(ptr %a696, ptr %a697)
|
|
%t699 = icmp ne i32 %t698, 0
|
|
br label %logic.from7639
|
|
logic.from7639:
|
|
br i1 %t699, label %logic.end7641, label %logic.rhs7640
|
|
logic.rhs7640:
|
|
%t700 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0
|
|
%t701 = load { ptr, i64, i64 }, ptr %t700
|
|
store { ptr, i64, i64 } %t701, ptr %a702
|
|
store { ptr, i64, i64 } { ptr @.str.5003, i64 4, i64 0 }, ptr %a703
|
|
%t704 = call i32 @finch_str_eq(ptr %a702, ptr %a703)
|
|
%t705 = icmp ne i32 %t704, 0
|
|
br label %logic.rend7642
|
|
logic.rend7642:
|
|
br label %logic.end7641
|
|
logic.end7641:
|
|
%t706 = phi i1 [ true, %logic.from7639 ], [ %t705, %logic.rend7642 ]
|
|
br label %logic.rend7643
|
|
logic.rend7643:
|
|
br label %logic.end7638
|
|
logic.end7638:
|
|
%t707 = phi i1 [ false, %logic.from7636 ], [ %t706, %logic.rend7643 ]
|
|
br i1 %t707, label %then7644, label %endif7646
|
|
then7644:
|
|
%t708 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0
|
|
%t709 = load i1, ptr %t708
|
|
%t710 = xor i1 %t709, true
|
|
br i1 %t710, label %then7647, label %endif7649
|
|
then7647:
|
|
%t711 = load ptr, ptr %a1
|
|
%t712 = load %S.ast.Node, ptr %a2
|
|
%t713 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t714 = load { ptr, i64, i64 }, ptr %t713
|
|
store { ptr, i64, i64 } %t714, ptr %a716
|
|
store { ptr, i64, i64 } { ptr @.str.5004, i64 28, i64 0 }, ptr %a717
|
|
call void @finch_str_concat(ptr %a715, ptr %a716, ptr %a717)
|
|
%t718 = load { ptr, i64, i64 }, ptr %a715
|
|
%t719 = load %S.ast.Type, ptr %a361
|
|
%t720 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t719)
|
|
store { ptr, i64, i64 } %t718, ptr %a722
|
|
store { ptr, i64, i64 } %t720, ptr %a723
|
|
call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723)
|
|
%t724 = load { ptr, i64, i64 }, ptr %a721
|
|
store { ptr, i64, i64 } %t724, ptr %a726
|
|
store { ptr, i64, i64 } { ptr @.str.5005, i64 30, i64 0 }, ptr %a727
|
|
call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727)
|
|
%t728 = load { ptr, i64, i64 }, ptr %a725
|
|
call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t728)
|
|
br label %endif7649
|
|
endif7649:
|
|
%t729 = load %S.ast.Node, ptr %a13
|
|
%t730 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t729)
|
|
store { ptr, i64, i64 } %t730, ptr %a731
|
|
%t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a731, i32 0, i32 1
|
|
%t733 = load i64, ptr %t732
|
|
%t734 = icmp sgt i64 %t733, 0
|
|
br i1 %t734, label %then7650, label %endif7652
|
|
then7650:
|
|
%t735 = load ptr, ptr %a1
|
|
%t736 = load { ptr, i64, i64 }, ptr %a731
|
|
%t737 = call i64 @finch.gen.lookup(ptr %t735, { ptr, i64, i64 } %t736)
|
|
store i64 %t737, ptr %a738
|
|
%t739 = load i64, ptr %a738
|
|
%t740 = icmp sge i64 %t739, 0
|
|
br label %logic.from7653
|
|
logic.from7653:
|
|
br i1 %t740, label %logic.rhs7654, label %logic.end7655
|
|
logic.rhs7654:
|
|
%t741 = load ptr, ptr %a1
|
|
%t742 = load i64, ptr %a738
|
|
%t743 = call %S.gen.Var @finch.gen.varAt(ptr %t741, i64 %t742)
|
|
%t744 = extractvalue %S.gen.Var %t743, 3
|
|
br label %logic.rend7656
|
|
logic.rend7656:
|
|
br label %logic.end7655
|
|
logic.end7655:
|
|
%t745 = phi i1 [ false, %logic.from7653 ], [ %t744, %logic.rend7656 ]
|
|
br i1 %t745, label %then7657, label %endif7659
|
|
then7657:
|
|
%t746 = load ptr, ptr %a1
|
|
%t747 = load %S.ast.Node, ptr %a2
|
|
%t748 = load { ptr, i64, i64 }, ptr %a731
|
|
store { ptr, i64, i64 } { ptr @.str.5006, i64 19, i64 0 }, ptr %a750
|
|
store { ptr, i64, i64 } %t748, ptr %a751
|
|
call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751)
|
|
%t752 = load { ptr, i64, i64 }, ptr %a749
|
|
store { ptr, i64, i64 } %t752, ptr %a754
|
|
store { ptr, i64, i64 } { ptr @.str.5007, i64 18, i64 0 }, ptr %a755
|
|
call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755)
|
|
%t756 = load { ptr, i64, i64 }, ptr %a753
|
|
call void @finch.gen.fail(ptr %t746, %S.ast.Node %t747, { ptr, i64, i64 } %t756)
|
|
br label %endif7659
|
|
endif7659:
|
|
br label %endif7652
|
|
endif7652:
|
|
br label %endif7646
|
|
endif7646:
|
|
%t757 = load ptr, ptr %a1
|
|
%t758 = load i64, ptr %a484
|
|
%t759 = load %S.ast.Node, ptr %a2
|
|
%t760 = load %S.ast.Type, ptr %a361
|
|
%t761 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t760)
|
|
store { ptr, i64, i64 } %t761, ptr %a763
|
|
store { ptr, i64, i64 } { ptr @.str.5008, i64 1, i64 0 }, ptr %a764
|
|
call void @finch_str_concat(ptr %a762, ptr %a763, ptr %a764)
|
|
%t765 = load { ptr, i64, i64 }, ptr %a762
|
|
%t766 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t767 = load { ptr, i64, i64 }, ptr %t766
|
|
store { ptr, i64, i64 } %t765, ptr %a769
|
|
store { ptr, i64, i64 } %t767, ptr %a770
|
|
call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770)
|
|
%t771 = load { ptr, i64, i64 }, ptr %a768
|
|
%t772 = load { ptr, i64, i64 }, ptr %a362
|
|
%t773 = load %S.ast.Node, ptr %a13
|
|
%t774 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t773)
|
|
%t775 = call %S.gen.Val @finch.gen.callFn(ptr %t757, i64 %t758, %S.ast.Node %t759, i64 1, { ptr, i64, i64 } %t771, { ptr, i64, i64 } %t772, { ptr, i64, i64 } %t774)
|
|
ret %S.gen.Val %t775
|
|
endif7587:
|
|
%t776 = load ptr, ptr %a1
|
|
%t777 = load %S.ast.Node, ptr %a2
|
|
%t778 = load %S.ast.Type, ptr %a217
|
|
%t779 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t778)
|
|
store { ptr, i64, i64 } %t779, ptr %a781
|
|
store { ptr, i64, i64 } { ptr @.str.5009, i64 15, i64 0 }, ptr %a782
|
|
call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782)
|
|
%t783 = load { ptr, i64, i64 }, ptr %a780
|
|
call void @finch.gen.fail(ptr %t776, %S.ast.Node %t777, { ptr, i64, i64 } %t783)
|
|
ret %S.gen.Val zeroinitializer
|
|
}
|
|
|
|
define internal void @finch.gen.need(ptr %p0, %S.ast.Node %p1, i64 %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca i64, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store i64 %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a1
|
|
%t5 = load %S.ast.Node, ptr %a2
|
|
%t6 = load i64, ptr %a3
|
|
%t7 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t8 = load { ptr, i64, i64 }, ptr %t7
|
|
call void @finch.gen.checkArgs(ptr %t4, %S.ast.Node %t5, i64 1, i64 %t6, { ptr, i64, i64 } %t8)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.arrayMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
%a12 = alloca %S.ast.Type, align 16
|
|
%a13 = alloca %S.ast.Type, align 16
|
|
%a15 = alloca %S.ast.Type, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a143 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca %S.ast.Type, align 16
|
|
%a230 = alloca %S.ast.Type, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a281 = alloca %S.gen.Val, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a302 = alloca { ptr, i64, i64 }, align 16
|
|
%a305 = alloca { ptr, i64, i64 }, align 16
|
|
%a308 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a314 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a330 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a335 = alloca { ptr, i64, i64 }, align 16
|
|
%a336 = alloca { ptr, i64, i64 }, align 16
|
|
%a339 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a351 = alloca { ptr, i64, i64 }, align 16
|
|
%a352 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a355 = alloca { ptr, i64, i64 }, align 16
|
|
%a356 = alloca { ptr, i64, i64 }, align 16
|
|
%a359 = alloca { ptr, i64, i64 }, align 16
|
|
%a360 = alloca { ptr, i64, i64 }, align 16
|
|
%a361 = alloca { ptr, i64, i64 }, align 16
|
|
%a363 = alloca { ptr, i64, i64 }, align 16
|
|
%a364 = alloca { ptr, i64, i64 }, align 16
|
|
%a365 = alloca { ptr, i64, i64 }, align 16
|
|
%a368 = alloca { ptr, i64, i64 }, align 16
|
|
%a369 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca %S.ast.Type, align 16
|
|
%a377 = alloca %S.ast.Type, align 16
|
|
%a380 = alloca %S.gen.Val, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a388 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a411 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a431 = alloca { ptr, i64, i64 }, align 16
|
|
%a432 = alloca { ptr, i64, i64 }, align 16
|
|
%a439 = alloca { ptr, i64, i64 }, align 16
|
|
%a440 = alloca { ptr, i64, i64 }, align 16
|
|
%a441 = alloca { ptr, i64, i64 }, align 16
|
|
%a443 = alloca { ptr, i64, i64 }, align 16
|
|
%a444 = alloca { ptr, i64, i64 }, align 16
|
|
%a445 = alloca { ptr, i64, i64 }, align 16
|
|
%a452 = alloca { ptr, i64, i64 }, align 16
|
|
%a453 = alloca { ptr, i64, i64 }, align 16
|
|
%a460 = alloca { ptr, i64, i64 }, align 16
|
|
%a461 = alloca { ptr, i64, i64 }, align 16
|
|
%a477 = alloca { ptr, i64, i64 }, align 16
|
|
%a480 = alloca { ptr, i64, i64 }, align 16
|
|
%a483 = alloca { ptr, i64, i64 }, align 16
|
|
%a484 = alloca { ptr, i64, i64 }, align 16
|
|
%a485 = alloca { ptr, i64, i64 }, align 16
|
|
%a487 = alloca { ptr, i64, i64 }, align 16
|
|
%a488 = alloca { ptr, i64, i64 }, align 16
|
|
%a489 = alloca { ptr, i64, i64 }, align 16
|
|
%a492 = alloca { ptr, i64, i64 }, align 16
|
|
%a493 = alloca { ptr, i64, i64 }, align 16
|
|
%a494 = alloca { ptr, i64, i64 }, align 16
|
|
%a496 = alloca { ptr, i64, i64 }, align 16
|
|
%a497 = alloca { ptr, i64, i64 }, align 16
|
|
%a498 = alloca { ptr, i64, i64 }, align 16
|
|
%a501 = alloca { ptr, i64, i64 }, align 16
|
|
%a502 = alloca { ptr, i64, i64 }, align 16
|
|
%a503 = alloca { ptr, i64, i64 }, align 16
|
|
%a505 = alloca { ptr, i64, i64 }, align 16
|
|
%a506 = alloca { ptr, i64, i64 }, align 16
|
|
%a507 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a518 = alloca { ptr, i64, i64 }, align 16
|
|
%a543 = alloca { ptr, i64, i64 }, align 16
|
|
%a544 = alloca { ptr, i64, i64 }, align 16
|
|
%a546 = alloca { ptr, i64, i64 }, align 16
|
|
%a569 = alloca { ptr, i64, i64 }, align 16
|
|
%a583 = alloca { ptr, i64, i64 }, align 16
|
|
%a586 = alloca { ptr, i64, i64 }, align 16
|
|
%a587 = alloca { ptr, i64, i64 }, align 16
|
|
%a588 = alloca { ptr, i64, i64 }, align 16
|
|
%a590 = alloca { ptr, i64, i64 }, align 16
|
|
%a591 = alloca { ptr, i64, i64 }, align 16
|
|
%a592 = alloca { ptr, i64, i64 }, align 16
|
|
%a595 = alloca { ptr, i64, i64 }, align 16
|
|
%a596 = alloca { ptr, i64, i64 }, align 16
|
|
%a597 = alloca { ptr, i64, i64 }, align 16
|
|
%a599 = alloca { ptr, i64, i64 }, align 16
|
|
%a600 = alloca { ptr, i64, i64 }, align 16
|
|
%a601 = alloca { ptr, i64, i64 }, align 16
|
|
%a606 = alloca { ptr, i64, i64 }, align 16
|
|
%a607 = alloca { ptr, i64, i64 }, align 16
|
|
%a608 = alloca { ptr, i64, i64 }, align 16
|
|
%a610 = alloca { ptr, i64, i64 }, align 16
|
|
%a611 = alloca { ptr, i64, i64 }, align 16
|
|
%a612 = alloca { ptr, i64, i64 }, align 16
|
|
%a615 = alloca { ptr, i64, i64 }, align 16
|
|
%a616 = alloca { ptr, i64, i64 }, align 16
|
|
%a617 = alloca { ptr, i64, i64 }, align 16
|
|
%a619 = alloca { ptr, i64, i64 }, align 16
|
|
%a620 = alloca { ptr, i64, i64 }, align 16
|
|
%a621 = alloca { ptr, i64, i64 }, align 16
|
|
%a625 = alloca { ptr, i64, i64 }, align 16
|
|
%a627 = alloca { ptr, i64, i64 }, align 16
|
|
%a628 = alloca { ptr, i64, i64 }, align 16
|
|
%a629 = alloca { ptr, i64, i64 }, align 16
|
|
%a631 = alloca { ptr, i64, i64 }, align 16
|
|
%a632 = alloca { ptr, i64, i64 }, align 16
|
|
%a633 = alloca { ptr, i64, i64 }, align 16
|
|
%a638 = alloca { ptr, i64, i64 }, align 16
|
|
%a644 = alloca { ptr, i64, i64 }, align 16
|
|
%a645 = alloca { ptr, i64, i64 }, align 16
|
|
%a646 = alloca { ptr, i64, i64 }, align 16
|
|
%a648 = alloca { ptr, i64, i64 }, align 16
|
|
%a649 = alloca { ptr, i64, i64 }, align 16
|
|
%a650 = alloca { ptr, i64, i64 }, align 16
|
|
%a653 = alloca { ptr, i64, i64 }, align 16
|
|
%a654 = alloca { ptr, i64, i64 }, align 16
|
|
%a655 = alloca { ptr, i64, i64 }, align 16
|
|
%a657 = alloca { ptr, i64, i64 }, align 16
|
|
%a658 = alloca { ptr, i64, i64 }, align 16
|
|
%a659 = alloca { ptr, i64, i64 }, align 16
|
|
%a662 = alloca { ptr, i64, i64 }, align 16
|
|
%a663 = alloca { ptr, i64, i64 }, align 16
|
|
%a664 = alloca { ptr, i64, i64 }, align 16
|
|
%a670 = alloca { ptr, i64, i64 }, align 16
|
|
%a671 = alloca { ptr, i64, i64 }, align 16
|
|
%a696 = alloca { ptr, i64, i64 }, align 16
|
|
%a697 = alloca { ptr, i64, i64 }, align 16
|
|
%a699 = alloca { ptr, i64, i64 }, align 16
|
|
%a709 = alloca { ptr, i64, i64 }, align 16
|
|
%a714 = alloca { ptr, i64, i64 }, align 16
|
|
%a715 = alloca { ptr, i64, i64 }, align 16
|
|
%a716 = alloca { ptr, i64, i64 }, align 16
|
|
%a718 = alloca { ptr, i64, i64 }, align 16
|
|
%a719 = alloca { ptr, i64, i64 }, align 16
|
|
%a720 = alloca { ptr, i64, i64 }, align 16
|
|
%a723 = alloca { ptr, i64, i64 }, align 16
|
|
%a724 = alloca { ptr, i64, i64 }, align 16
|
|
%a725 = alloca { ptr, i64, i64 }, align 16
|
|
%a727 = alloca { ptr, i64, i64 }, align 16
|
|
%a728 = alloca { ptr, i64, i64 }, align 16
|
|
%a729 = alloca { ptr, i64, i64 }, align 16
|
|
%a732 = alloca { ptr, i64, i64 }, align 16
|
|
%a733 = alloca { ptr, i64, i64 }, align 16
|
|
%a734 = alloca { ptr, i64, i64 }, align 16
|
|
%a738 = alloca { ptr, i64, i64 }, align 16
|
|
%a741 = alloca { ptr, i64, i64 }, align 16
|
|
%a742 = alloca { ptr, i64, i64 }, align 16
|
|
%a743 = alloca { ptr, i64, i64 }, align 16
|
|
%a745 = alloca { ptr, i64, i64 }, align 16
|
|
%a746 = alloca { ptr, i64, i64 }, align 16
|
|
%a747 = alloca { ptr, i64, i64 }, align 16
|
|
%a750 = alloca { ptr, i64, i64 }, align 16
|
|
%a751 = alloca { ptr, i64, i64 }, align 16
|
|
%a752 = alloca { ptr, i64, i64 }, align 16
|
|
%a754 = alloca { ptr, i64, i64 }, align 16
|
|
%a755 = alloca { ptr, i64, i64 }, align 16
|
|
%a756 = alloca { ptr, i64, i64 }, align 16
|
|
%a761 = alloca { ptr, i64, i64 }, align 16
|
|
%a762 = alloca { ptr, i64, i64 }, align 16
|
|
%a763 = alloca { ptr, i64, i64 }, align 16
|
|
%a765 = alloca { ptr, i64, i64 }, align 16
|
|
%a766 = alloca { ptr, i64, i64 }, align 16
|
|
%a767 = alloca { ptr, i64, i64 }, align 16
|
|
%a770 = alloca { ptr, i64, i64 }, align 16
|
|
%a771 = alloca { ptr, i64, i64 }, align 16
|
|
%a775 = alloca %S.ast.Type, align 16
|
|
%a776 = alloca %S.ast.Type, align 16
|
|
%a784 = alloca { ptr, i64, i64 }, align 16
|
|
%a785 = alloca { ptr, i64, i64 }, align 16
|
|
%a810 = alloca { ptr, i64, i64 }, align 16
|
|
%a811 = alloca { ptr, i64, i64 }, align 16
|
|
%a813 = alloca { ptr, i64, i64 }, align 16
|
|
%a816 = alloca { ptr, i64, i64 }, align 16
|
|
%a817 = alloca { ptr, i64, i64 }, align 16
|
|
%a818 = alloca { ptr, i64, i64 }, align 16
|
|
%a820 = alloca { ptr, i64, i64 }, align 16
|
|
%a821 = alloca { ptr, i64, i64 }, align 16
|
|
%a822 = alloca { ptr, i64, i64 }, align 16
|
|
%a825 = alloca { ptr, i64, i64 }, align 16
|
|
%a826 = alloca { ptr, i64, i64 }, align 16
|
|
%a827 = alloca { ptr, i64, i64 }, align 16
|
|
%a829 = alloca { ptr, i64, i64 }, align 16
|
|
%a830 = alloca { ptr, i64, i64 }, align 16
|
|
%a831 = alloca { ptr, i64, i64 }, align 16
|
|
%a836 = alloca { ptr, i64, i64 }, align 16
|
|
%a837 = alloca { ptr, i64, i64 }, align 16
|
|
%a838 = alloca { ptr, i64, i64 }, align 16
|
|
%a840 = alloca { ptr, i64, i64 }, align 16
|
|
%a841 = alloca { ptr, i64, i64 }, align 16
|
|
%a842 = alloca { ptr, i64, i64 }, align 16
|
|
%a847 = alloca { ptr, i64, i64 }, align 16
|
|
%a848 = alloca { ptr, i64, i64 }, align 16
|
|
%a856 = alloca { ptr, i64, i64 }, align 16
|
|
%a860 = alloca { ptr, i64, i64 }, align 16
|
|
%a863 = alloca { ptr, i64, i64 }, align 16
|
|
%a864 = alloca { ptr, i64, i64 }, align 16
|
|
%a865 = alloca { ptr, i64, i64 }, align 16
|
|
%a867 = alloca { ptr, i64, i64 }, align 16
|
|
%a868 = alloca { ptr, i64, i64 }, align 16
|
|
%a869 = alloca { ptr, i64, i64 }, align 16
|
|
%a872 = alloca { ptr, i64, i64 }, align 16
|
|
%a876 = alloca { ptr, i64, i64 }, align 16
|
|
%a879 = alloca { ptr, i64, i64 }, align 16
|
|
%a880 = alloca { ptr, i64, i64 }, align 16
|
|
%a881 = alloca { ptr, i64, i64 }, align 16
|
|
%a883 = alloca { ptr, i64, i64 }, align 16
|
|
%a884 = alloca { ptr, i64, i64 }, align 16
|
|
%a885 = alloca { ptr, i64, i64 }, align 16
|
|
%a888 = alloca { ptr, i64, i64 }, align 16
|
|
%a889 = alloca { ptr, i64, i64 }, align 16
|
|
%a890 = alloca { ptr, i64, i64 }, align 16
|
|
%a892 = alloca { ptr, i64, i64 }, align 16
|
|
%a893 = alloca { ptr, i64, i64 }, align 16
|
|
%a894 = alloca { ptr, i64, i64 }, align 16
|
|
%a902 = alloca { ptr, i64, i64 }, align 16
|
|
%a903 = alloca { ptr, i64, i64 }, align 16
|
|
%a904 = alloca { ptr, i64, i64 }, align 16
|
|
%a907 = alloca { ptr, i64, i64 }, align 16
|
|
%a911 = alloca { ptr, i64, i64 }, align 16
|
|
%a912 = alloca { ptr, i64, i64 }, align 16
|
|
%a913 = alloca { ptr, i64, i64 }, align 16
|
|
%a915 = alloca { ptr, i64, i64 }, align 16
|
|
%a916 = alloca { ptr, i64, i64 }, align 16
|
|
%a917 = alloca { ptr, i64, i64 }, align 16
|
|
%a920 = alloca { ptr, i64, i64 }, align 16
|
|
%a921 = alloca { ptr, i64, i64 }, align 16
|
|
%a922 = alloca { ptr, i64, i64 }, align 16
|
|
%a924 = alloca { ptr, i64, i64 }, align 16
|
|
%a925 = alloca { ptr, i64, i64 }, align 16
|
|
%a926 = alloca { ptr, i64, i64 }, align 16
|
|
%a934 = alloca { ptr, i64, i64 }, align 16
|
|
%a935 = alloca { ptr, i64, i64 }, align 16
|
|
%a936 = alloca { ptr, i64, i64 }, align 16
|
|
%a939 = alloca { ptr, i64, i64 }, align 16
|
|
%a942 = alloca { ptr, i64, i64 }, align 16
|
|
%a943 = alloca { ptr, i64, i64 }, align 16
|
|
%a944 = alloca { ptr, i64, i64 }, align 16
|
|
%a946 = alloca { ptr, i64, i64 }, align 16
|
|
%a947 = alloca { ptr, i64, i64 }, align 16
|
|
%a948 = alloca { ptr, i64, i64 }, align 16
|
|
%a951 = alloca { ptr, i64, i64 }, align 16
|
|
%a952 = alloca { ptr, i64, i64 }, align 16
|
|
%a953 = alloca { ptr, i64, i64 }, align 16
|
|
%a955 = alloca { ptr, i64, i64 }, align 16
|
|
%a956 = alloca { ptr, i64, i64 }, align 16
|
|
%a957 = alloca { ptr, i64, i64 }, align 16
|
|
%a960 = alloca { ptr, i64, i64 }, align 16
|
|
%a961 = alloca { ptr, i64, i64 }, align 16
|
|
%a962 = alloca { ptr, i64, i64 }, align 16
|
|
%a965 = alloca { ptr, i64, i64 }, align 16
|
|
%a970 = alloca { ptr, i64, i64 }, align 16
|
|
%a975 = alloca { ptr, i64, i64 }, align 16
|
|
%a989 = alloca { ptr, i64, i64 }, align 16
|
|
%a990 = alloca { ptr, i64, i64 }, align 16
|
|
%a1015 = alloca { ptr, i64, i64 }, align 16
|
|
%a1016 = alloca { ptr, i64, i64 }, align 16
|
|
%a1018 = alloca { ptr, i64, i64 }, align 16
|
|
%a1039 = alloca { ptr, i64, i64 }, align 16
|
|
%a1040 = alloca { ptr, i64, i64 }, align 16
|
|
%a1042 = alloca { ptr, i64, i64 }, align 16
|
|
%a1046 = alloca { ptr, i64, i64 }, align 16
|
|
%a1049 = alloca { ptr, i64, i64 }, align 16
|
|
%a1050 = alloca { ptr, i64, i64 }, align 16
|
|
%a1051 = alloca { ptr, i64, i64 }, align 16
|
|
%a1053 = alloca { ptr, i64, i64 }, align 16
|
|
%a1054 = alloca { ptr, i64, i64 }, align 16
|
|
%a1055 = alloca { ptr, i64, i64 }, align 16
|
|
%a1058 = alloca { ptr, i64, i64 }, align 16
|
|
%a1061 = alloca { ptr, i64, i64 }, align 16
|
|
%a1062 = alloca { ptr, i64, i64 }, align 16
|
|
%a1063 = alloca { ptr, i64, i64 }, align 16
|
|
%a1065 = alloca { ptr, i64, i64 }, align 16
|
|
%a1066 = alloca { ptr, i64, i64 }, align 16
|
|
%a1067 = alloca { ptr, i64, i64 }, align 16
|
|
%a1070 = alloca { ptr, i64, i64 }, align 16
|
|
%a1071 = alloca { ptr, i64, i64 }, align 16
|
|
%a1072 = alloca { ptr, i64, i64 }, align 16
|
|
%a1075 = alloca { ptr, i64, i64 }, align 16
|
|
%a1078 = alloca { ptr, i64, i64 }, align 16
|
|
%a1079 = alloca { ptr, i64, i64 }, align 16
|
|
%a1080 = alloca { ptr, i64, i64 }, align 16
|
|
%a1082 = alloca { ptr, i64, i64 }, align 16
|
|
%a1083 = alloca { ptr, i64, i64 }, align 16
|
|
%a1084 = alloca { ptr, i64, i64 }, align 16
|
|
%a1087 = alloca { ptr, i64, i64 }, align 16
|
|
%a1088 = alloca { ptr, i64, i64 }, align 16
|
|
%a1089 = alloca { ptr, i64, i64 }, align 16
|
|
%a1092 = alloca { ptr, i64, i64 }, align 16
|
|
%a1097 = alloca { ptr, i64, i64 }, align 16
|
|
%a1098 = alloca { ptr, i64, i64 }, align 16
|
|
%a1099 = alloca { ptr, i64, i64 }, align 16
|
|
%a1101 = alloca { ptr, i64, i64 }, align 16
|
|
%a1102 = alloca { ptr, i64, i64 }, align 16
|
|
%a1103 = alloca { ptr, i64, i64 }, align 16
|
|
%a1106 = alloca { ptr, i64, i64 }, align 16
|
|
%a1107 = alloca { ptr, i64, i64 }, align 16
|
|
%a1108 = alloca { ptr, i64, i64 }, align 16
|
|
%a1111 = alloca { ptr, i64, i64 }, align 16
|
|
%a1112 = alloca { ptr, i64, i64 }, align 16
|
|
%a1113 = alloca { ptr, i64, i64 }, align 16
|
|
%a1115 = alloca { ptr, i64, i64 }, align 16
|
|
%a1116 = alloca { ptr, i64, i64 }, align 16
|
|
%a1117 = alloca { ptr, i64, i64 }, align 16
|
|
%a1120 = alloca { ptr, i64, i64 }, align 16
|
|
%a1121 = alloca { ptr, i64, i64 }, align 16
|
|
%a1122 = alloca { ptr, i64, i64 }, align 16
|
|
%a1128 = alloca { ptr, i64, i64 }, align 16
|
|
%a1129 = alloca { ptr, i64, i64 }, align 16
|
|
%a1130 = alloca { ptr, i64, i64 }, align 16
|
|
%a1132 = alloca { ptr, i64, i64 }, align 16
|
|
%a1133 = alloca { ptr, i64, i64 }, align 16
|
|
%a1134 = alloca { ptr, i64, i64 }, align 16
|
|
%a1137 = alloca { ptr, i64, i64 }, align 16
|
|
%a1138 = alloca { ptr, i64, i64 }, align 16
|
|
%a1139 = alloca { ptr, i64, i64 }, align 16
|
|
%a1142 = alloca { ptr, i64, i64 }, align 16
|
|
%a1145 = alloca { ptr, i64, i64 }, align 16
|
|
%a1148 = alloca { ptr, i64, i64 }, align 16
|
|
%a1149 = alloca { ptr, i64, i64 }, align 16
|
|
%a1150 = alloca { ptr, i64, i64 }, align 16
|
|
%a1152 = alloca { ptr, i64, i64 }, align 16
|
|
%a1153 = alloca { ptr, i64, i64 }, align 16
|
|
%a1154 = alloca { ptr, i64, i64 }, align 16
|
|
%a1157 = alloca { ptr, i64, i64 }, align 16
|
|
%a1158 = alloca { ptr, i64, i64 }, align 16
|
|
%a1159 = alloca { ptr, i64, i64 }, align 16
|
|
%a1161 = alloca { ptr, i64, i64 }, align 16
|
|
%a1162 = alloca { ptr, i64, i64 }, align 16
|
|
%a1163 = alloca { ptr, i64, i64 }, align 16
|
|
%a1168 = alloca { ptr, i64, i64 }, align 16
|
|
%a1169 = alloca { ptr, i64, i64 }, align 16
|
|
%a1170 = alloca { ptr, i64, i64 }, align 16
|
|
%a1172 = alloca { ptr, i64, i64 }, align 16
|
|
%a1173 = alloca { ptr, i64, i64 }, align 16
|
|
%a1174 = alloca { ptr, i64, i64 }, align 16
|
|
%a1179 = alloca { ptr, i64, i64 }, align 16
|
|
%a1183 = alloca { ptr, i64, i64 }, align 16
|
|
%a1187 = alloca { ptr, i64, i64 }, align 16
|
|
%a1190 = alloca { ptr, i64, i64 }, align 16
|
|
%a1191 = alloca { ptr, i64, i64 }, align 16
|
|
%a1192 = alloca { ptr, i64, i64 }, align 16
|
|
%a1194 = alloca { ptr, i64, i64 }, align 16
|
|
%a1195 = alloca { ptr, i64, i64 }, align 16
|
|
%a1196 = alloca { ptr, i64, i64 }, align 16
|
|
%a1199 = alloca { ptr, i64, i64 }, align 16
|
|
%a1200 = alloca { ptr, i64, i64 }, align 16
|
|
%a1201 = alloca { ptr, i64, i64 }, align 16
|
|
%a1203 = alloca { ptr, i64, i64 }, align 16
|
|
%a1204 = alloca { ptr, i64, i64 }, align 16
|
|
%a1205 = alloca { ptr, i64, i64 }, align 16
|
|
%a1213 = alloca { ptr, i64, i64 }, align 16
|
|
%a1214 = alloca { ptr, i64, i64 }, align 16
|
|
%a1215 = alloca { ptr, i64, i64 }, align 16
|
|
%a1218 = alloca { ptr, i64, i64 }, align 16
|
|
%a1221 = alloca { ptr, i64, i64 }, align 16
|
|
%a1222 = alloca { ptr, i64, i64 }, align 16
|
|
%a1223 = alloca { ptr, i64, i64 }, align 16
|
|
%a1225 = alloca { ptr, i64, i64 }, align 16
|
|
%a1226 = alloca { ptr, i64, i64 }, align 16
|
|
%a1227 = alloca { ptr, i64, i64 }, align 16
|
|
%a1230 = alloca { ptr, i64, i64 }, align 16
|
|
%a1231 = alloca { ptr, i64, i64 }, align 16
|
|
%a1232 = alloca { ptr, i64, i64 }, align 16
|
|
%a1234 = alloca { ptr, i64, i64 }, align 16
|
|
%a1235 = alloca { ptr, i64, i64 }, align 16
|
|
%a1236 = alloca { ptr, i64, i64 }, align 16
|
|
%a1240 = alloca { ptr, i64, i64 }, align 16
|
|
%a1241 = alloca { ptr, i64, i64 }, align 16
|
|
%a1242 = alloca { ptr, i64, i64 }, align 16
|
|
%a1244 = alloca { ptr, i64, i64 }, align 16
|
|
%a1245 = alloca { ptr, i64, i64 }, align 16
|
|
%a1246 = alloca { ptr, i64, i64 }, align 16
|
|
%a1254 = alloca { ptr, i64, i64 }, align 16
|
|
%a1255 = alloca { ptr, i64, i64 }, align 16
|
|
%a1256 = alloca { ptr, i64, i64 }, align 16
|
|
%a1259 = alloca { ptr, i64, i64 }, align 16
|
|
%a1260 = alloca { ptr, i64, i64 }, align 16
|
|
%a1261 = alloca { ptr, i64, i64 }, align 16
|
|
%a1264 = alloca { ptr, i64, i64 }, align 16
|
|
%a1276 = alloca %S.ast.Type, align 16
|
|
%a1277 = alloca %S.ast.Type, align 16
|
|
%a1282 = alloca { ptr, i64, i64 }, align 16
|
|
%a1283 = alloca { ptr, i64, i64 }, align 16
|
|
%a1290 = alloca { ptr, i64, i64 }, align 16
|
|
%a1291 = alloca { ptr, i64, i64 }, align 16
|
|
%a1293 = alloca { ptr, i64, i64 }, align 16
|
|
%a1298 = alloca { ptr, i64, i64 }, align 16
|
|
%a1299 = alloca { ptr, i64, i64 }, align 16
|
|
%a1304 = alloca { ptr, i64, i64 }, align 16
|
|
%a1305 = alloca { ptr, i64, i64 }, align 16
|
|
%a1314 = alloca { ptr, i64, i64 }, align 16
|
|
%a1318 = alloca { ptr, i64, i64 }, align 16
|
|
%a1322 = alloca { ptr, i64, i64 }, align 16
|
|
%a1325 = alloca { ptr, i64, i64 }, align 16
|
|
%a1326 = alloca { ptr, i64, i64 }, align 16
|
|
%a1327 = alloca { ptr, i64, i64 }, align 16
|
|
%a1329 = alloca { ptr, i64, i64 }, align 16
|
|
%a1330 = alloca { ptr, i64, i64 }, align 16
|
|
%a1331 = alloca { ptr, i64, i64 }, align 16
|
|
%a1334 = alloca { ptr, i64, i64 }, align 16
|
|
%a1335 = alloca { ptr, i64, i64 }, align 16
|
|
%a1336 = alloca { ptr, i64, i64 }, align 16
|
|
%a1338 = alloca { ptr, i64, i64 }, align 16
|
|
%a1339 = alloca { ptr, i64, i64 }, align 16
|
|
%a1340 = alloca { ptr, i64, i64 }, align 16
|
|
%a1345 = alloca { ptr, i64, i64 }, align 16
|
|
%a1346 = alloca { ptr, i64, i64 }, align 16
|
|
%a1347 = alloca { ptr, i64, i64 }, align 16
|
|
%a1349 = alloca { ptr, i64, i64 }, align 16
|
|
%a1350 = alloca { ptr, i64, i64 }, align 16
|
|
%a1351 = alloca { ptr, i64, i64 }, align 16
|
|
%a1354 = alloca { ptr, i64, i64 }, align 16
|
|
%a1355 = alloca { ptr, i64, i64 }, align 16
|
|
%a1356 = alloca { ptr, i64, i64 }, align 16
|
|
%a1358 = alloca { ptr, i64, i64 }, align 16
|
|
%a1359 = alloca { ptr, i64, i64 }, align 16
|
|
%a1360 = alloca { ptr, i64, i64 }, align 16
|
|
%a1367 = alloca { ptr, i64, i64 }, align 16
|
|
%a1368 = alloca { ptr, i64, i64 }, align 16
|
|
%a1369 = alloca { ptr, i64, i64 }, align 16
|
|
%a1371 = alloca { ptr, i64, i64 }, align 16
|
|
%a1372 = alloca { ptr, i64, i64 }, align 16
|
|
%a1373 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store %S.ast.Type %p3, ptr %a4
|
|
%t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1
|
|
%t6 = load { ptr, i64, i64 }, ptr %t5
|
|
%t7 = extractvalue { ptr, i64, i64 } %t6, 1
|
|
%t8 = icmp uge i64 0, %t7
|
|
br i1 %t8, label %range7660, label %inrange7661
|
|
range7660:
|
|
call void @finch_panic_index(ptr @.str.5010, i64 4615, i64 0, i64 %t7)
|
|
unreachable
|
|
inrange7661:
|
|
%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.5011, i64 46, i64 0 }, ptr %a29
|
|
store { ptr, i64, i64 } %t27, ptr %a30
|
|
call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30)
|
|
%t31 = load { ptr, i64, i64 }, ptr %a28
|
|
store { ptr, i64, i64 } %t31, ptr %a33
|
|
store { ptr, i64, i64 } { ptr @.str.5012, i64 14, i64 0 }, ptr %a34
|
|
call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34)
|
|
%t35 = load { ptr, i64, i64 }, ptr %a32
|
|
%t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t35)
|
|
store { ptr, i64, i64 } %t36, ptr %a37
|
|
%t38 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t38, ptr %a39
|
|
store { ptr, i64, i64 } { ptr @.str.5013, i64 4, i64 0 }, ptr %a40
|
|
%t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40)
|
|
%t42 = icmp ne i32 %t41, 0
|
|
br i1 %t42, label %then7662, label %endif7664
|
|
then7662:
|
|
%t43 = load ptr, ptr %a1
|
|
%t44 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t43, %S.ast.Node %t44, i64 1)
|
|
%t45 = load ptr, ptr %a1
|
|
%t46 = load ptr, ptr %a1
|
|
%t47 = load ptr, ptr %a1
|
|
%t48 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t49 = load { ptr, i64, i64 }, ptr %t48
|
|
%t50 = extractvalue { ptr, i64, i64 } %t49, 1
|
|
%t51 = icmp uge i64 1, %t50
|
|
br i1 %t51, label %range7665, label %inrange7666
|
|
range7665:
|
|
call void @finch_panic_index(ptr @.str.5014, i64 4621, i64 1, i64 %t50)
|
|
unreachable
|
|
inrange7666:
|
|
%t52 = extractvalue { ptr, i64, i64 } %t49, 0
|
|
%t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 1
|
|
%t54 = load %S.ast.Node, ptr %t53
|
|
%t55 = load %S.ast.Type, ptr %a15
|
|
%t56 = call %S.gen.Val @finch.gen.exprWant(ptr %t47, %S.ast.Node %t54, %S.ast.Type %t55)
|
|
%t57 = load %S.ast.Type, ptr %a15
|
|
%t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t59 = load { ptr, i64, i64 }, ptr %t58
|
|
%t60 = extractvalue { ptr, i64, i64 } %t59, 1
|
|
%t61 = icmp uge i64 1, %t60
|
|
br i1 %t61, label %range7667, label %inrange7668
|
|
range7667:
|
|
call void @finch_panic_index(ptr @.str.5015, i64 4621, i64 1, i64 %t60)
|
|
unreachable
|
|
inrange7668:
|
|
%t62 = extractvalue { ptr, i64, i64 } %t59, 0
|
|
%t63 = getelementptr inbounds %S.ast.Node, ptr %t62, i64 1
|
|
%t64 = load %S.ast.Node, ptr %t63
|
|
%t65 = call %S.gen.Val @finch.gen.coerce(ptr %t46, %S.gen.Val %t56, %S.ast.Type %t57, %S.ast.Node %t64, { ptr, i64, i64 } { ptr @.str.5016, i64 11, i64 0 })
|
|
%t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t45, %S.gen.Val %t65)
|
|
store { ptr, i64, i64 } %t66, ptr %a67
|
|
%t68 = load ptr, ptr %a1
|
|
%t69 = load { ptr, i64, i64 }, ptr %a37
|
|
%t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.5017, i64 3, i64 0 }, { ptr, i64, i64 } %t69)
|
|
store { ptr, i64, i64 } %t70, ptr %a71
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = load { ptr, i64, i64 }, ptr %a71
|
|
store { ptr, i64, i64 } { ptr @.str.5018, i64 8, i64 0 }, ptr %a75
|
|
store { ptr, i64, i64 } %t73, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
store { ptr, i64, i64 } %t77, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.5019, i64 3, i64 0 }, ptr %a80
|
|
call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a78
|
|
%t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t72, { ptr, i64, i64 } %t81)
|
|
store { ptr, i64, i64 } %t82, ptr %a83
|
|
%t84 = load ptr, ptr %a1
|
|
%t85 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5020, i64 33, i64 0 }, ptr %a87
|
|
store { ptr, i64, i64 } %t85, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t89, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.5021, i64 6, i64 0 }, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
%t94 = load { ptr, i64, i64 }, ptr %a83
|
|
store { ptr, i64, i64 } %t93, ptr %a96
|
|
store { ptr, i64, i64 } %t94, ptr %a97
|
|
call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97)
|
|
%t98 = load { ptr, i64, i64 }, ptr %a95
|
|
store { ptr, i64, i64 } %t98, ptr %a100
|
|
store { ptr, i64, i64 } { ptr @.str.5022, i64 6, i64 0 }, ptr %a101
|
|
call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a99
|
|
%t103 = load ptr, ptr %a1
|
|
%t104 = load %S.ast.Type, ptr %a15
|
|
%t105 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t103, %S.ast.Type %t104)
|
|
store { ptr, i64, i64 } %t102, ptr %a107
|
|
store { ptr, i64, i64 } %t105, ptr %a108
|
|
call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108)
|
|
%t109 = load { ptr, i64, i64 }, ptr %a106
|
|
store { ptr, i64, i64 } %t109, ptr %a111
|
|
store { ptr, i64, i64 } { ptr @.str.5023, i64 1, i64 0 }, ptr %a112
|
|
call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112)
|
|
%t113 = load { ptr, i64, i64 }, ptr %a110
|
|
call void @finch.gen.emit(ptr %t84, { ptr, i64, i64 } %t113)
|
|
%t114 = load ptr, ptr %a1
|
|
%t115 = load { ptr, i64, i64 }, ptr %a3
|
|
%t116 = call { ptr, i64, i64 } @finch.gen.load(ptr %t114, { ptr, i64, i64 } { ptr @.str.5024, i64 3, i64 0 }, { ptr, i64, i64 } %t115)
|
|
store { ptr, i64, i64 } %t116, ptr %a117
|
|
%t118 = load ptr, ptr %a1
|
|
%t119 = load { ptr, i64, i64 }, ptr %a19
|
|
%t120 = load { ptr, i64, i64 }, ptr %a67
|
|
%t121 = load ptr, ptr %a1
|
|
%t122 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5025, i64 23, i64 0 }, ptr %a124
|
|
store { ptr, i64, i64 } %t122, ptr %a125
|
|
call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125)
|
|
%t126 = load { ptr, i64, i64 }, ptr %a123
|
|
store { ptr, i64, i64 } %t126, ptr %a128
|
|
store { ptr, i64, i64 } { ptr @.str.5026, i64 6, i64 0 }, ptr %a129
|
|
call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129)
|
|
%t130 = load { ptr, i64, i64 }, ptr %a127
|
|
%t131 = load { ptr, i64, i64 }, ptr %a117
|
|
store { ptr, i64, i64 } %t130, ptr %a133
|
|
store { ptr, i64, i64 } %t131, ptr %a134
|
|
call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134)
|
|
%t135 = load { ptr, i64, i64 }, ptr %a132
|
|
store { ptr, i64, i64 } %t135, ptr %a137
|
|
store { ptr, i64, i64 } { ptr @.str.5027, i64 6, i64 0 }, ptr %a138
|
|
call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138)
|
|
%t139 = load { ptr, i64, i64 }, ptr %a136
|
|
%t140 = load { ptr, i64, i64 }, ptr %a71
|
|
store { ptr, i64, i64 } %t139, ptr %a142
|
|
store { ptr, i64, i64 } %t140, ptr %a143
|
|
call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143)
|
|
%t144 = load { ptr, i64, i64 }, ptr %a141
|
|
%t145 = call { ptr, i64, i64 } @finch.gen.op(ptr %t121, { ptr, i64, i64 } %t144)
|
|
call void @finch.gen.store(ptr %t118, { ptr, i64, i64 } %t119, { ptr, i64, i64 } %t120, { ptr, i64, i64 } %t145)
|
|
%t146 = load ptr, ptr %a1
|
|
%t147 = load { ptr, i64, i64 }, ptr %a83
|
|
%t148 = load { ptr, i64, i64 }, ptr %a37
|
|
call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.5028, i64 3, i64 0 }, { ptr, i64, i64 } %t147, { ptr, i64, i64 } %t148)
|
|
%t149 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5029, i64 4, i64 0 })
|
|
%t150 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t149, 1
|
|
ret %S.gen.Val %t150
|
|
endif7664:
|
|
%t151 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t151, ptr %a152
|
|
store { ptr, i64, i64 } { ptr @.str.5030, i64 3, i64 0 }, ptr %a153
|
|
%t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153)
|
|
%t155 = icmp ne i32 %t154, 0
|
|
br i1 %t155, label %then7669, label %endif7671
|
|
then7669:
|
|
%t156 = load ptr, ptr %a1
|
|
%t157 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t156, %S.ast.Node %t157, i64 0)
|
|
%t158 = load ptr, ptr %a1
|
|
%t159 = load { ptr, i64, i64 }, ptr %a37
|
|
%t160 = call { ptr, i64, i64 } @finch.gen.load(ptr %t158, { ptr, i64, i64 } { ptr @.str.5031, i64 3, i64 0 }, { ptr, i64, i64 } %t159)
|
|
store { ptr, i64, i64 } %t160, ptr %a161
|
|
%t162 = load ptr, ptr %a1
|
|
%t163 = load ptr, ptr %a1
|
|
%t164 = load { ptr, i64, i64 }, ptr %a161
|
|
store { ptr, i64, i64 } { ptr @.str.5032, i64 12, i64 0 }, ptr %a166
|
|
store { ptr, i64, i64 } %t164, ptr %a167
|
|
call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167)
|
|
%t168 = load { ptr, i64, i64 }, ptr %a165
|
|
store { ptr, i64, i64 } %t168, ptr %a170
|
|
store { ptr, i64, i64 } { ptr @.str.5033, i64 3, i64 0 }, ptr %a171
|
|
call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171)
|
|
%t172 = load { ptr, i64, i64 }, ptr %a169
|
|
%t173 = call { ptr, i64, i64 } @finch.gen.op(ptr %t163, { ptr, i64, i64 } %t172)
|
|
%t174 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.panicIf(ptr %t162, { ptr, i64, i64 } %t173, { ptr, i64, i64 } { ptr @.str.5034, i64 23, i64 0 }, %S.ast.Node %t174)
|
|
%t175 = load ptr, ptr %a1
|
|
%t176 = load { ptr, i64, i64 }, ptr %a161
|
|
store { ptr, i64, i64 } { ptr @.str.5035, i64 8, i64 0 }, ptr %a178
|
|
store { ptr, i64, i64 } %t176, ptr %a179
|
|
call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179)
|
|
%t180 = load { ptr, i64, i64 }, ptr %a177
|
|
store { ptr, i64, i64 } %t180, ptr %a182
|
|
store { ptr, i64, i64 } { ptr @.str.5036, i64 3, i64 0 }, ptr %a183
|
|
call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183)
|
|
%t184 = load { ptr, i64, i64 }, ptr %a181
|
|
%t185 = call { ptr, i64, i64 } @finch.gen.op(ptr %t175, { ptr, i64, i64 } %t184)
|
|
store { ptr, i64, i64 } %t185, ptr %a186
|
|
%t187 = load ptr, ptr %a1
|
|
%t188 = load { ptr, i64, i64 }, ptr %a3
|
|
%t189 = call { ptr, i64, i64 } @finch.gen.load(ptr %t187, { ptr, i64, i64 } { ptr @.str.5037, i64 3, i64 0 }, { ptr, i64, i64 } %t188)
|
|
store { ptr, i64, i64 } %t189, ptr %a190
|
|
%t191 = load ptr, ptr %a1
|
|
%t192 = load { ptr, i64, i64 }, ptr %a19
|
|
%t193 = load ptr, ptr %a1
|
|
%t194 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5038, i64 23, i64 0 }, ptr %a196
|
|
store { ptr, i64, i64 } %t194, ptr %a197
|
|
call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197)
|
|
%t198 = load { ptr, i64, i64 }, ptr %a195
|
|
store { ptr, i64, i64 } %t198, ptr %a200
|
|
store { ptr, i64, i64 } { ptr @.str.5039, i64 6, i64 0 }, ptr %a201
|
|
call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201)
|
|
%t202 = load { ptr, i64, i64 }, ptr %a199
|
|
%t203 = load { ptr, i64, i64 }, ptr %a190
|
|
store { ptr, i64, i64 } %t202, ptr %a205
|
|
store { ptr, i64, i64 } %t203, ptr %a206
|
|
call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206)
|
|
%t207 = load { ptr, i64, i64 }, ptr %a204
|
|
store { ptr, i64, i64 } %t207, ptr %a209
|
|
store { ptr, i64, i64 } { ptr @.str.5040, i64 6, i64 0 }, ptr %a210
|
|
call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210)
|
|
%t211 = load { ptr, i64, i64 }, ptr %a208
|
|
%t212 = load { ptr, i64, i64 }, ptr %a186
|
|
store { ptr, i64, i64 } %t211, ptr %a214
|
|
store { ptr, i64, i64 } %t212, ptr %a215
|
|
call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215)
|
|
%t216 = load { ptr, i64, i64 }, ptr %a213
|
|
%t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t216)
|
|
%t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t191, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t217)
|
|
store { ptr, i64, i64 } %t218, ptr %a219
|
|
%t220 = load ptr, ptr %a1
|
|
%t221 = load { ptr, i64, i64 }, ptr %a186
|
|
%t222 = load { ptr, i64, i64 }, ptr %a37
|
|
call void @finch.gen.store(ptr %t220, { ptr, i64, i64 } { ptr @.str.5041, i64 3, i64 0 }, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222)
|
|
%t223 = load { ptr, i64, i64 }, ptr %a219
|
|
store { ptr, i64, i64 } %t223, ptr %a224
|
|
call void @finch_str_copy(ptr %a225, ptr %a224)
|
|
%t226 = load { ptr, i64, i64 }, ptr %a225
|
|
%t227 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t226, 0
|
|
%t228 = load %S.ast.Type, ptr %a15
|
|
store %S.ast.Type %t228, ptr %a229
|
|
call void @finch.copy.S_ast_Type(ptr %a230, ptr %a229)
|
|
%t231 = load %S.ast.Type, ptr %a230
|
|
%t232 = insertvalue %S.gen.Val %t227, %S.ast.Type %t231, 1
|
|
%t233 = load ptr, ptr %a1
|
|
%t234 = load %S.ast.Type, ptr %a15
|
|
%t235 = call i1 @finch.gen.owning(ptr %t233, %S.ast.Type %t234)
|
|
%t236 = insertvalue %S.gen.Val %t232, i1 %t235, 2
|
|
ret %S.gen.Val %t236
|
|
endif7671:
|
|
%t237 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t237, ptr %a238
|
|
store { ptr, i64, i64 } { ptr @.str.5042, i64 5, i64 0 }, ptr %a239
|
|
%t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239)
|
|
%t241 = icmp ne i32 %t240, 0
|
|
br i1 %t241, label %then7672, label %endif7674
|
|
then7672:
|
|
%t242 = load ptr, ptr %a1
|
|
%t243 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t242, %S.ast.Node %t243, i64 0)
|
|
%t244 = load ptr, ptr %a1
|
|
%t245 = load { ptr, i64, i64 }, ptr %a37
|
|
call void @finch.gen.store(ptr %t244, { ptr, i64, i64 } { ptr @.str.5043, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5044, i64 1, i64 0 }, { ptr, i64, i64 } %t245)
|
|
%t246 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5045, i64 4, i64 0 })
|
|
%t247 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t246, 1
|
|
ret %S.gen.Val %t247
|
|
endif7674:
|
|
%t248 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t248, ptr %a249
|
|
store { ptr, i64, i64 } { ptr @.str.5046, i64 4, i64 0 }, ptr %a250
|
|
%t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250)
|
|
%t252 = icmp ne i32 %t251, 0
|
|
br label %logic.from7675
|
|
logic.from7675:
|
|
br i1 %t252, label %logic.end7677, label %logic.rhs7676
|
|
logic.rhs7676:
|
|
%t253 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t253, ptr %a254
|
|
store { ptr, i64, i64 } { ptr @.str.5047, i64 8, i64 0 }, ptr %a255
|
|
%t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255)
|
|
%t257 = icmp ne i32 %t256, 0
|
|
br label %logic.rend7678
|
|
logic.rend7678:
|
|
br label %logic.end7677
|
|
logic.end7677:
|
|
%t258 = phi i1 [ true, %logic.from7675 ], [ %t257, %logic.rend7678 ]
|
|
br i1 %t258, label %then7679, label %endif7681
|
|
then7679:
|
|
%t259 = load ptr, ptr %a1
|
|
%t260 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t259, %S.ast.Node %t260, i64 1)
|
|
%t261 = load ptr, ptr %a1
|
|
%t262 = load ptr, ptr %a1
|
|
%t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t264 = load { ptr, i64, i64 }, ptr %t263
|
|
%t265 = extractvalue { ptr, i64, i64 } %t264, 1
|
|
%t266 = icmp uge i64 1, %t265
|
|
br i1 %t266, label %range7682, label %inrange7683
|
|
range7682:
|
|
call void @finch_panic_index(ptr @.str.5048, i64 4647, i64 1, i64 %t265)
|
|
unreachable
|
|
inrange7683:
|
|
%t267 = extractvalue { ptr, i64, i64 } %t264, 0
|
|
%t268 = getelementptr inbounds %S.ast.Node, ptr %t267, i64 1
|
|
%t269 = load %S.ast.Node, ptr %t268
|
|
%t270 = load %S.ast.Type, ptr %a15
|
|
%t271 = call %S.gen.Val @finch.gen.exprWant(ptr %t262, %S.ast.Node %t269, %S.ast.Type %t270)
|
|
%t272 = load %S.ast.Type, ptr %a15
|
|
%t273 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t274 = load { ptr, i64, i64 }, ptr %t273
|
|
%t275 = extractvalue { ptr, i64, i64 } %t274, 1
|
|
%t276 = icmp uge i64 1, %t275
|
|
br i1 %t276, label %range7684, label %inrange7685
|
|
range7684:
|
|
call void @finch_panic_index(ptr @.str.5049, i64 4647, i64 1, i64 %t275)
|
|
unreachable
|
|
inrange7685:
|
|
%t277 = extractvalue { ptr, i64, i64 } %t274, 0
|
|
%t278 = getelementptr inbounds %S.ast.Node, ptr %t277, i64 1
|
|
%t279 = load %S.ast.Node, ptr %t278
|
|
%t280 = call %S.gen.Val @finch.gen.coerce(ptr %t261, %S.gen.Val %t271, %S.ast.Type %t272, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.5050, i64 21, i64 0 })
|
|
store %S.gen.Val %t280, ptr %a281
|
|
%t282 = load ptr, ptr %a1
|
|
%t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.5051, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t283, ptr %a284
|
|
%t285 = load ptr, ptr %a1
|
|
%t286 = load { ptr, i64, i64 }, ptr %a284
|
|
call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } { ptr @.str.5052, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5053, i64 2, i64 0 }, { ptr, i64, i64 } %t286)
|
|
%t287 = load ptr, ptr %a1
|
|
%t288 = load { ptr, i64, i64 }, ptr %a37
|
|
%t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t287, { ptr, i64, i64 } { ptr @.str.5054, i64 3, i64 0 }, { ptr, i64, i64 } %t288)
|
|
store { ptr, i64, i64 } %t289, ptr %a290
|
|
%t291 = load ptr, ptr %a1
|
|
%t292 = load { ptr, i64, i64 }, ptr %a3
|
|
%t293 = call { ptr, i64, i64 } @finch.gen.load(ptr %t291, { ptr, i64, i64 } { ptr @.str.5055, i64 3, i64 0 }, { ptr, i64, i64 } %t292)
|
|
store { ptr, i64, i64 } %t293, ptr %a294
|
|
%t295 = load ptr, ptr %a1
|
|
%t296 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t295, { ptr, i64, i64 } { ptr @.str.5056, i64 3, i64 0 })
|
|
store { ptr, i64, i64 } %t296, ptr %a297
|
|
%t298 = load ptr, ptr %a1
|
|
%t299 = load { ptr, i64, i64 }, ptr %a297
|
|
call void @finch.gen.store(ptr %t298, { ptr, i64, i64 } { ptr @.str.5057, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5058, i64 1, i64 0 }, { ptr, i64, i64 } %t299)
|
|
%t300 = load ptr, ptr %a1
|
|
%t301 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t300, { ptr, i64, i64 } { ptr @.str.5059, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t301, ptr %a302
|
|
%t303 = load ptr, ptr %a1
|
|
%t304 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t303, { ptr, i64, i64 } { ptr @.str.5060, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t304, ptr %a305
|
|
%t306 = load ptr, ptr %a1
|
|
%t307 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t306, { ptr, i64, i64 } { ptr @.str.5061, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t307, ptr %a308
|
|
%t309 = load ptr, ptr %a1
|
|
%t310 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t309, { ptr, i64, i64 } { ptr @.str.5062, i64 9, i64 0 })
|
|
store { ptr, i64, i64 } %t310, ptr %a311
|
|
%t312 = load ptr, ptr %a1
|
|
%t313 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t312, { ptr, i64, i64 } { ptr @.str.5063, i64 8, i64 0 })
|
|
store { ptr, i64, i64 } %t313, ptr %a314
|
|
%t315 = load ptr, ptr %a1
|
|
%t316 = load { ptr, i64, i64 }, ptr %a302
|
|
call void @finch.gen.br(ptr %t315, { ptr, i64, i64 } %t316)
|
|
%t317 = load ptr, ptr %a1
|
|
%t318 = load { ptr, i64, i64 }, ptr %a302
|
|
call void @finch.gen.label(ptr %t317, { ptr, i64, i64 } %t318)
|
|
%t319 = load ptr, ptr %a1
|
|
%t320 = load { ptr, i64, i64 }, ptr %a297
|
|
%t321 = call { ptr, i64, i64 } @finch.gen.load(ptr %t319, { ptr, i64, i64 } { ptr @.str.5064, i64 3, i64 0 }, { ptr, i64, i64 } %t320)
|
|
store { ptr, i64, i64 } %t321, ptr %a322
|
|
%t323 = load ptr, ptr %a1
|
|
%t324 = load { ptr, i64, i64 }, ptr %a322
|
|
store { ptr, i64, i64 } { ptr @.str.5065, i64 13, i64 0 }, ptr %a326
|
|
store { ptr, i64, i64 } %t324, ptr %a327
|
|
call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327)
|
|
%t328 = load { ptr, i64, i64 }, ptr %a325
|
|
store { ptr, i64, i64 } %t328, ptr %a330
|
|
store { ptr, i64, i64 } { ptr @.str.5066, i64 2, i64 0 }, ptr %a331
|
|
call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331)
|
|
%t332 = load { ptr, i64, i64 }, ptr %a329
|
|
%t333 = load { ptr, i64, i64 }, ptr %a290
|
|
store { ptr, i64, i64 } %t332, ptr %a335
|
|
store { ptr, i64, i64 } %t333, ptr %a336
|
|
call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336)
|
|
%t337 = load { ptr, i64, i64 }, ptr %a334
|
|
%t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t323, { ptr, i64, i64 } %t337)
|
|
store { ptr, i64, i64 } %t338, ptr %a339
|
|
%t340 = load ptr, ptr %a1
|
|
%t341 = load { ptr, i64, i64 }, ptr %a339
|
|
%t342 = load { ptr, i64, i64 }, ptr %a305
|
|
%t343 = load { ptr, i64, i64 }, ptr %a314
|
|
call void @finch.gen.condBr(ptr %t340, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t342, { ptr, i64, i64 } %t343)
|
|
%t344 = load ptr, ptr %a1
|
|
%t345 = load { ptr, i64, i64 }, ptr %a305
|
|
call void @finch.gen.label(ptr %t344, { ptr, i64, i64 } %t345)
|
|
%t346 = load ptr, ptr %a1
|
|
%t347 = load { ptr, i64, i64 }, ptr %a19
|
|
%t348 = load ptr, ptr %a1
|
|
%t349 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5067, i64 23, i64 0 }, ptr %a351
|
|
store { ptr, i64, i64 } %t349, ptr %a352
|
|
call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352)
|
|
%t353 = load { ptr, i64, i64 }, ptr %a350
|
|
store { ptr, i64, i64 } %t353, ptr %a355
|
|
store { ptr, i64, i64 } { ptr @.str.5068, i64 6, i64 0 }, ptr %a356
|
|
call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356)
|
|
%t357 = load { ptr, i64, i64 }, ptr %a354
|
|
%t358 = load { ptr, i64, i64 }, ptr %a294
|
|
store { ptr, i64, i64 } %t357, ptr %a360
|
|
store { ptr, i64, i64 } %t358, ptr %a361
|
|
call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361)
|
|
%t362 = load { ptr, i64, i64 }, ptr %a359
|
|
store { ptr, i64, i64 } %t362, ptr %a364
|
|
store { ptr, i64, i64 } { ptr @.str.5069, i64 6, i64 0 }, ptr %a365
|
|
call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365)
|
|
%t366 = load { ptr, i64, i64 }, ptr %a363
|
|
%t367 = load { ptr, i64, i64 }, ptr %a322
|
|
store { ptr, i64, i64 } %t366, ptr %a369
|
|
store { ptr, i64, i64 } %t367, ptr %a370
|
|
call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370)
|
|
%t371 = load { ptr, i64, i64 }, ptr %a368
|
|
%t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t348, { ptr, i64, i64 } %t371)
|
|
%t373 = call { ptr, i64, i64 } @finch.gen.load(ptr %t346, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t372)
|
|
%t374 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t373, 0
|
|
%t375 = load %S.ast.Type, ptr %a15
|
|
store %S.ast.Type %t375, ptr %a376
|
|
call void @finch.copy.S_ast_Type(ptr %a377, ptr %a376)
|
|
%t378 = load %S.ast.Type, ptr %a377
|
|
%t379 = insertvalue %S.gen.Val %t374, %S.ast.Type %t378, 1
|
|
store %S.gen.Val %t379, ptr %a380
|
|
%t381 = load ptr, ptr %a1
|
|
%t382 = load %S.gen.Val, ptr %a380
|
|
%t383 = load %S.gen.Val, ptr %a281
|
|
%t384 = load %S.ast.Node, ptr %a2
|
|
%t385 = call %S.gen.Val @finch.gen.compare(ptr %t381, { ptr, i64, i64 } { ptr @.str.5070, i64 2, i64 0 }, %S.gen.Val %t382, %S.gen.Val %t383, %S.ast.Node %t384)
|
|
%t386 = extractvalue %S.gen.Val %t385, 0
|
|
store { ptr, i64, i64 } %t386, ptr %a387
|
|
call void @finch_str_copy(ptr %a388, ptr %a387)
|
|
%t389 = load { ptr, i64, i64 }, ptr %a388
|
|
store { ptr, i64, i64 } %t389, ptr %a390
|
|
%t391 = load ptr, ptr %a1
|
|
%t392 = load { ptr, i64, i64 }, ptr %a390
|
|
%t393 = load { ptr, i64, i64 }, ptr %a308
|
|
%t394 = load { ptr, i64, i64 }, ptr %a311
|
|
call void @finch.gen.condBr(ptr %t391, { ptr, i64, i64 } %t392, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394)
|
|
%t395 = load ptr, ptr %a1
|
|
%t396 = load { ptr, i64, i64 }, ptr %a308
|
|
call void @finch.gen.label(ptr %t395, { ptr, i64, i64 } %t396)
|
|
%t397 = load ptr, ptr %a1
|
|
%t398 = load { ptr, i64, i64 }, ptr %a322
|
|
%t399 = load { ptr, i64, i64 }, ptr %a284
|
|
call void @finch.gen.store(ptr %t397, { ptr, i64, i64 } { ptr @.str.5071, i64 3, i64 0 }, { ptr, i64, i64 } %t398, { ptr, i64, i64 } %t399)
|
|
%t400 = load ptr, ptr %a1
|
|
%t401 = load { ptr, i64, i64 }, ptr %a314
|
|
call void @finch.gen.br(ptr %t400, { ptr, i64, i64 } %t401)
|
|
%t402 = load ptr, ptr %a1
|
|
%t403 = load { ptr, i64, i64 }, ptr %a311
|
|
call void @finch.gen.label(ptr %t402, { ptr, i64, i64 } %t403)
|
|
%t404 = load ptr, ptr %a1
|
|
%t405 = load ptr, ptr %a1
|
|
%t406 = load { ptr, i64, i64 }, ptr %a322
|
|
store { ptr, i64, i64 } { ptr @.str.5073, i64 8, i64 0 }, ptr %a408
|
|
store { ptr, i64, i64 } %t406, ptr %a409
|
|
call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409)
|
|
%t410 = load { ptr, i64, i64 }, ptr %a407
|
|
store { ptr, i64, i64 } %t410, ptr %a412
|
|
store { ptr, i64, i64 } { ptr @.str.5074, i64 3, i64 0 }, ptr %a413
|
|
call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413)
|
|
%t414 = load { ptr, i64, i64 }, ptr %a411
|
|
%t415 = call { ptr, i64, i64 } @finch.gen.op(ptr %t405, { ptr, i64, i64 } %t414)
|
|
%t416 = load { ptr, i64, i64 }, ptr %a297
|
|
call void @finch.gen.store(ptr %t404, { ptr, i64, i64 } { ptr @.str.5072, i64 3, i64 0 }, { ptr, i64, i64 } %t415, { ptr, i64, i64 } %t416)
|
|
%t417 = load ptr, ptr %a1
|
|
%t418 = load { ptr, i64, i64 }, ptr %a302
|
|
call void @finch.gen.br(ptr %t417, { ptr, i64, i64 } %t418)
|
|
%t419 = load ptr, ptr %a1
|
|
%t420 = load { ptr, i64, i64 }, ptr %a314
|
|
call void @finch.gen.label(ptr %t419, { ptr, i64, i64 } %t420)
|
|
%t421 = load ptr, ptr %a1
|
|
%t422 = load { ptr, i64, i64 }, ptr %a284
|
|
%t423 = call { ptr, i64, i64 } @finch.gen.load(ptr %t421, { ptr, i64, i64 } { ptr @.str.5075, i64 3, i64 0 }, { ptr, i64, i64 } %t422)
|
|
store { ptr, i64, i64 } %t423, ptr %a424
|
|
%t425 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t425, ptr %a426
|
|
store { ptr, i64, i64 } { ptr @.str.5076, i64 4, i64 0 }, ptr %a427
|
|
%t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427)
|
|
%t429 = icmp ne i32 %t428, 0
|
|
br i1 %t429, label %then7686, label %endif7688
|
|
then7686:
|
|
%t430 = load { ptr, i64, i64 }, ptr %a424
|
|
store { ptr, i64, i64 } %t430, ptr %a431
|
|
call void @finch_str_copy(ptr %a432, ptr %a431)
|
|
%t433 = load { ptr, i64, i64 }, ptr %a432
|
|
%t434 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t433, 0
|
|
%t435 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5077, i64 3, i64 0 })
|
|
%t436 = insertvalue %S.gen.Val %t434, %S.ast.Type %t435, 1
|
|
ret %S.gen.Val %t436
|
|
endif7688:
|
|
%t437 = load ptr, ptr %a1
|
|
%t438 = load { ptr, i64, i64 }, ptr %a424
|
|
store { ptr, i64, i64 } { ptr @.str.5078, i64 13, i64 0 }, ptr %a440
|
|
store { ptr, i64, i64 } %t438, ptr %a441
|
|
call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441)
|
|
%t442 = load { ptr, i64, i64 }, ptr %a439
|
|
store { ptr, i64, i64 } %t442, ptr %a444
|
|
store { ptr, i64, i64 } { ptr @.str.5079, i64 3, i64 0 }, ptr %a445
|
|
call void @finch_str_concat(ptr %a443, ptr %a444, ptr %a445)
|
|
%t446 = load { ptr, i64, i64 }, ptr %a443
|
|
%t447 = call { ptr, i64, i64 } @finch.gen.op(ptr %t437, { ptr, i64, i64 } %t446)
|
|
%t448 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t447, 0
|
|
%t449 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5080, i64 4, i64 0 })
|
|
%t450 = insertvalue %S.gen.Val %t448, %S.ast.Type %t449, 1
|
|
ret %S.gen.Val %t450
|
|
endif7681:
|
|
%t451 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t451, ptr %a452
|
|
store { ptr, i64, i64 } { ptr @.str.5081, i64 4, i64 0 }, ptr %a453
|
|
%t454 = call i32 @finch_str_eq(ptr %a452, ptr %a453)
|
|
%t455 = icmp ne i32 %t454, 0
|
|
br i1 %t455, label %then7689, label %endif7691
|
|
then7689:
|
|
%t456 = load ptr, ptr %a1
|
|
%t457 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t456, %S.ast.Node %t457, i64 1)
|
|
%t458 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0
|
|
%t459 = load { ptr, i64, i64 }, ptr %t458
|
|
store { ptr, i64, i64 } %t459, ptr %a460
|
|
store { ptr, i64, i64 } { ptr @.str.5082, i64 3, i64 0 }, ptr %a461
|
|
%t462 = call i32 @finch_str_eq(ptr %a460, ptr %a461)
|
|
%t463 = icmp eq i32 %t462, 0
|
|
br i1 %t463, label %then7692, label %endif7694
|
|
then7692:
|
|
%t464 = load ptr, ptr %a1
|
|
%t465 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t464, %S.ast.Node %t465, { ptr, i64, i64 } { ptr @.str.5083, i64 31, i64 0 })
|
|
br label %endif7694
|
|
endif7694:
|
|
%t466 = load ptr, ptr %a1
|
|
%t467 = load ptr, ptr %a1
|
|
%t468 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t469 = load { ptr, i64, i64 }, ptr %t468
|
|
%t470 = extractvalue { ptr, i64, i64 } %t469, 1
|
|
%t471 = icmp uge i64 1, %t470
|
|
br i1 %t471, label %range7695, label %inrange7696
|
|
range7695:
|
|
call void @finch_panic_index(ptr @.str.5084, i64 4686, i64 1, i64 %t470)
|
|
unreachable
|
|
inrange7696:
|
|
%t472 = extractvalue { ptr, i64, i64 } %t469, 0
|
|
%t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 1
|
|
%t474 = load %S.ast.Node, ptr %t473
|
|
%t475 = call %S.gen.Val @finch.gen.strArg(ptr %t467, %S.ast.Node %t474, { ptr, i64, i64 } { ptr @.str.5085, i64 13, i64 0 })
|
|
%t476 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t466, %S.gen.Val %t475)
|
|
store { ptr, i64, i64 } %t476, ptr %a477
|
|
%t478 = load ptr, ptr %a1
|
|
%t479 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t478)
|
|
store { ptr, i64, i64 } %t479, ptr %a480
|
|
%t481 = load ptr, ptr %a1
|
|
%t482 = load { ptr, i64, i64 }, ptr %a480
|
|
store { ptr, i64, i64 } { ptr @.str.5086, i64 30, i64 0 }, ptr %a484
|
|
store { ptr, i64, i64 } %t482, ptr %a485
|
|
call void @finch_str_concat(ptr %a483, ptr %a484, ptr %a485)
|
|
%t486 = load { ptr, i64, i64 }, ptr %a483
|
|
store { ptr, i64, i64 } %t486, ptr %a488
|
|
store { ptr, i64, i64 } { ptr @.str.5087, i64 6, i64 0 }, ptr %a489
|
|
call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489)
|
|
%t490 = load { ptr, i64, i64 }, ptr %a487
|
|
%t491 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t490, ptr %a493
|
|
store { ptr, i64, i64 } %t491, ptr %a494
|
|
call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494)
|
|
%t495 = load { ptr, i64, i64 }, ptr %a492
|
|
store { ptr, i64, i64 } %t495, ptr %a497
|
|
store { ptr, i64, i64 } { ptr @.str.5088, i64 6, i64 0 }, ptr %a498
|
|
call void @finch_str_concat(ptr %a496, ptr %a497, ptr %a498)
|
|
%t499 = load { ptr, i64, i64 }, ptr %a496
|
|
%t500 = load { ptr, i64, i64 }, ptr %a477
|
|
store { ptr, i64, i64 } %t499, ptr %a502
|
|
store { ptr, i64, i64 } %t500, ptr %a503
|
|
call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503)
|
|
%t504 = load { ptr, i64, i64 }, ptr %a501
|
|
store { ptr, i64, i64 } %t504, ptr %a506
|
|
store { ptr, i64, i64 } { ptr @.str.5089, i64 1, i64 0 }, ptr %a507
|
|
call void @finch_str_concat(ptr %a505, ptr %a506, ptr %a507)
|
|
%t508 = load { ptr, i64, i64 }, ptr %a505
|
|
call void @finch.gen.emit(ptr %t481, { ptr, i64, i64 } %t508)
|
|
%t509 = load ptr, ptr %a1
|
|
%t510 = load { ptr, i64, i64 }, ptr %a480
|
|
%t511 = call { ptr, i64, i64 } @finch.gen.load(ptr %t509, { ptr, i64, i64 } { ptr @.str.5090, i64 17, i64 0 }, { ptr, i64, i64 } %t510)
|
|
%t512 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t511, 0
|
|
%t513 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5091, i64 3, i64 0 })
|
|
%t514 = insertvalue %S.gen.Val %t512, %S.ast.Type %t513, 1
|
|
%t515 = insertvalue %S.gen.Val %t514, i1 true, 2
|
|
ret %S.gen.Val %t515
|
|
endif7691:
|
|
%t516 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t516, ptr %a517
|
|
store { ptr, i64, i64 } { ptr @.str.5092, i64 6, i64 0 }, ptr %a518
|
|
%t519 = call i32 @finch_str_eq(ptr %a517, ptr %a518)
|
|
%t520 = icmp ne i32 %t519, 0
|
|
br i1 %t520, label %then7697, label %endif7699
|
|
then7697:
|
|
%t521 = load ptr, ptr %a1
|
|
%t522 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t521, %S.ast.Node %t522, i64 2)
|
|
%t523 = load ptr, ptr %a1
|
|
%t524 = load ptr, ptr %a1
|
|
%t525 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t526 = load { ptr, i64, i64 }, ptr %t525
|
|
%t527 = extractvalue { ptr, i64, i64 } %t526, 1
|
|
%t528 = icmp uge i64 1, %t527
|
|
br i1 %t528, label %range7700, label %inrange7701
|
|
range7700:
|
|
call void @finch_panic_index(ptr @.str.5093, i64 4693, i64 1, i64 %t527)
|
|
unreachable
|
|
inrange7701:
|
|
%t529 = extractvalue { ptr, i64, i64 } %t526, 0
|
|
%t530 = getelementptr inbounds %S.ast.Node, ptr %t529, i64 1
|
|
%t531 = load %S.ast.Node, ptr %t530
|
|
%t532 = call %S.gen.Val @finch.gen.expr(ptr %t524, %S.ast.Node %t531)
|
|
%t533 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5094, i64 3, i64 0 })
|
|
%t534 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t535 = load { ptr, i64, i64 }, ptr %t534
|
|
%t536 = extractvalue { ptr, i64, i64 } %t535, 1
|
|
%t537 = icmp uge i64 1, %t536
|
|
br i1 %t537, label %range7702, label %inrange7703
|
|
range7702:
|
|
call void @finch_panic_index(ptr @.str.5095, i64 4693, i64 1, i64 %t536)
|
|
unreachable
|
|
inrange7703:
|
|
%t538 = extractvalue { ptr, i64, i64 } %t535, 0
|
|
%t539 = getelementptr inbounds %S.ast.Node, ptr %t538, i64 1
|
|
%t540 = load %S.ast.Node, ptr %t539
|
|
%t541 = call %S.gen.Val @finch.gen.coerce(ptr %t523, %S.gen.Val %t532, %S.ast.Type %t533, %S.ast.Node %t540, { ptr, i64, i64 } { ptr @.str.5096, i64 12, i64 0 })
|
|
%t542 = extractvalue %S.gen.Val %t541, 0
|
|
store { ptr, i64, i64 } %t542, ptr %a543
|
|
call void @finch_str_copy(ptr %a544, ptr %a543)
|
|
%t545 = load { ptr, i64, i64 }, ptr %a544
|
|
store { ptr, i64, i64 } %t545, ptr %a546
|
|
%t547 = load ptr, ptr %a1
|
|
%t548 = load ptr, ptr %a1
|
|
%t549 = load ptr, ptr %a1
|
|
%t550 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t551 = load { ptr, i64, i64 }, ptr %t550
|
|
%t552 = extractvalue { ptr, i64, i64 } %t551, 1
|
|
%t553 = icmp uge i64 2, %t552
|
|
br i1 %t553, label %range7704, label %inrange7705
|
|
range7704:
|
|
call void @finch_panic_index(ptr @.str.5097, i64 4694, i64 2, i64 %t552)
|
|
unreachable
|
|
inrange7705:
|
|
%t554 = extractvalue { ptr, i64, i64 } %t551, 0
|
|
%t555 = getelementptr inbounds %S.ast.Node, ptr %t554, i64 2
|
|
%t556 = load %S.ast.Node, ptr %t555
|
|
%t557 = load %S.ast.Type, ptr %a15
|
|
%t558 = call %S.gen.Val @finch.gen.exprWant(ptr %t549, %S.ast.Node %t556, %S.ast.Type %t557)
|
|
%t559 = load %S.ast.Type, ptr %a15
|
|
%t560 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t561 = load { ptr, i64, i64 }, ptr %t560
|
|
%t562 = extractvalue { ptr, i64, i64 } %t561, 1
|
|
%t563 = icmp uge i64 2, %t562
|
|
br i1 %t563, label %range7706, label %inrange7707
|
|
range7706:
|
|
call void @finch_panic_index(ptr @.str.5098, i64 4694, i64 2, i64 %t562)
|
|
unreachable
|
|
inrange7707:
|
|
%t564 = extractvalue { ptr, i64, i64 } %t561, 0
|
|
%t565 = getelementptr inbounds %S.ast.Node, ptr %t564, i64 2
|
|
%t566 = load %S.ast.Node, ptr %t565
|
|
%t567 = call %S.gen.Val @finch.gen.coerce(ptr %t548, %S.gen.Val %t558, %S.ast.Type %t559, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.5099, i64 11, i64 0 })
|
|
%t568 = call { ptr, i64, i64 } @finch.gen.own(ptr %t547, %S.gen.Val %t567)
|
|
store { ptr, i64, i64 } %t568, ptr %a569
|
|
%t570 = load ptr, ptr %a1
|
|
%t571 = load ptr, ptr %a1
|
|
%t572 = icmp eq ptr %t571, null
|
|
br i1 %t572, label %panic7708, label %ok7709
|
|
panic7708:
|
|
call void @finch_panic(ptr @.str.5100, i64 4695, ptr @.str.5101)
|
|
unreachable
|
|
ok7709:
|
|
%t573 = getelementptr inbounds %S.gen.Gen, ptr %t571, i32 0, i32 1
|
|
%t574 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t575 = load i64, ptr %t574
|
|
%t576 = load { ptr, i64, i64 }, ptr %t573
|
|
%t577 = extractvalue { ptr, i64, i64 } %t576, 1
|
|
%t578 = icmp uge i64 %t575, %t577
|
|
br i1 %t578, label %range7710, label %inrange7711
|
|
range7710:
|
|
call void @finch_panic_index(ptr @.str.5102, i64 4695, i64 %t575, i64 %t577)
|
|
unreachable
|
|
inrange7711:
|
|
%t579 = extractvalue { ptr, i64, i64 } %t576, 0
|
|
%t580 = getelementptr inbounds { ptr, i64, i64 }, ptr %t579, i64 %t575
|
|
%t581 = load { ptr, i64, i64 }, ptr %t580
|
|
%t582 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t570, { ptr, i64, i64 } %t581)
|
|
store { ptr, i64, i64 } %t582, ptr %a583
|
|
%t584 = load ptr, ptr %a1
|
|
%t585 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5103, i64 36, i64 0 }, ptr %a587
|
|
store { ptr, i64, i64 } %t585, ptr %a588
|
|
call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588)
|
|
%t589 = load { ptr, i64, i64 }, ptr %a586
|
|
store { ptr, i64, i64 } %t589, ptr %a591
|
|
store { ptr, i64, i64 } { ptr @.str.5104, i64 6, i64 0 }, ptr %a592
|
|
call void @finch_str_concat(ptr %a590, ptr %a591, ptr %a592)
|
|
%t593 = load { ptr, i64, i64 }, ptr %a590
|
|
%t594 = load { ptr, i64, i64 }, ptr %a546
|
|
store { ptr, i64, i64 } %t593, ptr %a596
|
|
store { ptr, i64, i64 } %t594, ptr %a597
|
|
call void @finch_str_concat(ptr %a595, ptr %a596, ptr %a597)
|
|
%t598 = load { ptr, i64, i64 }, ptr %a595
|
|
store { ptr, i64, i64 } %t598, ptr %a600
|
|
store { ptr, i64, i64 } { ptr @.str.5105, i64 6, i64 0 }, ptr %a601
|
|
call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601)
|
|
%t602 = load { ptr, i64, i64 }, ptr %a599
|
|
%t603 = load ptr, ptr %a1
|
|
%t604 = load %S.ast.Type, ptr %a15
|
|
%t605 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t603, %S.ast.Type %t604)
|
|
store { ptr, i64, i64 } %t602, ptr %a607
|
|
store { ptr, i64, i64 } %t605, ptr %a608
|
|
call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608)
|
|
%t609 = load { ptr, i64, i64 }, ptr %a606
|
|
store { ptr, i64, i64 } %t609, ptr %a611
|
|
store { ptr, i64, i64 } { ptr @.str.5106, i64 6, i64 0 }, ptr %a612
|
|
call void @finch_str_concat(ptr %a610, ptr %a611, ptr %a612)
|
|
%t613 = load { ptr, i64, i64 }, ptr %a610
|
|
%t614 = load { ptr, i64, i64 }, ptr %a583
|
|
store { ptr, i64, i64 } %t613, ptr %a616
|
|
store { ptr, i64, i64 } %t614, ptr %a617
|
|
call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617)
|
|
%t618 = load { ptr, i64, i64 }, ptr %a615
|
|
store { ptr, i64, i64 } %t618, ptr %a620
|
|
store { ptr, i64, i64 } { ptr @.str.5107, i64 6, i64 0 }, ptr %a621
|
|
call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621)
|
|
%t622 = load { ptr, i64, i64 }, ptr %a619
|
|
%t623 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t624 = load i64, ptr %t623
|
|
call void @finch_str_from_int(ptr %a625, i64 %t624)
|
|
%t626 = load { ptr, i64, i64 }, ptr %a625
|
|
store { ptr, i64, i64 } %t622, ptr %a628
|
|
store { ptr, i64, i64 } %t626, ptr %a629
|
|
call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629)
|
|
%t630 = load { ptr, i64, i64 }, ptr %a627
|
|
store { ptr, i64, i64 } %t630, ptr %a632
|
|
store { ptr, i64, i64 } { ptr @.str.5108, i64 1, i64 0 }, ptr %a633
|
|
call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633)
|
|
%t634 = load { ptr, i64, i64 }, ptr %a631
|
|
call void @finch.gen.emit(ptr %t584, { ptr, i64, i64 } %t634)
|
|
%t635 = load ptr, ptr %a1
|
|
%t636 = load { ptr, i64, i64 }, ptr %a3
|
|
%t637 = call { ptr, i64, i64 } @finch.gen.load(ptr %t635, { ptr, i64, i64 } { ptr @.str.5109, i64 3, i64 0 }, { ptr, i64, i64 } %t636)
|
|
store { ptr, i64, i64 } %t637, ptr %a638
|
|
%t639 = load ptr, ptr %a1
|
|
%t640 = load { ptr, i64, i64 }, ptr %a19
|
|
%t641 = load { ptr, i64, i64 }, ptr %a569
|
|
%t642 = load ptr, ptr %a1
|
|
%t643 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5110, i64 23, i64 0 }, ptr %a645
|
|
store { ptr, i64, i64 } %t643, ptr %a646
|
|
call void @finch_str_concat(ptr %a644, ptr %a645, ptr %a646)
|
|
%t647 = load { ptr, i64, i64 }, ptr %a644
|
|
store { ptr, i64, i64 } %t647, ptr %a649
|
|
store { ptr, i64, i64 } { ptr @.str.5111, i64 6, i64 0 }, ptr %a650
|
|
call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650)
|
|
%t651 = load { ptr, i64, i64 }, ptr %a648
|
|
%t652 = load { ptr, i64, i64 }, ptr %a638
|
|
store { ptr, i64, i64 } %t651, ptr %a654
|
|
store { ptr, i64, i64 } %t652, ptr %a655
|
|
call void @finch_str_concat(ptr %a653, ptr %a654, ptr %a655)
|
|
%t656 = load { ptr, i64, i64 }, ptr %a653
|
|
store { ptr, i64, i64 } %t656, ptr %a658
|
|
store { ptr, i64, i64 } { ptr @.str.5112, i64 6, i64 0 }, ptr %a659
|
|
call void @finch_str_concat(ptr %a657, ptr %a658, ptr %a659)
|
|
%t660 = load { ptr, i64, i64 }, ptr %a657
|
|
%t661 = load { ptr, i64, i64 }, ptr %a546
|
|
store { ptr, i64, i64 } %t660, ptr %a663
|
|
store { ptr, i64, i64 } %t661, ptr %a664
|
|
call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664)
|
|
%t665 = load { ptr, i64, i64 }, ptr %a662
|
|
%t666 = call { ptr, i64, i64 } @finch.gen.op(ptr %t642, { ptr, i64, i64 } %t665)
|
|
call void @finch.gen.store(ptr %t639, { ptr, i64, i64 } %t640, { ptr, i64, i64 } %t641, { ptr, i64, i64 } %t666)
|
|
%t667 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5113, i64 4, i64 0 })
|
|
%t668 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t667, 1
|
|
ret %S.gen.Val %t668
|
|
endif7699:
|
|
%t669 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t669, ptr %a670
|
|
store { ptr, i64, i64 } { ptr @.str.5114, i64 6, i64 0 }, ptr %a671
|
|
%t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671)
|
|
%t673 = icmp ne i32 %t672, 0
|
|
br i1 %t673, label %then7712, label %endif7714
|
|
then7712:
|
|
%t674 = load ptr, ptr %a1
|
|
%t675 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 1)
|
|
%t676 = load ptr, ptr %a1
|
|
%t677 = load ptr, ptr %a1
|
|
%t678 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t679 = load { ptr, i64, i64 }, ptr %t678
|
|
%t680 = extractvalue { ptr, i64, i64 } %t679, 1
|
|
%t681 = icmp uge i64 1, %t680
|
|
br i1 %t681, label %range7715, label %inrange7716
|
|
range7715:
|
|
call void @finch_panic_index(ptr @.str.5115, i64 4703, i64 1, i64 %t680)
|
|
unreachable
|
|
inrange7716:
|
|
%t682 = extractvalue { ptr, i64, i64 } %t679, 0
|
|
%t683 = getelementptr inbounds %S.ast.Node, ptr %t682, i64 1
|
|
%t684 = load %S.ast.Node, ptr %t683
|
|
%t685 = call %S.gen.Val @finch.gen.expr(ptr %t677, %S.ast.Node %t684)
|
|
%t686 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5116, i64 3, i64 0 })
|
|
%t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t688 = load { ptr, i64, i64 }, ptr %t687
|
|
%t689 = extractvalue { ptr, i64, i64 } %t688, 1
|
|
%t690 = icmp uge i64 1, %t689
|
|
br i1 %t690, label %range7717, label %inrange7718
|
|
range7717:
|
|
call void @finch_panic_index(ptr @.str.5117, i64 4703, i64 1, i64 %t689)
|
|
unreachable
|
|
inrange7718:
|
|
%t691 = extractvalue { ptr, i64, i64 } %t688, 0
|
|
%t692 = getelementptr inbounds %S.ast.Node, ptr %t691, i64 1
|
|
%t693 = load %S.ast.Node, ptr %t692
|
|
%t694 = call %S.gen.Val @finch.gen.coerce(ptr %t676, %S.gen.Val %t685, %S.ast.Type %t686, %S.ast.Node %t693, { ptr, i64, i64 } { ptr @.str.5118, i64 12, i64 0 })
|
|
%t695 = extractvalue %S.gen.Val %t694, 0
|
|
store { ptr, i64, i64 } %t695, ptr %a696
|
|
call void @finch_str_copy(ptr %a697, ptr %a696)
|
|
%t698 = load { ptr, i64, i64 }, ptr %a697
|
|
store { ptr, i64, i64 } %t698, ptr %a699
|
|
%t700 = load ptr, ptr %a1
|
|
%t701 = load { ptr, i64, i64 }, ptr %a699
|
|
%t702 = load ptr, ptr %a1
|
|
%t703 = load { ptr, i64, i64 }, ptr %a37
|
|
%t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.5119, i64 3, i64 0 }, { ptr, i64, i64 } %t703)
|
|
%t705 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.boundsCheck(ptr %t700, { ptr, i64, i64 } %t701, { ptr, i64, i64 } %t704, %S.ast.Node %t705)
|
|
%t706 = load ptr, ptr %a1
|
|
%t707 = load { ptr, i64, i64 }, ptr %a3
|
|
%t708 = call { ptr, i64, i64 } @finch.gen.load(ptr %t706, { ptr, i64, i64 } { ptr @.str.5120, i64 3, i64 0 }, { ptr, i64, i64 } %t707)
|
|
store { ptr, i64, i64 } %t708, ptr %a709
|
|
%t710 = load ptr, ptr %a1
|
|
%t711 = load { ptr, i64, i64 }, ptr %a19
|
|
%t712 = load ptr, ptr %a1
|
|
%t713 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5121, i64 23, i64 0 }, ptr %a715
|
|
store { ptr, i64, i64 } %t713, ptr %a716
|
|
call void @finch_str_concat(ptr %a714, ptr %a715, ptr %a716)
|
|
%t717 = load { ptr, i64, i64 }, ptr %a714
|
|
store { ptr, i64, i64 } %t717, ptr %a719
|
|
store { ptr, i64, i64 } { ptr @.str.5122, i64 6, i64 0 }, ptr %a720
|
|
call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720)
|
|
%t721 = load { ptr, i64, i64 }, ptr %a718
|
|
%t722 = load { ptr, i64, i64 }, ptr %a709
|
|
store { ptr, i64, i64 } %t721, ptr %a724
|
|
store { ptr, i64, i64 } %t722, ptr %a725
|
|
call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725)
|
|
%t726 = load { ptr, i64, i64 }, ptr %a723
|
|
store { ptr, i64, i64 } %t726, ptr %a728
|
|
store { ptr, i64, i64 } { ptr @.str.5123, i64 6, i64 0 }, ptr %a729
|
|
call void @finch_str_concat(ptr %a727, ptr %a728, ptr %a729)
|
|
%t730 = load { ptr, i64, i64 }, ptr %a727
|
|
%t731 = load { ptr, i64, i64 }, ptr %a699
|
|
store { ptr, i64, i64 } %t730, ptr %a733
|
|
store { ptr, i64, i64 } %t731, ptr %a734
|
|
call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734)
|
|
%t735 = load { ptr, i64, i64 }, ptr %a732
|
|
%t736 = call { ptr, i64, i64 } @finch.gen.op(ptr %t712, { ptr, i64, i64 } %t735)
|
|
%t737 = call { ptr, i64, i64 } @finch.gen.load(ptr %t710, { ptr, i64, i64 } %t711, { ptr, i64, i64 } %t736)
|
|
store { ptr, i64, i64 } %t737, ptr %a738
|
|
%t739 = load ptr, ptr %a1
|
|
%t740 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5124, i64 36, i64 0 }, ptr %a742
|
|
store { ptr, i64, i64 } %t740, ptr %a743
|
|
call void @finch_str_concat(ptr %a741, ptr %a742, ptr %a743)
|
|
%t744 = load { ptr, i64, i64 }, ptr %a741
|
|
store { ptr, i64, i64 } %t744, ptr %a746
|
|
store { ptr, i64, i64 } { ptr @.str.5125, i64 6, i64 0 }, ptr %a747
|
|
call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747)
|
|
%t748 = load { ptr, i64, i64 }, ptr %a745
|
|
%t749 = load { ptr, i64, i64 }, ptr %a699
|
|
store { ptr, i64, i64 } %t748, ptr %a751
|
|
store { ptr, i64, i64 } %t749, ptr %a752
|
|
call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752)
|
|
%t753 = load { ptr, i64, i64 }, ptr %a750
|
|
store { ptr, i64, i64 } %t753, ptr %a755
|
|
store { ptr, i64, i64 } { ptr @.str.5126, i64 6, i64 0 }, ptr %a756
|
|
call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756)
|
|
%t757 = load { ptr, i64, i64 }, ptr %a754
|
|
%t758 = load ptr, ptr %a1
|
|
%t759 = load %S.ast.Type, ptr %a15
|
|
%t760 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t758, %S.ast.Type %t759)
|
|
store { ptr, i64, i64 } %t757, ptr %a762
|
|
store { ptr, i64, i64 } %t760, ptr %a763
|
|
call void @finch_str_concat(ptr %a761, ptr %a762, ptr %a763)
|
|
%t764 = load { ptr, i64, i64 }, ptr %a761
|
|
store { ptr, i64, i64 } %t764, ptr %a766
|
|
store { ptr, i64, i64 } { ptr @.str.5127, i64 1, i64 0 }, ptr %a767
|
|
call void @finch_str_concat(ptr %a765, ptr %a766, ptr %a767)
|
|
%t768 = load { ptr, i64, i64 }, ptr %a765
|
|
call void @finch.gen.emit(ptr %t739, { ptr, i64, i64 } %t768)
|
|
%t769 = load { ptr, i64, i64 }, ptr %a738
|
|
store { ptr, i64, i64 } %t769, ptr %a770
|
|
call void @finch_str_copy(ptr %a771, ptr %a770)
|
|
%t772 = load { ptr, i64, i64 }, ptr %a771
|
|
%t773 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t772, 0
|
|
%t774 = load %S.ast.Type, ptr %a15
|
|
store %S.ast.Type %t774, ptr %a775
|
|
call void @finch.copy.S_ast_Type(ptr %a776, ptr %a775)
|
|
%t777 = load %S.ast.Type, ptr %a776
|
|
%t778 = insertvalue %S.gen.Val %t773, %S.ast.Type %t777, 1
|
|
%t779 = load ptr, ptr %a1
|
|
%t780 = load %S.ast.Type, ptr %a15
|
|
%t781 = call i1 @finch.gen.owning(ptr %t779, %S.ast.Type %t780)
|
|
%t782 = insertvalue %S.gen.Val %t778, i1 %t781, 2
|
|
ret %S.gen.Val %t782
|
|
endif7714:
|
|
%t783 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t783, ptr %a784
|
|
store { ptr, i64, i64 } { ptr @.str.5128, i64 6, i64 0 }, ptr %a785
|
|
%t786 = call i32 @finch_str_eq(ptr %a784, ptr %a785)
|
|
%t787 = icmp ne i32 %t786, 0
|
|
br i1 %t787, label %then7719, label %endif7721
|
|
then7719:
|
|
%t788 = load ptr, ptr %a1
|
|
%t789 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t788, %S.ast.Node %t789, i64 1)
|
|
%t790 = load ptr, ptr %a1
|
|
%t791 = load ptr, ptr %a1
|
|
%t792 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t793 = load { ptr, i64, i64 }, ptr %t792
|
|
%t794 = extractvalue { ptr, i64, i64 } %t793, 1
|
|
%t795 = icmp uge i64 1, %t794
|
|
br i1 %t795, label %range7722, label %inrange7723
|
|
range7722:
|
|
call void @finch_panic_index(ptr @.str.5129, i64 4712, i64 1, i64 %t794)
|
|
unreachable
|
|
inrange7723:
|
|
%t796 = extractvalue { ptr, i64, i64 } %t793, 0
|
|
%t797 = getelementptr inbounds %S.ast.Node, ptr %t796, i64 1
|
|
%t798 = load %S.ast.Node, ptr %t797
|
|
%t799 = call %S.gen.Val @finch.gen.expr(ptr %t791, %S.ast.Node %t798)
|
|
%t800 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5130, i64 3, i64 0 })
|
|
%t801 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t802 = load { ptr, i64, i64 }, ptr %t801
|
|
%t803 = extractvalue { ptr, i64, i64 } %t802, 1
|
|
%t804 = icmp uge i64 1, %t803
|
|
br i1 %t804, label %range7724, label %inrange7725
|
|
range7724:
|
|
call void @finch_panic_index(ptr @.str.5131, i64 4712, i64 1, i64 %t803)
|
|
unreachable
|
|
inrange7725:
|
|
%t805 = extractvalue { ptr, i64, i64 } %t802, 0
|
|
%t806 = getelementptr inbounds %S.ast.Node, ptr %t805, i64 1
|
|
%t807 = load %S.ast.Node, ptr %t806
|
|
%t808 = call %S.gen.Val @finch.gen.coerce(ptr %t790, %S.gen.Val %t799, %S.ast.Type %t800, %S.ast.Node %t807, { ptr, i64, i64 } { ptr @.str.5132, i64 14, i64 0 })
|
|
%t809 = extractvalue %S.gen.Val %t808, 0
|
|
store { ptr, i64, i64 } %t809, ptr %a810
|
|
call void @finch_str_copy(ptr %a811, ptr %a810)
|
|
%t812 = load { ptr, i64, i64 }, ptr %a811
|
|
store { ptr, i64, i64 } %t812, ptr %a813
|
|
%t814 = load ptr, ptr %a1
|
|
%t815 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5133, i64 32, i64 0 }, ptr %a817
|
|
store { ptr, i64, i64 } %t815, ptr %a818
|
|
call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818)
|
|
%t819 = load { ptr, i64, i64 }, ptr %a816
|
|
store { ptr, i64, i64 } %t819, ptr %a821
|
|
store { ptr, i64, i64 } { ptr @.str.5134, i64 6, i64 0 }, ptr %a822
|
|
call void @finch_str_concat(ptr %a820, ptr %a821, ptr %a822)
|
|
%t823 = load { ptr, i64, i64 }, ptr %a820
|
|
%t824 = load { ptr, i64, i64 }, ptr %a813
|
|
store { ptr, i64, i64 } %t823, ptr %a826
|
|
store { ptr, i64, i64 } %t824, ptr %a827
|
|
call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827)
|
|
%t828 = load { ptr, i64, i64 }, ptr %a825
|
|
store { ptr, i64, i64 } %t828, ptr %a830
|
|
store { ptr, i64, i64 } { ptr @.str.5135, i64 6, i64 0 }, ptr %a831
|
|
call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831)
|
|
%t832 = load { ptr, i64, i64 }, ptr %a829
|
|
%t833 = load ptr, ptr %a1
|
|
%t834 = load %S.ast.Type, ptr %a15
|
|
%t835 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t833, %S.ast.Type %t834)
|
|
store { ptr, i64, i64 } %t832, ptr %a837
|
|
store { ptr, i64, i64 } %t835, ptr %a838
|
|
call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838)
|
|
%t839 = load { ptr, i64, i64 }, ptr %a836
|
|
store { ptr, i64, i64 } %t839, ptr %a841
|
|
store { ptr, i64, i64 } { ptr @.str.5136, i64 1, i64 0 }, ptr %a842
|
|
call void @finch_str_concat(ptr %a840, ptr %a841, ptr %a842)
|
|
%t843 = load { ptr, i64, i64 }, ptr %a840
|
|
call void @finch.gen.emit(ptr %t814, { ptr, i64, i64 } %t843)
|
|
%t844 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5137, i64 4, i64 0 })
|
|
%t845 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t844, 1
|
|
ret %S.gen.Val %t845
|
|
endif7721:
|
|
%t846 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t846, ptr %a847
|
|
store { ptr, i64, i64 } { ptr @.str.5138, i64 7, i64 0 }, ptr %a848
|
|
%t849 = call i32 @finch_str_eq(ptr %a847, ptr %a848)
|
|
%t850 = icmp ne i32 %t849, 0
|
|
br i1 %t850, label %then7726, label %endif7728
|
|
then7726:
|
|
%t851 = load ptr, ptr %a1
|
|
%t852 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t851, %S.ast.Node %t852, i64 0)
|
|
%t853 = load ptr, ptr %a1
|
|
%t854 = load { ptr, i64, i64 }, ptr %a37
|
|
%t855 = call { ptr, i64, i64 } @finch.gen.load(ptr %t853, { ptr, i64, i64 } { ptr @.str.5139, i64 3, i64 0 }, { ptr, i64, i64 } %t854)
|
|
store { ptr, i64, i64 } %t855, ptr %a856
|
|
%t857 = load ptr, ptr %a1
|
|
%t858 = load { ptr, i64, i64 }, ptr %a3
|
|
%t859 = call { ptr, i64, i64 } @finch.gen.load(ptr %t857, { ptr, i64, i64 } { ptr @.str.5140, i64 3, i64 0 }, { ptr, i64, i64 } %t858)
|
|
store { ptr, i64, i64 } %t859, ptr %a860
|
|
%t861 = load ptr, ptr %a1
|
|
%t862 = load { ptr, i64, i64 }, ptr %a856
|
|
store { ptr, i64, i64 } { ptr @.str.5141, i64 9, i64 0 }, ptr %a864
|
|
store { ptr, i64, i64 } %t862, ptr %a865
|
|
call void @finch_str_concat(ptr %a863, ptr %a864, ptr %a865)
|
|
%t866 = load { ptr, i64, i64 }, ptr %a863
|
|
store { ptr, i64, i64 } %t866, ptr %a868
|
|
store { ptr, i64, i64 } { ptr @.str.5142, i64 3, i64 0 }, ptr %a869
|
|
call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869)
|
|
%t870 = load { ptr, i64, i64 }, ptr %a867
|
|
%t871 = call { ptr, i64, i64 } @finch.gen.op(ptr %t861, { ptr, i64, i64 } %t870)
|
|
store { ptr, i64, i64 } %t871, ptr %a872
|
|
%t873 = load ptr, ptr %a1
|
|
%t874 = load { ptr, i64, i64 }, ptr %a872
|
|
%t875 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t873, { ptr, i64, i64 } %t874)
|
|
store { ptr, i64, i64 } %t875, ptr %a876
|
|
%t877 = load ptr, ptr %a1
|
|
%t878 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5143, i64 23, i64 0 }, ptr %a880
|
|
store { ptr, i64, i64 } %t878, ptr %a881
|
|
call void @finch_str_concat(ptr %a879, ptr %a880, ptr %a881)
|
|
%t882 = load { ptr, i64, i64 }, ptr %a879
|
|
store { ptr, i64, i64 } %t882, ptr %a884
|
|
store { ptr, i64, i64 } { ptr @.str.5144, i64 6, i64 0 }, ptr %a885
|
|
call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885)
|
|
%t886 = load { ptr, i64, i64 }, ptr %a883
|
|
%t887 = load { ptr, i64, i64 }, ptr %a860
|
|
store { ptr, i64, i64 } %t886, ptr %a889
|
|
store { ptr, i64, i64 } %t887, ptr %a890
|
|
call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890)
|
|
%t891 = load { ptr, i64, i64 }, ptr %a888
|
|
store { ptr, i64, i64 } %t891, ptr %a893
|
|
store { ptr, i64, i64 } { ptr @.str.5145, i64 6, i64 0 }, ptr %a894
|
|
call void @finch_str_concat(ptr %a892, ptr %a893, ptr %a894)
|
|
%t895 = load { ptr, i64, i64 }, ptr %a892
|
|
%t896 = load { ptr, i64, i64 }, ptr %a876
|
|
%t897 = extractvalue { ptr, i64, i64 } %t896, 1
|
|
%t898 = icmp uge i64 3, %t897
|
|
br i1 %t898, label %range7729, label %inrange7730
|
|
range7729:
|
|
call void @finch_panic_index(ptr @.str.5146, i64 4722, i64 3, i64 %t897)
|
|
unreachable
|
|
inrange7730:
|
|
%t899 = extractvalue { ptr, i64, i64 } %t896, 0
|
|
%t900 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 3
|
|
%t901 = load { ptr, i64, i64 }, ptr %t900
|
|
store { ptr, i64, i64 } %t895, ptr %a903
|
|
store { ptr, i64, i64 } %t901, ptr %a904
|
|
call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904)
|
|
%t905 = load { ptr, i64, i64 }, ptr %a902
|
|
%t906 = call { ptr, i64, i64 } @finch.gen.op(ptr %t877, { ptr, i64, i64 } %t905)
|
|
store { ptr, i64, i64 } %t906, ptr %a907
|
|
%t908 = load ptr, ptr %a1
|
|
%t909 = load ptr, ptr %a1
|
|
%t910 = load { ptr, i64, i64 }, ptr %a856
|
|
store { ptr, i64, i64 } { ptr @.str.5148, i64 8, i64 0 }, ptr %a912
|
|
store { ptr, i64, i64 } %t910, ptr %a913
|
|
call void @finch_str_concat(ptr %a911, ptr %a912, ptr %a913)
|
|
%t914 = load { ptr, i64, i64 }, ptr %a911
|
|
store { ptr, i64, i64 } %t914, ptr %a916
|
|
store { ptr, i64, i64 } { ptr @.str.5149, i64 3, i64 0 }, ptr %a917
|
|
call void @finch_str_concat(ptr %a915, ptr %a916, ptr %a917)
|
|
%t918 = load { ptr, i64, i64 }, ptr %a915
|
|
%t919 = call { ptr, i64, i64 } @finch.gen.op(ptr %t909, { ptr, i64, i64 } %t918)
|
|
store { ptr, i64, i64 } { ptr @.str.5147, i64 8, i64 0 }, ptr %a921
|
|
store { ptr, i64, i64 } %t919, ptr %a922
|
|
call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922)
|
|
%t923 = load { ptr, i64, i64 }, ptr %a920
|
|
store { ptr, i64, i64 } %t923, ptr %a925
|
|
store { ptr, i64, i64 } { ptr @.str.5150, i64 2, i64 0 }, ptr %a926
|
|
call void @finch_str_concat(ptr %a924, ptr %a925, ptr %a926)
|
|
%t927 = load { ptr, i64, i64 }, ptr %a924
|
|
%t928 = load { ptr, i64, i64 }, ptr %a876
|
|
%t929 = extractvalue { ptr, i64, i64 } %t928, 1
|
|
%t930 = icmp uge i64 3, %t929
|
|
br i1 %t930, label %range7731, label %inrange7732
|
|
range7731:
|
|
call void @finch_panic_index(ptr @.str.5151, i64 4723, i64 3, i64 %t929)
|
|
unreachable
|
|
inrange7732:
|
|
%t931 = extractvalue { ptr, i64, i64 } %t928, 0
|
|
%t932 = getelementptr inbounds { ptr, i64, i64 }, ptr %t931, i64 3
|
|
%t933 = load { ptr, i64, i64 }, ptr %t932
|
|
store { ptr, i64, i64 } %t927, ptr %a935
|
|
store { ptr, i64, i64 } %t933, ptr %a936
|
|
call void @finch_str_concat(ptr %a934, ptr %a935, ptr %a936)
|
|
%t937 = load { ptr, i64, i64 }, ptr %a934
|
|
%t938 = call { ptr, i64, i64 } @finch.gen.op(ptr %t908, { ptr, i64, i64 } %t937)
|
|
store { ptr, i64, i64 } %t938, ptr %a939
|
|
%t940 = load ptr, ptr %a1
|
|
%t941 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5152, i64 23, i64 0 }, ptr %a943
|
|
store { ptr, i64, i64 } %t941, ptr %a944
|
|
call void @finch_str_concat(ptr %a942, ptr %a943, ptr %a944)
|
|
%t945 = load { ptr, i64, i64 }, ptr %a942
|
|
store { ptr, i64, i64 } %t945, ptr %a947
|
|
store { ptr, i64, i64 } { ptr @.str.5153, i64 6, i64 0 }, ptr %a948
|
|
call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948)
|
|
%t949 = load { ptr, i64, i64 }, ptr %a946
|
|
%t950 = load { ptr, i64, i64 }, ptr %a860
|
|
store { ptr, i64, i64 } %t949, ptr %a952
|
|
store { ptr, i64, i64 } %t950, ptr %a953
|
|
call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953)
|
|
%t954 = load { ptr, i64, i64 }, ptr %a951
|
|
store { ptr, i64, i64 } %t954, ptr %a956
|
|
store { ptr, i64, i64 } { ptr @.str.5154, i64 6, i64 0 }, ptr %a957
|
|
call void @finch_str_concat(ptr %a955, ptr %a956, ptr %a957)
|
|
%t958 = load { ptr, i64, i64 }, ptr %a955
|
|
%t959 = load { ptr, i64, i64 }, ptr %a939
|
|
store { ptr, i64, i64 } %t958, ptr %a961
|
|
store { ptr, i64, i64 } %t959, ptr %a962
|
|
call void @finch_str_concat(ptr %a960, ptr %a961, ptr %a962)
|
|
%t963 = load { ptr, i64, i64 }, ptr %a960
|
|
%t964 = call { ptr, i64, i64 } @finch.gen.op(ptr %t940, { ptr, i64, i64 } %t963)
|
|
store { ptr, i64, i64 } %t964, ptr %a965
|
|
%t966 = load ptr, ptr %a1
|
|
%t967 = load { ptr, i64, i64 }, ptr %a19
|
|
%t968 = load { ptr, i64, i64 }, ptr %a907
|
|
%t969 = call { ptr, i64, i64 } @finch.gen.load(ptr %t966, { ptr, i64, i64 } %t967, { ptr, i64, i64 } %t968)
|
|
store { ptr, i64, i64 } %t969, ptr %a970
|
|
%t971 = load ptr, ptr %a1
|
|
%t972 = load { ptr, i64, i64 }, ptr %a19
|
|
%t973 = load { ptr, i64, i64 }, ptr %a965
|
|
%t974 = call { ptr, i64, i64 } @finch.gen.load(ptr %t971, { ptr, i64, i64 } %t972, { ptr, i64, i64 } %t973)
|
|
store { ptr, i64, i64 } %t974, ptr %a975
|
|
%t976 = load ptr, ptr %a1
|
|
%t977 = load { ptr, i64, i64 }, ptr %a19
|
|
%t978 = load { ptr, i64, i64 }, ptr %a975
|
|
%t979 = load { ptr, i64, i64 }, ptr %a907
|
|
call void @finch.gen.store(ptr %t976, { ptr, i64, i64 } %t977, { ptr, i64, i64 } %t978, { ptr, i64, i64 } %t979)
|
|
%t980 = load ptr, ptr %a1
|
|
%t981 = load { ptr, i64, i64 }, ptr %a19
|
|
%t982 = load { ptr, i64, i64 }, ptr %a970
|
|
%t983 = load { ptr, i64, i64 }, ptr %a965
|
|
call void @finch.gen.store(ptr %t980, { ptr, i64, i64 } %t981, { ptr, i64, i64 } %t982, { ptr, i64, i64 } %t983)
|
|
%t984 = load ptr, ptr %a1
|
|
%t985 = load { ptr, i64, i64 }, ptr %a876
|
|
call void @finch.gen.loopEnd(ptr %t984, { ptr, i64, i64 } %t985)
|
|
%t986 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5155, i64 4, i64 0 })
|
|
%t987 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t986, 1
|
|
ret %S.gen.Val %t987
|
|
endif7728:
|
|
%t988 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t988, ptr %a989
|
|
store { ptr, i64, i64 } { ptr @.str.5156, i64 5, i64 0 }, ptr %a990
|
|
%t991 = call i32 @finch_str_eq(ptr %a989, ptr %a990)
|
|
%t992 = icmp ne i32 %t991, 0
|
|
br i1 %t992, label %then7733, label %endif7735
|
|
then7733:
|
|
%t993 = load ptr, ptr %a1
|
|
%t994 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t993, %S.ast.Node %t994, i64 2)
|
|
%t995 = load ptr, ptr %a1
|
|
%t996 = load ptr, ptr %a1
|
|
%t997 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t998 = load { ptr, i64, i64 }, ptr %t997
|
|
%t999 = extractvalue { ptr, i64, i64 } %t998, 1
|
|
%t1000 = icmp uge i64 1, %t999
|
|
br i1 %t1000, label %range7736, label %inrange7737
|
|
range7736:
|
|
call void @finch_panic_index(ptr @.str.5157, i64 4734, i64 1, i64 %t999)
|
|
unreachable
|
|
inrange7737:
|
|
%t1001 = extractvalue { ptr, i64, i64 } %t998, 0
|
|
%t1002 = getelementptr inbounds %S.ast.Node, ptr %t1001, i64 1
|
|
%t1003 = load %S.ast.Node, ptr %t1002
|
|
%t1004 = call %S.gen.Val @finch.gen.expr(ptr %t996, %S.ast.Node %t1003)
|
|
%t1005 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5158, i64 3, i64 0 })
|
|
%t1006 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1007 = load { ptr, i64, i64 }, ptr %t1006
|
|
%t1008 = extractvalue { ptr, i64, i64 } %t1007, 1
|
|
%t1009 = icmp uge i64 1, %t1008
|
|
br i1 %t1009, label %range7738, label %inrange7739
|
|
range7738:
|
|
call void @finch_panic_index(ptr @.str.5159, i64 4734, i64 1, i64 %t1008)
|
|
unreachable
|
|
inrange7739:
|
|
%t1010 = extractvalue { ptr, i64, i64 } %t1007, 0
|
|
%t1011 = getelementptr inbounds %S.ast.Node, ptr %t1010, i64 1
|
|
%t1012 = load %S.ast.Node, ptr %t1011
|
|
%t1013 = call %S.gen.Val @finch.gen.coerce(ptr %t995, %S.gen.Val %t1004, %S.ast.Type %t1005, %S.ast.Node %t1012, { ptr, i64, i64 } { ptr @.str.5160, i64 9, i64 0 })
|
|
%t1014 = extractvalue %S.gen.Val %t1013, 0
|
|
store { ptr, i64, i64 } %t1014, ptr %a1015
|
|
call void @finch_str_copy(ptr %a1016, ptr %a1015)
|
|
%t1017 = load { ptr, i64, i64 }, ptr %a1016
|
|
store { ptr, i64, i64 } %t1017, ptr %a1018
|
|
%t1019 = load ptr, ptr %a1
|
|
%t1020 = load ptr, ptr %a1
|
|
%t1021 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1022 = load { ptr, i64, i64 }, ptr %t1021
|
|
%t1023 = extractvalue { ptr, i64, i64 } %t1022, 1
|
|
%t1024 = icmp uge i64 2, %t1023
|
|
br i1 %t1024, label %range7740, label %inrange7741
|
|
range7740:
|
|
call void @finch_panic_index(ptr @.str.5161, i64 4735, i64 2, i64 %t1023)
|
|
unreachable
|
|
inrange7741:
|
|
%t1025 = extractvalue { ptr, i64, i64 } %t1022, 0
|
|
%t1026 = getelementptr inbounds %S.ast.Node, ptr %t1025, i64 2
|
|
%t1027 = load %S.ast.Node, ptr %t1026
|
|
%t1028 = call %S.gen.Val @finch.gen.expr(ptr %t1020, %S.ast.Node %t1027)
|
|
%t1029 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5162, i64 3, i64 0 })
|
|
%t1030 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t1031 = load { ptr, i64, i64 }, ptr %t1030
|
|
%t1032 = extractvalue { ptr, i64, i64 } %t1031, 1
|
|
%t1033 = icmp uge i64 2, %t1032
|
|
br i1 %t1033, label %range7742, label %inrange7743
|
|
range7742:
|
|
call void @finch_panic_index(ptr @.str.5163, i64 4735, i64 2, i64 %t1032)
|
|
unreachable
|
|
inrange7743:
|
|
%t1034 = extractvalue { ptr, i64, i64 } %t1031, 0
|
|
%t1035 = getelementptr inbounds %S.ast.Node, ptr %t1034, i64 2
|
|
%t1036 = load %S.ast.Node, ptr %t1035
|
|
%t1037 = call %S.gen.Val @finch.gen.coerce(ptr %t1019, %S.gen.Val %t1028, %S.ast.Type %t1029, %S.ast.Node %t1036, { ptr, i64, i64 } { ptr @.str.5164, i64 7, i64 0 })
|
|
%t1038 = extractvalue %S.gen.Val %t1037, 0
|
|
store { ptr, i64, i64 } %t1038, ptr %a1039
|
|
call void @finch_str_copy(ptr %a1040, ptr %a1039)
|
|
%t1041 = load { ptr, i64, i64 }, ptr %a1040
|
|
store { ptr, i64, i64 } %t1041, ptr %a1042
|
|
%t1043 = load ptr, ptr %a1
|
|
%t1044 = load { ptr, i64, i64 }, ptr %a37
|
|
%t1045 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1043, { ptr, i64, i64 } { ptr @.str.5165, i64 3, i64 0 }, { ptr, i64, i64 } %t1044)
|
|
store { ptr, i64, i64 } %t1045, ptr %a1046
|
|
%t1047 = load ptr, ptr %a1
|
|
%t1048 = load { ptr, i64, i64 }, ptr %a1018
|
|
store { ptr, i64, i64 } { ptr @.str.5166, i64 13, i64 0 }, ptr %a1050
|
|
store { ptr, i64, i64 } %t1048, ptr %a1051
|
|
call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051)
|
|
%t1052 = load { ptr, i64, i64 }, ptr %a1049
|
|
store { ptr, i64, i64 } %t1052, ptr %a1054
|
|
store { ptr, i64, i64 } { ptr @.str.5167, i64 3, i64 0 }, ptr %a1055
|
|
call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055)
|
|
%t1056 = load { ptr, i64, i64 }, ptr %a1053
|
|
%t1057 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1056)
|
|
store { ptr, i64, i64 } %t1057, ptr %a1058
|
|
%t1059 = load ptr, ptr %a1
|
|
%t1060 = load { ptr, i64, i64 }, ptr %a1042
|
|
store { ptr, i64, i64 } { ptr @.str.5168, i64 13, i64 0 }, ptr %a1062
|
|
store { ptr, i64, i64 } %t1060, ptr %a1063
|
|
call void @finch_str_concat(ptr %a1061, ptr %a1062, ptr %a1063)
|
|
%t1064 = load { ptr, i64, i64 }, ptr %a1061
|
|
store { ptr, i64, i64 } %t1064, ptr %a1066
|
|
store { ptr, i64, i64 } { ptr @.str.5169, i64 2, i64 0 }, ptr %a1067
|
|
call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067)
|
|
%t1068 = load { ptr, i64, i64 }, ptr %a1065
|
|
%t1069 = load { ptr, i64, i64 }, ptr %a1046
|
|
store { ptr, i64, i64 } %t1068, ptr %a1071
|
|
store { ptr, i64, i64 } %t1069, ptr %a1072
|
|
call void @finch_str_concat(ptr %a1070, ptr %a1071, ptr %a1072)
|
|
%t1073 = load { ptr, i64, i64 }, ptr %a1070
|
|
%t1074 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1059, { ptr, i64, i64 } %t1073)
|
|
store { ptr, i64, i64 } %t1074, ptr %a1075
|
|
%t1076 = load ptr, ptr %a1
|
|
%t1077 = load { ptr, i64, i64 }, ptr %a1018
|
|
store { ptr, i64, i64 } { ptr @.str.5170, i64 13, i64 0 }, ptr %a1079
|
|
store { ptr, i64, i64 } %t1077, ptr %a1080
|
|
call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080)
|
|
%t1081 = load { ptr, i64, i64 }, ptr %a1078
|
|
store { ptr, i64, i64 } %t1081, ptr %a1083
|
|
store { ptr, i64, i64 } { ptr @.str.5171, i64 2, i64 0 }, ptr %a1084
|
|
call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084)
|
|
%t1085 = load { ptr, i64, i64 }, ptr %a1082
|
|
%t1086 = load { ptr, i64, i64 }, ptr %a1042
|
|
store { ptr, i64, i64 } %t1085, ptr %a1088
|
|
store { ptr, i64, i64 } %t1086, ptr %a1089
|
|
call void @finch_str_concat(ptr %a1087, ptr %a1088, ptr %a1089)
|
|
%t1090 = load { ptr, i64, i64 }, ptr %a1087
|
|
%t1091 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1076, { ptr, i64, i64 } %t1090)
|
|
store { ptr, i64, i64 } %t1091, ptr %a1092
|
|
%t1093 = load ptr, ptr %a1
|
|
%t1094 = load ptr, ptr %a1
|
|
%t1095 = load ptr, ptr %a1
|
|
%t1096 = load { ptr, i64, i64 }, ptr %a1058
|
|
store { ptr, i64, i64 } { ptr @.str.5173, i64 6, i64 0 }, ptr %a1098
|
|
store { ptr, i64, i64 } %t1096, ptr %a1099
|
|
call void @finch_str_concat(ptr %a1097, ptr %a1098, ptr %a1099)
|
|
%t1100 = load { ptr, i64, i64 }, ptr %a1097
|
|
store { ptr, i64, i64 } %t1100, ptr %a1102
|
|
store { ptr, i64, i64 } { ptr @.str.5174, i64 2, i64 0 }, ptr %a1103
|
|
call void @finch_str_concat(ptr %a1101, ptr %a1102, ptr %a1103)
|
|
%t1104 = load { ptr, i64, i64 }, ptr %a1101
|
|
%t1105 = load { ptr, i64, i64 }, ptr %a1075
|
|
store { ptr, i64, i64 } %t1104, ptr %a1107
|
|
store { ptr, i64, i64 } %t1105, ptr %a1108
|
|
call void @finch_str_concat(ptr %a1106, ptr %a1107, ptr %a1108)
|
|
%t1109 = load { ptr, i64, i64 }, ptr %a1106
|
|
%t1110 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1095, { ptr, i64, i64 } %t1109)
|
|
store { ptr, i64, i64 } { ptr @.str.5172, i64 6, i64 0 }, ptr %a1112
|
|
store { ptr, i64, i64 } %t1110, ptr %a1113
|
|
call void @finch_str_concat(ptr %a1111, ptr %a1112, ptr %a1113)
|
|
%t1114 = load { ptr, i64, i64 }, ptr %a1111
|
|
store { ptr, i64, i64 } %t1114, ptr %a1116
|
|
store { ptr, i64, i64 } { ptr @.str.5175, i64 2, i64 0 }, ptr %a1117
|
|
call void @finch_str_concat(ptr %a1115, ptr %a1116, ptr %a1117)
|
|
%t1118 = load { ptr, i64, i64 }, ptr %a1115
|
|
%t1119 = load { ptr, i64, i64 }, ptr %a1092
|
|
store { ptr, i64, i64 } %t1118, ptr %a1121
|
|
store { ptr, i64, i64 } %t1119, ptr %a1122
|
|
call void @finch_str_concat(ptr %a1120, ptr %a1121, ptr %a1122)
|
|
%t1123 = load { ptr, i64, i64 }, ptr %a1120
|
|
%t1124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1094, { ptr, i64, i64 } %t1123)
|
|
%t1125 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.panicIf(ptr %t1093, { ptr, i64, i64 } %t1124, { ptr, i64, i64 } { ptr @.str.5176, i64 33, i64 0 }, %S.ast.Node %t1125)
|
|
%t1126 = load ptr, ptr %a1
|
|
%t1127 = load { ptr, i64, i64 }, ptr %a1042
|
|
store { ptr, i64, i64 } { ptr @.str.5177, i64 8, i64 0 }, ptr %a1129
|
|
store { ptr, i64, i64 } %t1127, ptr %a1130
|
|
call void @finch_str_concat(ptr %a1128, ptr %a1129, ptr %a1130)
|
|
%t1131 = load { ptr, i64, i64 }, ptr %a1128
|
|
store { ptr, i64, i64 } %t1131, ptr %a1133
|
|
store { ptr, i64, i64 } { ptr @.str.5178, i64 2, i64 0 }, ptr %a1134
|
|
call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134)
|
|
%t1135 = load { ptr, i64, i64 }, ptr %a1132
|
|
%t1136 = load { ptr, i64, i64 }, ptr %a1018
|
|
store { ptr, i64, i64 } %t1135, ptr %a1138
|
|
store { ptr, i64, i64 } %t1136, ptr %a1139
|
|
call void @finch_str_concat(ptr %a1137, ptr %a1138, ptr %a1139)
|
|
%t1140 = load { ptr, i64, i64 }, ptr %a1137
|
|
%t1141 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1140)
|
|
store { ptr, i64, i64 } %t1141, ptr %a1142
|
|
%t1143 = load ptr, ptr %a1
|
|
%t1144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1143, { ptr, i64, i64 } { ptr @.str.5179, i64 17, i64 0 })
|
|
store { ptr, i64, i64 } %t1144, ptr %a1145
|
|
%t1146 = load ptr, ptr %a1
|
|
%t1147 = load { ptr, i64, i64 }, ptr %a1145
|
|
store { ptr, i64, i64 } { ptr @.str.5180, i64 30, i64 0 }, ptr %a1149
|
|
store { ptr, i64, i64 } %t1147, ptr %a1150
|
|
call void @finch_str_concat(ptr %a1148, ptr %a1149, ptr %a1150)
|
|
%t1151 = load { ptr, i64, i64 }, ptr %a1148
|
|
store { ptr, i64, i64 } %t1151, ptr %a1153
|
|
store { ptr, i64, i64 } { ptr @.str.5181, i64 6, i64 0 }, ptr %a1154
|
|
call void @finch_str_concat(ptr %a1152, ptr %a1153, ptr %a1154)
|
|
%t1155 = load { ptr, i64, i64 }, ptr %a1152
|
|
%t1156 = load { ptr, i64, i64 }, ptr %a1142
|
|
store { ptr, i64, i64 } %t1155, ptr %a1158
|
|
store { ptr, i64, i64 } %t1156, ptr %a1159
|
|
call void @finch_str_concat(ptr %a1157, ptr %a1158, ptr %a1159)
|
|
%t1160 = load { ptr, i64, i64 }, ptr %a1157
|
|
store { ptr, i64, i64 } %t1160, ptr %a1162
|
|
store { ptr, i64, i64 } { ptr @.str.5182, i64 6, i64 0 }, ptr %a1163
|
|
call void @finch_str_concat(ptr %a1161, ptr %a1162, ptr %a1163)
|
|
%t1164 = load { ptr, i64, i64 }, ptr %a1161
|
|
%t1165 = load ptr, ptr %a1
|
|
%t1166 = load %S.ast.Type, ptr %a15
|
|
%t1167 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1165, %S.ast.Type %t1166)
|
|
store { ptr, i64, i64 } %t1164, ptr %a1169
|
|
store { ptr, i64, i64 } %t1167, ptr %a1170
|
|
call void @finch_str_concat(ptr %a1168, ptr %a1169, ptr %a1170)
|
|
%t1171 = load { ptr, i64, i64 }, ptr %a1168
|
|
store { ptr, i64, i64 } %t1171, ptr %a1173
|
|
store { ptr, i64, i64 } { ptr @.str.5183, i64 1, i64 0 }, ptr %a1174
|
|
call void @finch_str_concat(ptr %a1172, ptr %a1173, ptr %a1174)
|
|
%t1175 = load { ptr, i64, i64 }, ptr %a1172
|
|
call void @finch.gen.emit(ptr %t1146, { ptr, i64, i64 } %t1175)
|
|
%t1176 = load ptr, ptr %a1
|
|
%t1177 = load { ptr, i64, i64 }, ptr %a3
|
|
%t1178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1176, { ptr, i64, i64 } { ptr @.str.5184, i64 3, i64 0 }, { ptr, i64, i64 } %t1177)
|
|
store { ptr, i64, i64 } %t1178, ptr %a1179
|
|
%t1180 = load ptr, ptr %a1
|
|
%t1181 = load { ptr, i64, i64 }, ptr %a1145
|
|
%t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.5185, i64 3, i64 0 }, { ptr, i64, i64 } %t1181)
|
|
store { ptr, i64, i64 } %t1182, ptr %a1183
|
|
%t1184 = load ptr, ptr %a1
|
|
%t1185 = load { ptr, i64, i64 }, ptr %a1142
|
|
%t1186 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1184, { ptr, i64, i64 } %t1185)
|
|
store { ptr, i64, i64 } %t1186, ptr %a1187
|
|
%t1188 = load ptr, ptr %a1
|
|
%t1189 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5186, i64 23, i64 0 }, ptr %a1191
|
|
store { ptr, i64, i64 } %t1189, ptr %a1192
|
|
call void @finch_str_concat(ptr %a1190, ptr %a1191, ptr %a1192)
|
|
%t1193 = load { ptr, i64, i64 }, ptr %a1190
|
|
store { ptr, i64, i64 } %t1193, ptr %a1195
|
|
store { ptr, i64, i64 } { ptr @.str.5187, i64 6, i64 0 }, ptr %a1196
|
|
call void @finch_str_concat(ptr %a1194, ptr %a1195, ptr %a1196)
|
|
%t1197 = load { ptr, i64, i64 }, ptr %a1194
|
|
%t1198 = load { ptr, i64, i64 }, ptr %a1183
|
|
store { ptr, i64, i64 } %t1197, ptr %a1200
|
|
store { ptr, i64, i64 } %t1198, ptr %a1201
|
|
call void @finch_str_concat(ptr %a1199, ptr %a1200, ptr %a1201)
|
|
%t1202 = load { ptr, i64, i64 }, ptr %a1199
|
|
store { ptr, i64, i64 } %t1202, ptr %a1204
|
|
store { ptr, i64, i64 } { ptr @.str.5188, i64 6, i64 0 }, ptr %a1205
|
|
call void @finch_str_concat(ptr %a1203, ptr %a1204, ptr %a1205)
|
|
%t1206 = load { ptr, i64, i64 }, ptr %a1203
|
|
%t1207 = load { ptr, i64, i64 }, ptr %a1187
|
|
%t1208 = extractvalue { ptr, i64, i64 } %t1207, 1
|
|
%t1209 = icmp uge i64 3, %t1208
|
|
br i1 %t1209, label %range7744, label %inrange7745
|
|
range7744:
|
|
call void @finch_panic_index(ptr @.str.5189, i64 4747, i64 3, i64 %t1208)
|
|
unreachable
|
|
inrange7745:
|
|
%t1210 = extractvalue { ptr, i64, i64 } %t1207, 0
|
|
%t1211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1210, i64 3
|
|
%t1212 = load { ptr, i64, i64 }, ptr %t1211
|
|
store { ptr, i64, i64 } %t1206, ptr %a1214
|
|
store { ptr, i64, i64 } %t1212, ptr %a1215
|
|
call void @finch_str_concat(ptr %a1213, ptr %a1214, ptr %a1215)
|
|
%t1216 = load { ptr, i64, i64 }, ptr %a1213
|
|
%t1217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1188, { ptr, i64, i64 } %t1216)
|
|
store { ptr, i64, i64 } %t1217, ptr %a1218
|
|
%t1219 = load ptr, ptr %a1
|
|
%t1220 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } { ptr @.str.5190, i64 23, i64 0 }, ptr %a1222
|
|
store { ptr, i64, i64 } %t1220, ptr %a1223
|
|
call void @finch_str_concat(ptr %a1221, ptr %a1222, ptr %a1223)
|
|
%t1224 = load { ptr, i64, i64 }, ptr %a1221
|
|
store { ptr, i64, i64 } %t1224, ptr %a1226
|
|
store { ptr, i64, i64 } { ptr @.str.5191, i64 6, i64 0 }, ptr %a1227
|
|
call void @finch_str_concat(ptr %a1225, ptr %a1226, ptr %a1227)
|
|
%t1228 = load { ptr, i64, i64 }, ptr %a1225
|
|
%t1229 = load { ptr, i64, i64 }, ptr %a1179
|
|
store { ptr, i64, i64 } %t1228, ptr %a1231
|
|
store { ptr, i64, i64 } %t1229, ptr %a1232
|
|
call void @finch_str_concat(ptr %a1230, ptr %a1231, ptr %a1232)
|
|
%t1233 = load { ptr, i64, i64 }, ptr %a1230
|
|
store { ptr, i64, i64 } %t1233, ptr %a1235
|
|
store { ptr, i64, i64 } { ptr @.str.5192, i64 6, i64 0 }, ptr %a1236
|
|
call void @finch_str_concat(ptr %a1234, ptr %a1235, ptr %a1236)
|
|
%t1237 = load { ptr, i64, i64 }, ptr %a1234
|
|
%t1238 = load ptr, ptr %a1
|
|
%t1239 = load { ptr, i64, i64 }, ptr %a1018
|
|
store { ptr, i64, i64 } { ptr @.str.5193, i64 8, i64 0 }, ptr %a1241
|
|
store { ptr, i64, i64 } %t1239, ptr %a1242
|
|
call void @finch_str_concat(ptr %a1240, ptr %a1241, ptr %a1242)
|
|
%t1243 = load { ptr, i64, i64 }, ptr %a1240
|
|
store { ptr, i64, i64 } %t1243, ptr %a1245
|
|
store { ptr, i64, i64 } { ptr @.str.5194, i64 2, i64 0 }, ptr %a1246
|
|
call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246)
|
|
%t1247 = load { ptr, i64, i64 }, ptr %a1244
|
|
%t1248 = load { ptr, i64, i64 }, ptr %a1187
|
|
%t1249 = extractvalue { ptr, i64, i64 } %t1248, 1
|
|
%t1250 = icmp uge i64 3, %t1249
|
|
br i1 %t1250, label %range7746, label %inrange7747
|
|
range7746:
|
|
call void @finch_panic_index(ptr @.str.5195, i64 4748, i64 3, i64 %t1249)
|
|
unreachable
|
|
inrange7747:
|
|
%t1251 = extractvalue { ptr, i64, i64 } %t1248, 0
|
|
%t1252 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1251, i64 3
|
|
%t1253 = load { ptr, i64, i64 }, ptr %t1252
|
|
store { ptr, i64, i64 } %t1247, ptr %a1255
|
|
store { ptr, i64, i64 } %t1253, ptr %a1256
|
|
call void @finch_str_concat(ptr %a1254, ptr %a1255, ptr %a1256)
|
|
%t1257 = load { ptr, i64, i64 }, ptr %a1254
|
|
%t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1238, { ptr, i64, i64 } %t1257)
|
|
store { ptr, i64, i64 } %t1237, ptr %a1260
|
|
store { ptr, i64, i64 } %t1258, ptr %a1261
|
|
call void @finch_str_concat(ptr %a1259, ptr %a1260, ptr %a1261)
|
|
%t1262 = load { ptr, i64, i64 }, ptr %a1259
|
|
%t1263 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1219, { ptr, i64, i64 } %t1262)
|
|
store { ptr, i64, i64 } %t1263, ptr %a1264
|
|
%t1265 = load ptr, ptr %a1
|
|
%t1266 = load { ptr, i64, i64 }, ptr %a1218
|
|
%t1267 = load { ptr, i64, i64 }, ptr %a1264
|
|
%t1268 = load %S.ast.Type, ptr %a15
|
|
call void @finch.gen.copyAt(ptr %t1265, { ptr, i64, i64 } %t1266, { ptr, i64, i64 } %t1267, %S.ast.Type %t1268)
|
|
%t1269 = load ptr, ptr %a1
|
|
%t1270 = load { ptr, i64, i64 }, ptr %a1187
|
|
call void @finch.gen.loopEnd(ptr %t1269, { ptr, i64, i64 } %t1270)
|
|
%t1271 = load ptr, ptr %a1
|
|
%t1272 = load { ptr, i64, i64 }, ptr %a1145
|
|
%t1273 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1271, { ptr, i64, i64 } { ptr @.str.5196, i64 17, i64 0 }, { ptr, i64, i64 } %t1272)
|
|
%t1274 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1273, 0
|
|
%t1275 = load %S.ast.Type, ptr %a4
|
|
store %S.ast.Type %t1275, ptr %a1276
|
|
call void @finch.copy.S_ast_Type(ptr %a1277, ptr %a1276)
|
|
%t1278 = load %S.ast.Type, ptr %a1277
|
|
%t1279 = insertvalue %S.gen.Val %t1274, %S.ast.Type %t1278, 1
|
|
%t1280 = insertvalue %S.gen.Val %t1279, i1 true, 2
|
|
ret %S.gen.Val %t1280
|
|
endif7735:
|
|
%t1281 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } %t1281, ptr %a1282
|
|
store { ptr, i64, i64 } { ptr @.str.5197, i64 4, i64 0 }, ptr %a1283
|
|
%t1284 = call i32 @finch_str_eq(ptr %a1282, ptr %a1283)
|
|
%t1285 = icmp ne i32 %t1284, 0
|
|
br i1 %t1285, label %then7748, label %endif7750
|
|
then7748:
|
|
%t1286 = load ptr, ptr %a1
|
|
%t1287 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t1286, %S.ast.Node %t1287, i64 0)
|
|
%t1288 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0
|
|
%t1289 = load { ptr, i64, i64 }, ptr %t1288
|
|
store { ptr, i64, i64 } %t1289, ptr %a1290
|
|
call void @finch_str_copy(ptr %a1291, ptr %a1290)
|
|
%t1292 = load { ptr, i64, i64 }, ptr %a1291
|
|
store { ptr, i64, i64 } %t1292, ptr %a1293
|
|
%t1294 = load %S.ast.Type, ptr %a15
|
|
%t1295 = call i1 @finch.gen.isNumber(%S.ast.Type %t1294)
|
|
%t1296 = xor i1 %t1295, true
|
|
br label %logic.from7751
|
|
logic.from7751:
|
|
br i1 %t1296, label %logic.rhs7752, label %logic.end7753
|
|
logic.rhs7752:
|
|
%t1297 = load { ptr, i64, i64 }, ptr %a1293
|
|
store { ptr, i64, i64 } %t1297, ptr %a1298
|
|
store { ptr, i64, i64 } { ptr @.str.5198, i64 4, i64 0 }, ptr %a1299
|
|
%t1300 = call i32 @finch_str_eq(ptr %a1298, ptr %a1299)
|
|
%t1301 = icmp eq i32 %t1300, 0
|
|
br label %logic.rend7754
|
|
logic.rend7754:
|
|
br label %logic.end7753
|
|
logic.end7753:
|
|
%t1302 = phi i1 [ false, %logic.from7751 ], [ %t1301, %logic.rend7754 ]
|
|
br label %logic.from7755
|
|
logic.from7755:
|
|
br i1 %t1302, label %logic.rhs7756, label %logic.end7757
|
|
logic.rhs7756:
|
|
%t1303 = load { ptr, i64, i64 }, ptr %a1293
|
|
store { ptr, i64, i64 } %t1303, ptr %a1304
|
|
store { ptr, i64, i64 } { ptr @.str.5199, i64 3, i64 0 }, ptr %a1305
|
|
%t1306 = call i32 @finch_str_eq(ptr %a1304, ptr %a1305)
|
|
%t1307 = icmp eq i32 %t1306, 0
|
|
br label %logic.rend7758
|
|
logic.rend7758:
|
|
br label %logic.end7757
|
|
logic.end7757:
|
|
%t1308 = phi i1 [ false, %logic.from7755 ], [ %t1307, %logic.rend7758 ]
|
|
br i1 %t1308, label %then7759, label %endif7761
|
|
then7759:
|
|
%t1309 = load ptr, ptr %a1
|
|
%t1310 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.fail(ptr %t1309, %S.ast.Node %t1310, { ptr, i64, i64 } { ptr @.str.5200, i64 47, i64 0 })
|
|
br label %endif7761
|
|
endif7761:
|
|
%t1311 = load ptr, ptr %a1
|
|
%t1312 = load %S.ast.Type, ptr %a15
|
|
%t1313 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1311, %S.ast.Type %t1312)
|
|
store { ptr, i64, i64 } %t1313, ptr %a1314
|
|
%t1315 = load ptr, ptr %a1
|
|
%t1316 = load { ptr, i64, i64 }, ptr %a37
|
|
%t1317 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1315, { ptr, i64, i64 } { ptr @.str.5201, i64 3, i64 0 }, { ptr, i64, i64 } %t1316)
|
|
store { ptr, i64, i64 } %t1317, ptr %a1318
|
|
%t1319 = load ptr, ptr %a1
|
|
%t1320 = load { ptr, i64, i64 }, ptr %a3
|
|
%t1321 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1319, { ptr, i64, i64 } { ptr @.str.5202, i64 3, i64 0 }, { ptr, i64, i64 } %t1320)
|
|
store { ptr, i64, i64 } %t1321, ptr %a1322
|
|
%t1323 = load ptr, ptr %a1
|
|
%t1324 = load { ptr, i64, i64 }, ptr %a1322
|
|
store { ptr, i64, i64 } { ptr @.str.5203, i64 21, i64 0 }, ptr %a1326
|
|
store { ptr, i64, i64 } %t1324, ptr %a1327
|
|
call void @finch_str_concat(ptr %a1325, ptr %a1326, ptr %a1327)
|
|
%t1328 = load { ptr, i64, i64 }, ptr %a1325
|
|
store { ptr, i64, i64 } %t1328, ptr %a1330
|
|
store { ptr, i64, i64 } { ptr @.str.5204, i64 6, i64 0 }, ptr %a1331
|
|
call void @finch_str_concat(ptr %a1329, ptr %a1330, ptr %a1331)
|
|
%t1332 = load { ptr, i64, i64 }, ptr %a1329
|
|
%t1333 = load { ptr, i64, i64 }, ptr %a1318
|
|
store { ptr, i64, i64 } %t1332, ptr %a1335
|
|
store { ptr, i64, i64 } %t1333, ptr %a1336
|
|
call void @finch_str_concat(ptr %a1334, ptr %a1335, ptr %a1336)
|
|
%t1337 = load { ptr, i64, i64 }, ptr %a1334
|
|
store { ptr, i64, i64 } %t1337, ptr %a1339
|
|
store { ptr, i64, i64 } { ptr @.str.5205, i64 6, i64 0 }, ptr %a1340
|
|
call void @finch_str_concat(ptr %a1338, ptr %a1339, ptr %a1340)
|
|
%t1341 = load { ptr, i64, i64 }, ptr %a1338
|
|
%t1342 = load ptr, ptr %a1
|
|
%t1343 = load %S.ast.Type, ptr %a15
|
|
%t1344 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1342, %S.ast.Type %t1343)
|
|
store { ptr, i64, i64 } %t1341, ptr %a1346
|
|
store { ptr, i64, i64 } %t1344, ptr %a1347
|
|
call void @finch_str_concat(ptr %a1345, ptr %a1346, ptr %a1347)
|
|
%t1348 = load { ptr, i64, i64 }, ptr %a1345
|
|
store { ptr, i64, i64 } %t1348, ptr %a1350
|
|
store { ptr, i64, i64 } { ptr @.str.5206, i64 6, i64 0 }, ptr %a1351
|
|
call void @finch_str_concat(ptr %a1349, ptr %a1350, ptr %a1351)
|
|
%t1352 = load { ptr, i64, i64 }, ptr %a1349
|
|
%t1353 = load { ptr, i64, i64 }, ptr %a1314
|
|
store { ptr, i64, i64 } %t1352, ptr %a1355
|
|
store { ptr, i64, i64 } %t1353, ptr %a1356
|
|
call void @finch_str_concat(ptr %a1354, ptr %a1355, ptr %a1356)
|
|
%t1357 = load { ptr, i64, i64 }, ptr %a1354
|
|
store { ptr, i64, i64 } %t1357, ptr %a1359
|
|
store { ptr, i64, i64 } { ptr @.str.5207, i64 1, i64 0 }, ptr %a1360
|
|
call void @finch_str_concat(ptr %a1358, ptr %a1359, ptr %a1360)
|
|
%t1361 = load { ptr, i64, i64 }, ptr %a1358
|
|
call void @finch.gen.emit(ptr %t1323, { ptr, i64, i64 } %t1361)
|
|
%t1362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5208, i64 4, i64 0 })
|
|
%t1363 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1362, 1
|
|
ret %S.gen.Val %t1363
|
|
endif7750:
|
|
%t1364 = load ptr, ptr %a1
|
|
%t1365 = load %S.ast.Node, ptr %a2
|
|
%t1366 = load { ptr, i64, i64 }, ptr %a25
|
|
store { ptr, i64, i64 } { ptr @.str.5209, i64 24, i64 0 }, ptr %a1368
|
|
store { ptr, i64, i64 } %t1366, ptr %a1369
|
|
call void @finch_str_concat(ptr %a1367, ptr %a1368, ptr %a1369)
|
|
%t1370 = load { ptr, i64, i64 }, ptr %a1367
|
|
store { ptr, i64, i64 } %t1370, ptr %a1372
|
|
store { ptr, i64, i64 } { ptr @.str.5210, i64 96, i64 0 }, ptr %a1373
|
|
call void @finch_str_concat(ptr %a1371, ptr %a1372, ptr %a1373)
|
|
%t1374 = load { ptr, i64, i64 }, ptr %a1371
|
|
call void @finch.gen.fail(ptr %t1364, %S.ast.Node %t1365, { ptr, i64, i64 } %t1374)
|
|
ret %S.gen.Val zeroinitializer
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.cmpFn(ptr %p0, %S.ast.Type %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Type, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca %S.gen.Saved, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a222 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a243 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Type %p1, ptr %a2
|
|
%t3 = load %S.ast.Type, ptr %a2
|
|
%t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3)
|
|
store { ptr, i64, i64 } { ptr @.str.5211, i64 11, i64 0 }, ptr %a6
|
|
store { ptr, i64, i64 } %t4, ptr %a7
|
|
call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7)
|
|
%t8 = load { ptr, i64, i64 }, ptr %a5
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = icmp eq ptr %t10, null
|
|
br i1 %t11, label %panic7762, label %ok7763
|
|
panic7762:
|
|
call void @finch_panic(ptr @.str.5212, i64 4772, ptr @.str.5213)
|
|
unreachable
|
|
ok7763:
|
|
%t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 21
|
|
%t13 = load { ptr, i64, i64 }, ptr %t12
|
|
%t14 = load { ptr, i64, i64 }, ptr %a9
|
|
%t15 = call i1 @finch.gen.has({ ptr, i64, i64 } %t13, { ptr, i64, i64 } %t14)
|
|
br i1 %t15, label %then7764, label %endif7766
|
|
then7764:
|
|
%t16 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
call void @finch_str_copy(ptr %a18, ptr %a17)
|
|
%t19 = load { ptr, i64, i64 }, ptr %a18
|
|
ret { ptr, i64, i64 } %t19
|
|
endif7766:
|
|
%t20 = load ptr, ptr %a1
|
|
%t21 = icmp eq ptr %t20, null
|
|
br i1 %t21, label %panic7767, label %ok7768
|
|
panic7767:
|
|
call void @finch_panic(ptr @.str.5214, i64 4775, ptr @.str.5215)
|
|
unreachable
|
|
ok7768:
|
|
%t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 21
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1
|
|
%t24 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t24, ptr %a25
|
|
call void @finch_str_copy(ptr %a26, ptr %a25)
|
|
%t27 = load { ptr, i64, i64 }, ptr %a26
|
|
%t28 = load i64, ptr %t23
|
|
%t29 = add i64 %t28, 1
|
|
call void @finch_arr_reserve(ptr %t22, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t30 = load ptr, ptr %t22
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28
|
|
store { ptr, i64, i64 } %t27, ptr %t31
|
|
store i64 %t29, ptr %t23
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t32)
|
|
store %S.gen.Saved %t33, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.5216, i64 0, i64 0 }, ptr %a35
|
|
%t36 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0
|
|
%t37 = load { ptr, i64, i64 }, ptr %t36
|
|
store { ptr, i64, i64 } %t37, ptr %a38
|
|
store { ptr, i64, i64 } { ptr @.str.5217, i64 3, i64 0 }, ptr %a39
|
|
%t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39)
|
|
%t41 = icmp ne i32 %t40, 0
|
|
br i1 %t41, label %then7769, label %else7770
|
|
then7769:
|
|
%t42 = load ptr, ptr %a1
|
|
%t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t42, { ptr, i64, i64 } { ptr @.str.5218, i64 39, i64 0 })
|
|
store { ptr, i64, i64 } %t43, ptr %a44
|
|
%t45 = load ptr, ptr %a1
|
|
%t46 = load { ptr, i64, i64 }, ptr %a44
|
|
store { ptr, i64, i64 } { ptr @.str.5219, i64 10, i64 0 }, ptr %a48
|
|
store { ptr, i64, i64 } %t46, ptr %a49
|
|
call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49)
|
|
%t50 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } %t50, ptr %a52
|
|
store { ptr, i64, i64 } { ptr @.str.5220, i64 7, i64 0 }, ptr %a53
|
|
call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a51
|
|
%t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t54)
|
|
store { ptr, i64, i64 } %t55, ptr %a35
|
|
br label %endif7771
|
|
else7770:
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = load %S.ast.Type, ptr %a2
|
|
%t58 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t57)
|
|
store { ptr, i64, i64 } %t58, ptr %a59
|
|
%t60 = load ptr, ptr %a1
|
|
%t61 = load { ptr, i64, i64 }, ptr %a59
|
|
%t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } %t61, { ptr, i64, i64 } { ptr @.str.5221, i64 2, i64 0 })
|
|
store { ptr, i64, i64 } %t62, ptr %a63
|
|
%t64 = load ptr, ptr %a1
|
|
%t65 = load { ptr, i64, i64 }, ptr %a59
|
|
%t66 = call { ptr, i64, i64 } @finch.gen.load(ptr %t64, { ptr, i64, i64 } %t65, { ptr, i64, i64 } { ptr @.str.5222, i64 2, i64 0 })
|
|
store { ptr, i64, i64 } %t66, ptr %a67
|
|
store { ptr, i64, i64 } { ptr @.str.5223, i64 0, i64 0 }, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.5224, i64 0, i64 0 }, ptr %a69
|
|
%t70 = load %S.ast.Type, ptr %a2
|
|
%t71 = call i1 @finch.gen.isFloat(%S.ast.Type %t70)
|
|
br i1 %t71, label %then7772, label %else7773
|
|
then7772:
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = load { ptr, i64, i64 }, ptr %a59
|
|
store { ptr, i64, i64 } { ptr @.str.5225, i64 9, i64 0 }, ptr %a75
|
|
store { ptr, i64, i64 } %t73, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
store { ptr, i64, i64 } %t77, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.5226, i64 1, i64 0 }, ptr %a80
|
|
call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a78
|
|
%t82 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t81, ptr %a84
|
|
store { ptr, i64, i64 } %t82, ptr %a85
|
|
call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85)
|
|
%t86 = load { ptr, i64, i64 }, ptr %a83
|
|
store { ptr, i64, i64 } %t86, ptr %a88
|
|
store { ptr, i64, i64 } { ptr @.str.5227, i64 2, i64 0 }, ptr %a89
|
|
call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a87
|
|
%t91 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t90, ptr %a93
|
|
store { ptr, i64, i64 } %t91, ptr %a94
|
|
call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94)
|
|
%t95 = load { ptr, i64, i64 }, ptr %a92
|
|
%t96 = call { ptr, i64, i64 } @finch.gen.op(ptr %t72, { ptr, i64, i64 } %t95)
|
|
store { ptr, i64, i64 } %t96, ptr %a68
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = load { ptr, i64, i64 }, ptr %a59
|
|
store { ptr, i64, i64 } { ptr @.str.5228, i64 9, i64 0 }, ptr %a100
|
|
store { ptr, i64, i64 } %t98, ptr %a101
|
|
call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a99
|
|
store { ptr, i64, i64 } %t102, ptr %a104
|
|
store { ptr, i64, i64 } { ptr @.str.5229, i64 1, i64 0 }, ptr %a105
|
|
call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105)
|
|
%t106 = load { ptr, i64, i64 }, ptr %a103
|
|
%t107 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t106, ptr %a109
|
|
store { ptr, i64, i64 } %t107, ptr %a110
|
|
call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a108
|
|
store { ptr, i64, i64 } %t111, ptr %a113
|
|
store { ptr, i64, i64 } { ptr @.str.5230, i64 2, i64 0 }, ptr %a114
|
|
call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114)
|
|
%t115 = load { ptr, i64, i64 }, ptr %a112
|
|
%t116 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t115, ptr %a118
|
|
store { ptr, i64, i64 } %t116, ptr %a119
|
|
call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119)
|
|
%t120 = load { ptr, i64, i64 }, ptr %a117
|
|
%t121 = call { ptr, i64, i64 } @finch.gen.op(ptr %t97, { ptr, i64, i64 } %t120)
|
|
store { ptr, i64, i64 } %t121, ptr %a69
|
|
br label %endif7774
|
|
else7773:
|
|
%t122 = load ptr, ptr %a1
|
|
%t123 = load %S.ast.Type, ptr %a2
|
|
%t124 = call i1 @finch.gen.isSigned(%S.ast.Type %t123)
|
|
%t125 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5232, i64 1, i64 0 }, i1 %t124)
|
|
store { ptr, i64, i64 } { ptr @.str.5231, i64 5, i64 0 }, ptr %a127
|
|
store { ptr, i64, i64 } %t125, ptr %a128
|
|
call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128)
|
|
%t129 = load { ptr, i64, i64 }, ptr %a126
|
|
store { ptr, i64, i64 } %t129, ptr %a131
|
|
store { ptr, i64, i64 } { ptr @.str.5233, i64 1, i64 0 }, ptr %a132
|
|
call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132)
|
|
%t133 = load { ptr, i64, i64 }, ptr %a130
|
|
%t134 = load { ptr, i64, i64 }, ptr %a59
|
|
store { ptr, i64, i64 } %t133, ptr %a136
|
|
store { ptr, i64, i64 } %t134, ptr %a137
|
|
call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137)
|
|
%t138 = load { ptr, i64, i64 }, ptr %a135
|
|
store { ptr, i64, i64 } %t138, ptr %a140
|
|
store { ptr, i64, i64 } { ptr @.str.5234, i64 1, i64 0 }, ptr %a141
|
|
call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141)
|
|
%t142 = load { ptr, i64, i64 }, ptr %a139
|
|
%t143 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t142, ptr %a145
|
|
store { ptr, i64, i64 } %t143, ptr %a146
|
|
call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a144
|
|
store { ptr, i64, i64 } %t147, ptr %a149
|
|
store { ptr, i64, i64 } { ptr @.str.5235, i64 2, i64 0 }, ptr %a150
|
|
call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150)
|
|
%t151 = load { ptr, i64, i64 }, ptr %a148
|
|
%t152 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t151, ptr %a154
|
|
store { ptr, i64, i64 } %t152, ptr %a155
|
|
call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155)
|
|
%t156 = load { ptr, i64, i64 }, ptr %a153
|
|
%t157 = call { ptr, i64, i64 } @finch.gen.op(ptr %t122, { ptr, i64, i64 } %t156)
|
|
store { ptr, i64, i64 } %t157, ptr %a68
|
|
%t158 = load ptr, ptr %a1
|
|
%t159 = load %S.ast.Type, ptr %a2
|
|
%t160 = call i1 @finch.gen.isSigned(%S.ast.Type %t159)
|
|
%t161 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5237, i64 1, i64 0 }, i1 %t160)
|
|
store { ptr, i64, i64 } { ptr @.str.5236, i64 5, i64 0 }, ptr %a163
|
|
store { ptr, i64, i64 } %t161, ptr %a164
|
|
call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164)
|
|
%t165 = load { ptr, i64, i64 }, ptr %a162
|
|
store { ptr, i64, i64 } %t165, ptr %a167
|
|
store { ptr, i64, i64 } { ptr @.str.5238, i64 1, i64 0 }, ptr %a168
|
|
call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168)
|
|
%t169 = load { ptr, i64, i64 }, ptr %a166
|
|
%t170 = load { ptr, i64, i64 }, ptr %a59
|
|
store { ptr, i64, i64 } %t169, ptr %a172
|
|
store { ptr, i64, i64 } %t170, ptr %a173
|
|
call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173)
|
|
%t174 = load { ptr, i64, i64 }, ptr %a171
|
|
store { ptr, i64, i64 } %t174, ptr %a176
|
|
store { ptr, i64, i64 } { ptr @.str.5239, i64 1, i64 0 }, ptr %a177
|
|
call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177)
|
|
%t178 = load { ptr, i64, i64 }, ptr %a175
|
|
%t179 = load { ptr, i64, i64 }, ptr %a63
|
|
store { ptr, i64, i64 } %t178, ptr %a181
|
|
store { ptr, i64, i64 } %t179, ptr %a182
|
|
call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182)
|
|
%t183 = load { ptr, i64, i64 }, ptr %a180
|
|
store { ptr, i64, i64 } %t183, ptr %a185
|
|
store { ptr, i64, i64 } { ptr @.str.5240, i64 2, i64 0 }, ptr %a186
|
|
call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186)
|
|
%t187 = load { ptr, i64, i64 }, ptr %a184
|
|
%t188 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t187, ptr %a190
|
|
store { ptr, i64, i64 } %t188, ptr %a191
|
|
call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191)
|
|
%t192 = load { ptr, i64, i64 }, ptr %a189
|
|
%t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t192)
|
|
store { ptr, i64, i64 } %t193, ptr %a69
|
|
br label %endif7774
|
|
endif7774:
|
|
%t194 = load ptr, ptr %a1
|
|
%t195 = load ptr, ptr %a1
|
|
%t196 = load { ptr, i64, i64 }, ptr %a69
|
|
store { ptr, i64, i64 } { ptr @.str.5242, i64 8, i64 0 }, ptr %a198
|
|
store { ptr, i64, i64 } %t196, ptr %a199
|
|
call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199)
|
|
%t200 = load { ptr, i64, i64 }, ptr %a197
|
|
store { ptr, i64, i64 } %t200, ptr %a202
|
|
store { ptr, i64, i64 } { ptr @.str.5243, i64 7, i64 0 }, ptr %a203
|
|
call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203)
|
|
%t204 = load { ptr, i64, i64 }, ptr %a201
|
|
%t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t195, { ptr, i64, i64 } %t204)
|
|
store { ptr, i64, i64 } { ptr @.str.5241, i64 8, i64 0 }, ptr %a207
|
|
store { ptr, i64, i64 } %t205, ptr %a208
|
|
call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208)
|
|
%t209 = load { ptr, i64, i64 }, ptr %a206
|
|
store { ptr, i64, i64 } %t209, ptr %a211
|
|
store { ptr, i64, i64 } { ptr @.str.5244, i64 2, i64 0 }, ptr %a212
|
|
call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212)
|
|
%t213 = load { ptr, i64, i64 }, ptr %a210
|
|
%t214 = load ptr, ptr %a1
|
|
%t215 = load { ptr, i64, i64 }, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.5245, i64 8, i64 0 }, ptr %a217
|
|
store { ptr, i64, i64 } %t215, ptr %a218
|
|
call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218)
|
|
%t219 = load { ptr, i64, i64 }, ptr %a216
|
|
store { ptr, i64, i64 } %t219, ptr %a221
|
|
store { ptr, i64, i64 } { ptr @.str.5246, i64 7, i64 0 }, ptr %a222
|
|
call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222)
|
|
%t223 = load { ptr, i64, i64 }, ptr %a220
|
|
%t224 = call { ptr, i64, i64 } @finch.gen.op(ptr %t214, { ptr, i64, i64 } %t223)
|
|
store { ptr, i64, i64 } %t213, ptr %a226
|
|
store { ptr, i64, i64 } %t224, ptr %a227
|
|
call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227)
|
|
%t228 = load { ptr, i64, i64 }, ptr %a225
|
|
%t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t194, { ptr, i64, i64 } %t228)
|
|
store { ptr, i64, i64 } %t229, ptr %a35
|
|
br label %endif7771
|
|
endif7771:
|
|
%t230 = load ptr, ptr %a1
|
|
%t231 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.5247, i64 8, i64 0 }, ptr %a233
|
|
store { ptr, i64, i64 } %t231, ptr %a234
|
|
call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234)
|
|
%t235 = load { ptr, i64, i64 }, ptr %a232
|
|
call void @finch.gen.emit(ptr %t230, { ptr, i64, i64 } %t235)
|
|
%t236 = load ptr, ptr %a1
|
|
%t237 = load %S.gen.Saved, ptr %a34
|
|
%t238 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.5248, i64 20, i64 0 }, ptr %a240
|
|
store { ptr, i64, i64 } %t238, ptr %a241
|
|
call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241)
|
|
%t242 = load { ptr, i64, i64 }, ptr %a239
|
|
store { ptr, i64, i64 } %t242, ptr %a244
|
|
store { ptr, i64, i64 } { ptr @.str.5249, i64 16, i64 0 }, ptr %a245
|
|
call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245)
|
|
%t246 = load { ptr, i64, i64 }, ptr %a243
|
|
call void @finch.gen.endHelper(ptr %t236, %S.gen.Saved %t237, { ptr, i64, i64 } %t246)
|
|
%t247 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t247, ptr %a248
|
|
call void @finch_str_copy(ptr %a249, ptr %a248)
|
|
%t250 = load { ptr, i64, i64 }, ptr %a249
|
|
ret { ptr, i64, i64 } %t250
|
|
}
|
|
|
|
define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.ast.Node, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a137 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a183 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a193 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a230 = alloca { ptr, i64, i64 }, align 16
|
|
%a232 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a237 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a242 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a260 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
%a270 = alloca { ptr, i64, i64 }, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a278 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca { ptr, i64, i64 }, align 16
|
|
%a304 = alloca { ptr, i64, i64 }, align 16
|
|
%a308 = alloca { ptr, i64, i64 }, align 16
|
|
%a309 = alloca { ptr, i64, i64 }, align 16
|
|
%a314 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a328 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a336 = alloca { ptr, i64, i64 }, align 16
|
|
%a337 = alloca { ptr, i64, i64 }, align 16
|
|
%a338 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a345 = alloca { ptr, i64, i64 }, align 16
|
|
%a346 = alloca { ptr, i64, i64 }, align 16
|
|
%a347 = alloca { ptr, i64, i64 }, align 16
|
|
%a357 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = alloca { ptr, i64, i64 }, align 16
|
|
%a374 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a389 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a391 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a395 = alloca { ptr, i64, i64 }, align 16
|
|
%a398 = alloca { ptr, i64, i64 }, align 16
|
|
%a399 = alloca { ptr, i64, i64 }, align 16
|
|
%a400 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a403 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a411 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a416 = alloca { ptr, i64, i64 }, align 16
|
|
%a417 = alloca { ptr, i64, i64 }, align 16
|
|
%a418 = alloca { ptr, i64, i64 }, align 16
|
|
%a420 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a422 = alloca { ptr, i64, i64 }, align 16
|
|
%a432 = alloca { ptr, i64, i64 }, align 16
|
|
%a433 = alloca { ptr, i64, i64 }, align 16
|
|
%a449 = alloca { ptr, i64, i64 }, align 16
|
|
%a452 = alloca { ptr, i64, i64 }, align 16
|
|
%a455 = alloca { ptr, i64, i64 }, align 16
|
|
%a456 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a459 = alloca { ptr, i64, i64 }, align 16
|
|
%a460 = alloca { ptr, i64, i64 }, align 16
|
|
%a461 = alloca { ptr, i64, i64 }, align 16
|
|
%a464 = alloca { ptr, i64, i64 }, align 16
|
|
%a465 = alloca { ptr, i64, i64 }, align 16
|
|
%a466 = alloca { ptr, i64, i64 }, align 16
|
|
%a468 = alloca { ptr, i64, i64 }, align 16
|
|
%a469 = alloca { ptr, i64, i64 }, align 16
|
|
%a470 = alloca { ptr, i64, i64 }, align 16
|
|
%a473 = alloca { ptr, i64, i64 }, align 16
|
|
%a474 = alloca { ptr, i64, i64 }, align 16
|
|
%a475 = alloca { ptr, i64, i64 }, align 16
|
|
%a477 = alloca { ptr, i64, i64 }, align 16
|
|
%a478 = alloca { ptr, i64, i64 }, align 16
|
|
%a479 = alloca { ptr, i64, i64 }, align 16
|
|
%a490 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca { ptr, i64, i64 }, align 16
|
|
%a516 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a519 = alloca { ptr, i64, i64 }, align 16
|
|
%a522 = alloca { ptr, i64, i64 }, align 16
|
|
%a523 = alloca { ptr, i64, i64 }, align 16
|
|
%a524 = alloca { ptr, i64, i64 }, align 16
|
|
%a526 = alloca { ptr, i64, i64 }, align 16
|
|
%a527 = alloca { ptr, i64, i64 }, align 16
|
|
%a528 = alloca { ptr, i64, i64 }, align 16
|
|
%a531 = alloca { ptr, i64, i64 }, align 16
|
|
%a532 = alloca { ptr, i64, i64 }, align 16
|
|
%a533 = alloca { ptr, i64, i64 }, align 16
|
|
%a535 = alloca { ptr, i64, i64 }, align 16
|
|
%a536 = alloca { ptr, i64, i64 }, align 16
|
|
%a537 = alloca { ptr, i64, i64 }, align 16
|
|
%a540 = alloca { ptr, i64, i64 }, align 16
|
|
%a541 = alloca { ptr, i64, i64 }, align 16
|
|
%a542 = alloca { ptr, i64, i64 }, align 16
|
|
%a544 = alloca { ptr, i64, i64 }, align 16
|
|
%a545 = alloca { ptr, i64, i64 }, align 16
|
|
%a546 = alloca { ptr, i64, i64 }, align 16
|
|
%a556 = alloca { ptr, i64, i64 }, align 16
|
|
%a557 = alloca { ptr, i64, i64 }, align 16
|
|
%a564 = alloca { ptr, i64, i64 }, align 16
|
|
%a567 = alloca { ptr, i64, i64 }, align 16
|
|
%a568 = alloca { ptr, i64, i64 }, align 16
|
|
%a569 = alloca { ptr, i64, i64 }, align 16
|
|
%a571 = alloca { ptr, i64, i64 }, align 16
|
|
%a572 = alloca { ptr, i64, i64 }, align 16
|
|
%a573 = alloca { ptr, i64, i64 }, align 16
|
|
%a576 = alloca { ptr, i64, i64 }, align 16
|
|
%a577 = alloca { ptr, i64, i64 }, align 16
|
|
%a578 = alloca { ptr, i64, i64 }, align 16
|
|
%a580 = alloca { ptr, i64, i64 }, align 16
|
|
%a581 = alloca { ptr, i64, i64 }, align 16
|
|
%a582 = alloca { ptr, i64, i64 }, align 16
|
|
%a595 = alloca { ptr, i64, i64 }, align 16
|
|
%a596 = alloca { ptr, i64, i64 }, align 16
|
|
%a597 = alloca { ptr, i64, i64 }, align 16
|
|
%a599 = alloca { ptr, i64, i64 }, align 16
|
|
%a600 = alloca { ptr, i64, i64 }, align 16
|
|
%a601 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.ast.Node %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1
|
|
%t5 = load { ptr, i64, i64 }, ptr %t4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
call void @finch_str_copy(ptr %a7, ptr %a6)
|
|
%t8 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
%t10 = load ptr, ptr %a1
|
|
%t11 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t10)
|
|
store { ptr, i64, i64 } %t11, ptr %a12
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = load ptr, ptr %a1
|
|
%t15 = icmp eq ptr %t14, null
|
|
br i1 %t15, label %panic7775, label %ok7776
|
|
panic7775:
|
|
call void @finch_panic(ptr @.str.5250, i64 4804, ptr @.str.5251)
|
|
unreachable
|
|
ok7776:
|
|
%t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 1
|
|
%t17 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13
|
|
%t18 = load i64, ptr %t17
|
|
%t19 = load { ptr, i64, i64 }, ptr %t16
|
|
%t20 = extractvalue { ptr, i64, i64 } %t19, 1
|
|
%t21 = icmp uge i64 %t18, %t20
|
|
br i1 %t21, label %range7777, label %inrange7778
|
|
range7777:
|
|
call void @finch_panic_index(ptr @.str.5252, i64 4804, i64 %t18, i64 %t20)
|
|
unreachable
|
|
inrange7778:
|
|
%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.5253, i64 3, i64 0 }, ptr %a29
|
|
%t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29)
|
|
%t31 = icmp ne i32 %t30, 0
|
|
br i1 %t31, label %then7779, label %endif7781
|
|
then7779:
|
|
%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 %range7782, label %inrange7783
|
|
range7782:
|
|
call void @finch_panic_index(ptr @.str.5254, i64 4807, i64 1, i64 %t38)
|
|
unreachable
|
|
inrange7783:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 1
|
|
%t42 = load %S.ast.Node, ptr %t41
|
|
%t43 = call %S.gen.Val @finch.gen.expr(ptr %t35, %S.ast.Node %t42)
|
|
%t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5255, i64 3, i64 0 })
|
|
%t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t46 = load { ptr, i64, i64 }, ptr %t45
|
|
%t47 = extractvalue { ptr, i64, i64 } %t46, 1
|
|
%t48 = icmp uge i64 1, %t47
|
|
br i1 %t48, label %range7784, label %inrange7785
|
|
range7784:
|
|
call void @finch_panic_index(ptr @.str.5256, i64 4807, i64 1, i64 %t47)
|
|
unreachable
|
|
inrange7785:
|
|
%t49 = extractvalue { ptr, i64, i64 } %t46, 0
|
|
%t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1
|
|
%t51 = load %S.ast.Node, ptr %t50
|
|
%t52 = call %S.gen.Val @finch.gen.coerce(ptr %t34, %S.gen.Val %t43, %S.ast.Type %t44, %S.ast.Node %t51, { ptr, i64, i64 } { ptr @.str.5257, i64 9, i64 0 })
|
|
%t53 = extractvalue %S.gen.Val %t52, 0
|
|
store { ptr, i64, i64 } %t53, ptr %a54
|
|
call void @finch_str_copy(ptr %a55, ptr %a54)
|
|
%t56 = load { ptr, i64, i64 }, ptr %a55
|
|
store { ptr, i64, i64 } %t56, ptr %a57
|
|
%t58 = load ptr, ptr %a1
|
|
%t59 = load ptr, ptr %a1
|
|
%t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t61 = load { ptr, i64, i64 }, ptr %t60
|
|
%t62 = extractvalue { ptr, i64, i64 } %t61, 1
|
|
%t63 = icmp uge i64 2, %t62
|
|
br i1 %t63, label %range7786, label %inrange7787
|
|
range7786:
|
|
call void @finch_panic_index(ptr @.str.5258, i64 4808, i64 2, i64 %t62)
|
|
unreachable
|
|
inrange7787:
|
|
%t64 = extractvalue { ptr, i64, i64 } %t61, 0
|
|
%t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 2
|
|
%t66 = load %S.ast.Node, ptr %t65
|
|
%t67 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t66)
|
|
%t68 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5259, i64 3, i64 0 })
|
|
%t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t70 = load { ptr, i64, i64 }, ptr %t69
|
|
%t71 = extractvalue { ptr, i64, i64 } %t70, 1
|
|
%t72 = icmp uge i64 2, %t71
|
|
br i1 %t72, label %range7788, label %inrange7789
|
|
range7788:
|
|
call void @finch_panic_index(ptr @.str.5260, i64 4808, i64 2, i64 %t71)
|
|
unreachable
|
|
inrange7789:
|
|
%t73 = extractvalue { ptr, i64, i64 } %t70, 0
|
|
%t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 2
|
|
%t75 = load %S.ast.Node, ptr %t74
|
|
%t76 = call %S.gen.Val @finch.gen.coerce(ptr %t58, %S.gen.Val %t67, %S.ast.Type %t68, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.5261, i64 7, i64 0 })
|
|
%t77 = extractvalue %S.gen.Val %t76, 0
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
call void @finch_str_copy(ptr %a79, ptr %a78)
|
|
%t80 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.5262, i64 29, i64 0 }, ptr %a85
|
|
store { ptr, i64, i64 } %t83, ptr %a86
|
|
call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a84
|
|
store { ptr, i64, i64 } %t87, ptr %a89
|
|
store { ptr, i64, i64 } { ptr @.str.5263, i64 6, i64 0 }, ptr %a90
|
|
call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90)
|
|
%t91 = load { ptr, i64, i64 }, ptr %a88
|
|
%t92 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t91, ptr %a94
|
|
store { ptr, i64, i64 } %t92, ptr %a95
|
|
call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95)
|
|
%t96 = load { ptr, i64, i64 }, ptr %a93
|
|
store { ptr, i64, i64 } %t96, ptr %a98
|
|
store { ptr, i64, i64 } { ptr @.str.5264, i64 6, i64 0 }, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
%t101 = load { ptr, i64, i64 }, ptr %a57
|
|
store { ptr, i64, i64 } %t100, ptr %a103
|
|
store { ptr, i64, i64 } %t101, ptr %a104
|
|
call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104)
|
|
%t105 = load { ptr, i64, i64 }, ptr %a102
|
|
store { ptr, i64, i64 } %t105, ptr %a107
|
|
store { ptr, i64, i64 } { ptr @.str.5265, i64 6, i64 0 }, ptr %a108
|
|
call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108)
|
|
%t109 = load { ptr, i64, i64 }, ptr %a106
|
|
%t110 = load { ptr, i64, i64 }, ptr %a81
|
|
store { ptr, i64, i64 } %t109, ptr %a112
|
|
store { ptr, i64, i64 } %t110, ptr %a113
|
|
call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113)
|
|
%t114 = load { ptr, i64, i64 }, ptr %a111
|
|
store { ptr, i64, i64 } %t114, ptr %a116
|
|
store { ptr, i64, i64 } { ptr @.str.5266, i64 6, i64 0 }, ptr %a117
|
|
call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117)
|
|
%t118 = load { ptr, i64, i64 }, ptr %a115
|
|
%t119 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t118, ptr %a121
|
|
store { ptr, i64, i64 } %t119, ptr %a122
|
|
call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122)
|
|
%t123 = load { ptr, i64, i64 }, ptr %a120
|
|
store { ptr, i64, i64 } %t123, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.5267, i64 6, i64 0 }, ptr %a126
|
|
call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126)
|
|
%t127 = load { ptr, i64, i64 }, ptr %a124
|
|
%t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11
|
|
%t129 = load i64, ptr %t128
|
|
call void @finch_str_from_int(ptr %a130, i64 %t129)
|
|
%t131 = load { ptr, i64, i64 }, ptr %a130
|
|
store { ptr, i64, i64 } %t127, ptr %a133
|
|
store { ptr, i64, i64 } %t131, ptr %a134
|
|
call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134)
|
|
%t135 = load { ptr, i64, i64 }, ptr %a132
|
|
store { ptr, i64, i64 } %t135, ptr %a137
|
|
store { ptr, i64, i64 } { ptr @.str.5268, i64 1, i64 0 }, ptr %a138
|
|
call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138)
|
|
%t139 = load { ptr, i64, i64 }, ptr %a136
|
|
call void @finch.gen.emit(ptr %t82, { ptr, i64, i64 } %t139)
|
|
%t140 = load ptr, ptr %a1
|
|
%t141 = load { ptr, i64, i64 }, ptr %a12
|
|
%t142 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } { ptr @.str.5269, i64 17, i64 0 }, { ptr, i64, i64 } %t141)
|
|
%t143 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t142, 0
|
|
%t144 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5270, i64 3, i64 0 })
|
|
%t145 = insertvalue %S.gen.Val %t143, %S.ast.Type %t144, 1
|
|
%t146 = insertvalue %S.gen.Val %t145, i1 true, 2
|
|
ret %S.gen.Val %t146
|
|
endif7781:
|
|
%t147 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t147, ptr %a148
|
|
store { ptr, i64, i64 } { ptr @.str.5271, i64 4, i64 0 }, ptr %a149
|
|
%t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149)
|
|
%t151 = icmp ne i32 %t150, 0
|
|
br label %logic.from7790
|
|
logic.from7790:
|
|
br i1 %t151, label %logic.end7792, label %logic.rhs7791
|
|
logic.rhs7791:
|
|
%t152 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t152, ptr %a153
|
|
store { ptr, i64, i64 } { ptr @.str.5272, i64 8, i64 0 }, ptr %a154
|
|
%t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154)
|
|
%t156 = icmp ne i32 %t155, 0
|
|
br label %logic.rend7793
|
|
logic.rend7793:
|
|
br label %logic.end7792
|
|
logic.end7792:
|
|
%t157 = phi i1 [ true, %logic.from7790 ], [ %t156, %logic.rend7793 ]
|
|
br label %logic.from7794
|
|
logic.from7794:
|
|
br i1 %t157, label %logic.end7796, label %logic.rhs7795
|
|
logic.rhs7795:
|
|
%t158 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t158, ptr %a159
|
|
store { ptr, i64, i64 } { ptr @.str.5273, i64 11, i64 0 }, ptr %a160
|
|
%t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160)
|
|
%t162 = icmp ne i32 %t161, 0
|
|
br label %logic.rend7797
|
|
logic.rend7797:
|
|
br label %logic.end7796
|
|
logic.end7796:
|
|
%t163 = phi i1 [ true, %logic.from7794 ], [ %t162, %logic.rend7797 ]
|
|
br label %logic.from7798
|
|
logic.from7798:
|
|
br i1 %t163, label %logic.end7800, label %logic.rhs7799
|
|
logic.rhs7799:
|
|
%t164 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t164, ptr %a165
|
|
store { ptr, i64, i64 } { ptr @.str.5274, i64 9, i64 0 }, ptr %a166
|
|
%t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166)
|
|
%t168 = icmp ne i32 %t167, 0
|
|
br label %logic.rend7801
|
|
logic.rend7801:
|
|
br label %logic.end7800
|
|
logic.end7800:
|
|
%t169 = phi i1 [ true, %logic.from7798 ], [ %t168, %logic.rend7801 ]
|
|
br i1 %t169, label %then7802, label %endif7804
|
|
then7802:
|
|
%t170 = load ptr, ptr %a1
|
|
%t171 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t170, %S.ast.Node %t171, i64 1)
|
|
%t172 = load ptr, ptr %a1
|
|
%t173 = load ptr, ptr %a1
|
|
%t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t175 = load { ptr, i64, i64 }, ptr %t174
|
|
%t176 = extractvalue { ptr, i64, i64 } %t175, 1
|
|
%t177 = icmp uge i64 1, %t176
|
|
br i1 %t177, label %range7805, label %inrange7806
|
|
range7805:
|
|
call void @finch_panic_index(ptr @.str.5275, i64 4814, i64 1, i64 %t176)
|
|
unreachable
|
|
inrange7806:
|
|
%t178 = extractvalue { ptr, i64, i64 } %t175, 0
|
|
%t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 1
|
|
%t180 = load %S.ast.Node, ptr %t179
|
|
%t181 = call %S.gen.Val @finch.gen.strArg(ptr %t173, %S.ast.Node %t180, { ptr, i64, i64 } { ptr @.str.5276, i64 20, i64 0 })
|
|
%t182 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t172, %S.gen.Val %t181)
|
|
store { ptr, i64, i64 } %t182, ptr %a183
|
|
%t184 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t184, ptr %a185
|
|
store { ptr, i64, i64 } { ptr @.str.5277, i64 4, i64 0 }, ptr %a186
|
|
%t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186)
|
|
%t188 = icmp ne i32 %t187, 0
|
|
br i1 %t188, label %then7807, label %endif7809
|
|
then7807:
|
|
%t189 = load ptr, ptr %a1
|
|
%t190 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5278, i64 29, i64 0 }, ptr %a192
|
|
store { ptr, i64, i64 } %t190, ptr %a193
|
|
call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193)
|
|
%t194 = load { ptr, i64, i64 }, ptr %a191
|
|
store { ptr, i64, i64 } %t194, ptr %a196
|
|
store { ptr, i64, i64 } { ptr @.str.5279, i64 6, i64 0 }, ptr %a197
|
|
call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197)
|
|
%t198 = load { ptr, i64, i64 }, ptr %a195
|
|
%t199 = load { ptr, i64, i64 }, ptr %a183
|
|
store { ptr, i64, i64 } %t198, ptr %a201
|
|
store { ptr, i64, i64 } %t199, ptr %a202
|
|
call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202)
|
|
%t203 = load { ptr, i64, i64 }, ptr %a200
|
|
store { ptr, i64, i64 } %t203, ptr %a205
|
|
store { ptr, i64, i64 } { ptr @.str.5280, i64 1, i64 0 }, ptr %a206
|
|
call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206)
|
|
%t207 = load { ptr, i64, i64 }, ptr %a204
|
|
%t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t189, { ptr, i64, i64 } %t207)
|
|
%t209 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t208, 0
|
|
%t210 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5281, i64 3, i64 0 })
|
|
%t211 = insertvalue %S.gen.Val %t209, %S.ast.Type %t210, 1
|
|
ret %S.gen.Val %t211
|
|
endif7809:
|
|
%t212 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t212, ptr %a213
|
|
store { ptr, i64, i64 } { ptr @.str.5282, i64 8, i64 0 }, ptr %a214
|
|
%t215 = call i32 @finch_str_eq(ptr %a213, ptr %a214)
|
|
%t216 = icmp ne i32 %t215, 0
|
|
br i1 %t216, label %then7810, label %endif7812
|
|
then7810:
|
|
%t217 = load ptr, ptr %a1
|
|
%t218 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5283, i64 29, i64 0 }, ptr %a220
|
|
store { ptr, i64, i64 } %t218, ptr %a221
|
|
call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221)
|
|
%t222 = load { ptr, i64, i64 }, ptr %a219
|
|
store { ptr, i64, i64 } %t222, ptr %a224
|
|
store { ptr, i64, i64 } { ptr @.str.5284, i64 6, i64 0 }, ptr %a225
|
|
call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225)
|
|
%t226 = load { ptr, i64, i64 }, ptr %a223
|
|
%t227 = load { ptr, i64, i64 }, ptr %a183
|
|
store { ptr, i64, i64 } %t226, ptr %a229
|
|
store { ptr, i64, i64 } %t227, ptr %a230
|
|
call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230)
|
|
%t231 = load { ptr, i64, i64 }, ptr %a228
|
|
store { ptr, i64, i64 } %t231, ptr %a233
|
|
store { ptr, i64, i64 } { ptr @.str.5285, i64 1, i64 0 }, ptr %a234
|
|
call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234)
|
|
%t235 = load { ptr, i64, i64 }, ptr %a232
|
|
%t236 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t235)
|
|
store { ptr, i64, i64 } %t236, ptr %a237
|
|
%t238 = load ptr, ptr %a1
|
|
%t239 = load { ptr, i64, i64 }, ptr %a237
|
|
store { ptr, i64, i64 } { ptr @.str.5286, i64 13, i64 0 }, ptr %a241
|
|
store { ptr, i64, i64 } %t239, ptr %a242
|
|
call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242)
|
|
%t243 = load { ptr, i64, i64 }, ptr %a240
|
|
store { ptr, i64, i64 } %t243, ptr %a245
|
|
store { ptr, i64, i64 } { ptr @.str.5287, i64 3, i64 0 }, ptr %a246
|
|
call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246)
|
|
%t247 = load { ptr, i64, i64 }, ptr %a244
|
|
%t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t238, { ptr, i64, i64 } %t247)
|
|
%t249 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t248, 0
|
|
%t250 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5288, i64 4, i64 0 })
|
|
%t251 = insertvalue %S.gen.Val %t249, %S.ast.Type %t250, 1
|
|
ret %S.gen.Val %t251
|
|
endif7812:
|
|
store { ptr, i64, i64 } { ptr @.str.5289, i64 17, i64 0 }, ptr %a252
|
|
%t253 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t253, ptr %a254
|
|
store { ptr, i64, i64 } { ptr @.str.5290, i64 9, i64 0 }, ptr %a255
|
|
%t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255)
|
|
%t257 = icmp ne i32 %t256, 0
|
|
br i1 %t257, label %then7813, label %endif7815
|
|
then7813:
|
|
store { ptr, i64, i64 } { ptr @.str.5291, i64 15, i64 0 }, ptr %a252
|
|
br label %endif7815
|
|
endif7815:
|
|
%t258 = load ptr, ptr %a1
|
|
%t259 = load { ptr, i64, i64 }, ptr %a252
|
|
store { ptr, i64, i64 } { ptr @.str.5292, i64 9, i64 0 }, ptr %a261
|
|
store { ptr, i64, i64 } %t259, ptr %a262
|
|
call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262)
|
|
%t263 = load { ptr, i64, i64 }, ptr %a260
|
|
store { ptr, i64, i64 } %t263, ptr %a265
|
|
store { ptr, i64, i64 } { ptr @.str.5293, i64 5, i64 0 }, ptr %a266
|
|
call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266)
|
|
%t267 = load { ptr, i64, i64 }, ptr %a264
|
|
%t268 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t267, ptr %a270
|
|
store { ptr, i64, i64 } %t268, ptr %a271
|
|
call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271)
|
|
%t272 = load { ptr, i64, i64 }, ptr %a269
|
|
store { ptr, i64, i64 } %t272, ptr %a274
|
|
store { ptr, i64, i64 } { ptr @.str.5294, i64 6, i64 0 }, ptr %a275
|
|
call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275)
|
|
%t276 = load { ptr, i64, i64 }, ptr %a273
|
|
%t277 = load { ptr, i64, i64 }, ptr %a183
|
|
store { ptr, i64, i64 } %t276, ptr %a279
|
|
store { ptr, i64, i64 } %t277, ptr %a280
|
|
call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280)
|
|
%t281 = load { ptr, i64, i64 }, ptr %a278
|
|
store { ptr, i64, i64 } %t281, ptr %a283
|
|
store { ptr, i64, i64 } { ptr @.str.5295, i64 1, i64 0 }, ptr %a284
|
|
call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284)
|
|
%t285 = load { ptr, i64, i64 }, ptr %a282
|
|
%t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t285)
|
|
store { ptr, i64, i64 } %t286, ptr %a287
|
|
%t288 = load ptr, ptr %a1
|
|
%t289 = load { ptr, i64, i64 }, ptr %a287
|
|
store { ptr, i64, i64 } { ptr @.str.5296, i64 12, i64 0 }, ptr %a291
|
|
store { ptr, i64, i64 } %t289, ptr %a292
|
|
call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292)
|
|
%t293 = load { ptr, i64, i64 }, ptr %a290
|
|
store { ptr, i64, i64 } %t293, ptr %a295
|
|
store { ptr, i64, i64 } { ptr @.str.5297, i64 3, i64 0 }, ptr %a296
|
|
call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296)
|
|
%t297 = load { ptr, i64, i64 }, ptr %a294
|
|
%t298 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t297)
|
|
%t299 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t298, 0
|
|
%t300 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5298, i64 4, i64 0 })
|
|
%t301 = insertvalue %S.gen.Val %t299, %S.ast.Type %t300, 1
|
|
ret %S.gen.Val %t301
|
|
endif7804:
|
|
%t302 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t302, ptr %a303
|
|
store { ptr, i64, i64 } { ptr @.str.5299, i64 4, i64 0 }, ptr %a304
|
|
%t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304)
|
|
%t306 = icmp ne i32 %t305, 0
|
|
br label %logic.from7816
|
|
logic.from7816:
|
|
br i1 %t306, label %logic.end7818, label %logic.rhs7817
|
|
logic.rhs7817:
|
|
%t307 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t307, ptr %a308
|
|
store { ptr, i64, i64 } { ptr @.str.5300, i64 5, i64 0 }, ptr %a309
|
|
%t310 = call i32 @finch_str_eq(ptr %a308, ptr %a309)
|
|
%t311 = icmp ne i32 %t310, 0
|
|
br label %logic.rend7819
|
|
logic.rend7819:
|
|
br label %logic.end7818
|
|
logic.end7818:
|
|
%t312 = phi i1 [ true, %logic.from7816 ], [ %t311, %logic.rend7819 ]
|
|
br label %logic.from7820
|
|
logic.from7820:
|
|
br i1 %t312, label %logic.end7822, label %logic.rhs7821
|
|
logic.rhs7821:
|
|
%t313 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t313, ptr %a314
|
|
store { ptr, i64, i64 } { ptr @.str.5301, i64 5, i64 0 }, ptr %a315
|
|
%t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315)
|
|
%t317 = icmp ne i32 %t316, 0
|
|
br label %logic.rend7823
|
|
logic.rend7823:
|
|
br label %logic.end7822
|
|
logic.end7822:
|
|
%t318 = phi i1 [ true, %logic.from7820 ], [ %t317, %logic.rend7823 ]
|
|
br i1 %t318, label %then7824, label %endif7826
|
|
then7824:
|
|
%t319 = load ptr, ptr %a1
|
|
%t320 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t319, %S.ast.Node %t320, i64 0)
|
|
%t321 = load ptr, ptr %a1
|
|
%t322 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.5302, i64 21, i64 0 }, ptr %a324
|
|
store { ptr, i64, i64 } %t322, ptr %a325
|
|
call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325)
|
|
%t326 = load { ptr, i64, i64 }, ptr %a323
|
|
store { ptr, i64, i64 } %t326, ptr %a328
|
|
store { ptr, i64, i64 } { ptr @.str.5303, i64 5, i64 0 }, ptr %a329
|
|
call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329)
|
|
%t330 = load { ptr, i64, i64 }, ptr %a327
|
|
%t331 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } %t330, ptr %a333
|
|
store { ptr, i64, i64 } %t331, ptr %a334
|
|
call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334)
|
|
%t335 = load { ptr, i64, i64 }, ptr %a332
|
|
store { ptr, i64, i64 } %t335, ptr %a337
|
|
store { ptr, i64, i64 } { ptr @.str.5304, i64 6, i64 0 }, ptr %a338
|
|
call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338)
|
|
%t339 = load { ptr, i64, i64 }, ptr %a336
|
|
%t340 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t339, ptr %a342
|
|
store { ptr, i64, i64 } %t340, ptr %a343
|
|
call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343)
|
|
%t344 = load { ptr, i64, i64 }, ptr %a341
|
|
store { ptr, i64, i64 } %t344, ptr %a346
|
|
store { ptr, i64, i64 } { ptr @.str.5305, i64 1, i64 0 }, ptr %a347
|
|
call void @finch_str_concat(ptr %a345, ptr %a346, ptr %a347)
|
|
%t348 = load { ptr, i64, i64 }, ptr %a345
|
|
call void @finch.gen.emit(ptr %t321, { ptr, i64, i64 } %t348)
|
|
%t349 = load ptr, ptr %a1
|
|
%t350 = load { ptr, i64, i64 }, ptr %a12
|
|
%t351 = call { ptr, i64, i64 } @finch.gen.load(ptr %t349, { ptr, i64, i64 } { ptr @.str.5306, i64 17, i64 0 }, { ptr, i64, i64 } %t350)
|
|
%t352 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t351, 0
|
|
%t353 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5307, i64 3, i64 0 })
|
|
%t354 = insertvalue %S.gen.Val %t352, %S.ast.Type %t353, 1
|
|
%t355 = insertvalue %S.gen.Val %t354, i1 true, 2
|
|
ret %S.gen.Val %t355
|
|
endif7826:
|
|
%t356 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t356, ptr %a357
|
|
store { ptr, i64, i64 } { ptr @.str.5308, i64 7, i64 0 }, ptr %a358
|
|
%t359 = call i32 @finch_str_eq(ptr %a357, ptr %a358)
|
|
%t360 = icmp ne i32 %t359, 0
|
|
br i1 %t360, label %then7827, label %endif7829
|
|
then7827:
|
|
%t361 = load ptr, ptr %a1
|
|
%t362 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t361, %S.ast.Node %t362, i64 2)
|
|
%t363 = load ptr, ptr %a1
|
|
%t364 = load ptr, ptr %a1
|
|
%t365 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t366 = load { ptr, i64, i64 }, ptr %t365
|
|
%t367 = extractvalue { ptr, i64, i64 } %t366, 1
|
|
%t368 = icmp uge i64 1, %t367
|
|
br i1 %t368, label %range7830, label %inrange7831
|
|
range7830:
|
|
call void @finch_panic_index(ptr @.str.5309, i64 4836, i64 1, i64 %t367)
|
|
unreachable
|
|
inrange7831:
|
|
%t369 = extractvalue { ptr, i64, i64 } %t366, 0
|
|
%t370 = getelementptr inbounds %S.ast.Node, ptr %t369, i64 1
|
|
%t371 = load %S.ast.Node, ptr %t370
|
|
%t372 = call %S.gen.Val @finch.gen.strArg(ptr %t364, %S.ast.Node %t371, { ptr, i64, i64 } { ptr @.str.5310, i64 19, i64 0 })
|
|
%t373 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t363, %S.gen.Val %t372)
|
|
store { ptr, i64, i64 } %t373, ptr %a374
|
|
%t375 = load ptr, ptr %a1
|
|
%t376 = load ptr, ptr %a1
|
|
%t377 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t378 = load { ptr, i64, i64 }, ptr %t377
|
|
%t379 = extractvalue { ptr, i64, i64 } %t378, 1
|
|
%t380 = icmp uge i64 2, %t379
|
|
br i1 %t380, label %range7832, label %inrange7833
|
|
range7832:
|
|
call void @finch_panic_index(ptr @.str.5311, i64 4837, i64 2, i64 %t379)
|
|
unreachable
|
|
inrange7833:
|
|
%t381 = extractvalue { ptr, i64, i64 } %t378, 0
|
|
%t382 = getelementptr inbounds %S.ast.Node, ptr %t381, i64 2
|
|
%t383 = load %S.ast.Node, ptr %t382
|
|
%t384 = call %S.gen.Val @finch.gen.strArg(ptr %t376, %S.ast.Node %t383, { ptr, i64, i64 } { ptr @.str.5312, i64 12, i64 0 })
|
|
%t385 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t375, %S.gen.Val %t384)
|
|
store { ptr, i64, i64 } %t385, ptr %a386
|
|
%t387 = load ptr, ptr %a1
|
|
%t388 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.5313, i64 33, i64 0 }, ptr %a390
|
|
store { ptr, i64, i64 } %t388, ptr %a391
|
|
call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391)
|
|
%t392 = load { ptr, i64, i64 }, ptr %a389
|
|
store { ptr, i64, i64 } %t392, ptr %a394
|
|
store { ptr, i64, i64 } { ptr @.str.5314, i64 6, i64 0 }, ptr %a395
|
|
call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395)
|
|
%t396 = load { ptr, i64, i64 }, ptr %a393
|
|
%t397 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t396, ptr %a399
|
|
store { ptr, i64, i64 } %t397, ptr %a400
|
|
call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400)
|
|
%t401 = load { ptr, i64, i64 }, ptr %a398
|
|
store { ptr, i64, i64 } %t401, ptr %a403
|
|
store { ptr, i64, i64 } { ptr @.str.5315, i64 6, i64 0 }, ptr %a404
|
|
call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404)
|
|
%t405 = load { ptr, i64, i64 }, ptr %a402
|
|
%t406 = load { ptr, i64, i64 }, ptr %a374
|
|
store { ptr, i64, i64 } %t405, ptr %a408
|
|
store { ptr, i64, i64 } %t406, ptr %a409
|
|
call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409)
|
|
%t410 = load { ptr, i64, i64 }, ptr %a407
|
|
store { ptr, i64, i64 } %t410, ptr %a412
|
|
store { ptr, i64, i64 } { ptr @.str.5316, i64 6, i64 0 }, ptr %a413
|
|
call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413)
|
|
%t414 = load { ptr, i64, i64 }, ptr %a411
|
|
%t415 = load { ptr, i64, i64 }, ptr %a386
|
|
store { ptr, i64, i64 } %t414, ptr %a417
|
|
store { ptr, i64, i64 } %t415, ptr %a418
|
|
call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418)
|
|
%t419 = load { ptr, i64, i64 }, ptr %a416
|
|
store { ptr, i64, i64 } %t419, ptr %a421
|
|
store { ptr, i64, i64 } { ptr @.str.5317, i64 1, i64 0 }, ptr %a422
|
|
call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422)
|
|
%t423 = load { ptr, i64, i64 }, ptr %a420
|
|
call void @finch.gen.emit(ptr %t387, { ptr, i64, i64 } %t423)
|
|
%t424 = load ptr, ptr %a1
|
|
%t425 = load { ptr, i64, i64 }, ptr %a12
|
|
%t426 = call { ptr, i64, i64 } @finch.gen.load(ptr %t424, { ptr, i64, i64 } { ptr @.str.5318, i64 17, i64 0 }, { ptr, i64, i64 } %t425)
|
|
%t427 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t426, 0
|
|
%t428 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5319, i64 3, i64 0 })
|
|
%t429 = insertvalue %S.gen.Val %t427, %S.ast.Type %t428, 1
|
|
%t430 = insertvalue %S.gen.Val %t429, i1 true, 2
|
|
ret %S.gen.Val %t430
|
|
endif7829:
|
|
%t431 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t431, ptr %a432
|
|
store { ptr, i64, i64 } { ptr @.str.5320, i64 5, i64 0 }, ptr %a433
|
|
%t434 = call i32 @finch_str_eq(ptr %a432, ptr %a433)
|
|
%t435 = icmp ne i32 %t434, 0
|
|
br i1 %t435, label %then7834, label %endif7836
|
|
then7834:
|
|
%t436 = load ptr, ptr %a1
|
|
%t437 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t436, %S.ast.Node %t437, i64 1)
|
|
%t438 = load ptr, ptr %a1
|
|
%t439 = load ptr, ptr %a1
|
|
%t440 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t441 = load { ptr, i64, i64 }, ptr %t440
|
|
%t442 = extractvalue { ptr, i64, i64 } %t441, 1
|
|
%t443 = icmp uge i64 1, %t442
|
|
br i1 %t443, label %range7837, label %inrange7838
|
|
range7837:
|
|
call void @finch_panic_index(ptr @.str.5321, i64 4843, i64 1, i64 %t442)
|
|
unreachable
|
|
inrange7838:
|
|
%t444 = extractvalue { ptr, i64, i64 } %t441, 0
|
|
%t445 = getelementptr inbounds %S.ast.Node, ptr %t444, i64 1
|
|
%t446 = load %S.ast.Node, ptr %t445
|
|
%t447 = call %S.gen.Val @finch.gen.strArg(ptr %t439, %S.ast.Node %t446, { ptr, i64, i64 } { ptr @.str.5322, i64 13, i64 0 })
|
|
%t448 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t438, %S.gen.Val %t447)
|
|
store { ptr, i64, i64 } %t448, ptr %a449
|
|
%t450 = load ptr, ptr %a1
|
|
%t451 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t450)
|
|
store { ptr, i64, i64 } %t451, ptr %a452
|
|
%t453 = load ptr, ptr %a1
|
|
%t454 = load { ptr, i64, i64 }, ptr %a452
|
|
store { ptr, i64, i64 } { ptr @.str.5323, i64 31, i64 0 }, ptr %a456
|
|
store { ptr, i64, i64 } %t454, ptr %a457
|
|
call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457)
|
|
%t458 = load { ptr, i64, i64 }, ptr %a455
|
|
store { ptr, i64, i64 } %t458, ptr %a460
|
|
store { ptr, i64, i64 } { ptr @.str.5324, i64 6, i64 0 }, ptr %a461
|
|
call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461)
|
|
%t462 = load { ptr, i64, i64 }, ptr %a459
|
|
%t463 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t462, ptr %a465
|
|
store { ptr, i64, i64 } %t463, ptr %a466
|
|
call void @finch_str_concat(ptr %a464, ptr %a465, ptr %a466)
|
|
%t467 = load { ptr, i64, i64 }, ptr %a464
|
|
store { ptr, i64, i64 } %t467, ptr %a469
|
|
store { ptr, i64, i64 } { ptr @.str.5325, i64 6, i64 0 }, ptr %a470
|
|
call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470)
|
|
%t471 = load { ptr, i64, i64 }, ptr %a468
|
|
%t472 = load { ptr, i64, i64 }, ptr %a449
|
|
store { ptr, i64, i64 } %t471, ptr %a474
|
|
store { ptr, i64, i64 } %t472, ptr %a475
|
|
call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475)
|
|
%t476 = load { ptr, i64, i64 }, ptr %a473
|
|
store { ptr, i64, i64 } %t476, ptr %a478
|
|
store { ptr, i64, i64 } { ptr @.str.5326, i64 1, i64 0 }, ptr %a479
|
|
call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479)
|
|
%t480 = load { ptr, i64, i64 }, ptr %a477
|
|
call void @finch.gen.emit(ptr %t453, { ptr, i64, i64 } %t480)
|
|
%t481 = load ptr, ptr %a1
|
|
%t482 = load { ptr, i64, i64 }, ptr %a452
|
|
%t483 = call { ptr, i64, i64 } @finch.gen.load(ptr %t481, { ptr, i64, i64 } { ptr @.str.5327, i64 17, i64 0 }, { ptr, i64, i64 } %t482)
|
|
%t484 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t483, 0
|
|
%t485 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5328, i64 3, i64 0 })
|
|
%t486 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t485)
|
|
%t487 = insertvalue %S.gen.Val %t484, %S.ast.Type %t486, 1
|
|
%t488 = insertvalue %S.gen.Val %t487, i1 true, 2
|
|
ret %S.gen.Val %t488
|
|
endif7836:
|
|
%t489 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t489, ptr %a490
|
|
store { ptr, i64, i64 } { ptr @.str.5329, i64 6, i64 0 }, ptr %a491
|
|
%t492 = call i32 @finch_str_eq(ptr %a490, ptr %a491)
|
|
%t493 = icmp ne i32 %t492, 0
|
|
br i1 %t493, label %then7839, label %endif7841
|
|
then7839:
|
|
%t494 = load ptr, ptr %a1
|
|
%t495 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t494, %S.ast.Node %t495, i64 1)
|
|
%t496 = load ptr, ptr %a1
|
|
%t497 = load ptr, ptr %a1
|
|
%t498 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t499 = load { ptr, i64, i64 }, ptr %t498
|
|
%t500 = extractvalue { ptr, i64, i64 } %t499, 1
|
|
%t501 = icmp uge i64 1, %t500
|
|
br i1 %t501, label %range7842, label %inrange7843
|
|
range7842:
|
|
call void @finch_panic_index(ptr @.str.5330, i64 4850, i64 1, i64 %t500)
|
|
unreachable
|
|
inrange7843:
|
|
%t502 = extractvalue { ptr, i64, i64 } %t499, 0
|
|
%t503 = getelementptr inbounds %S.ast.Node, ptr %t502, i64 1
|
|
%t504 = load %S.ast.Node, ptr %t503
|
|
%t505 = call %S.gen.Val @finch.gen.expr(ptr %t497, %S.ast.Node %t504)
|
|
%t506 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5331, i64 3, i64 0 })
|
|
%t507 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9
|
|
%t508 = load { ptr, i64, i64 }, ptr %t507
|
|
%t509 = extractvalue { ptr, i64, i64 } %t508, 1
|
|
%t510 = icmp uge i64 1, %t509
|
|
br i1 %t510, label %range7844, label %inrange7845
|
|
range7844:
|
|
call void @finch_panic_index(ptr @.str.5332, i64 4850, i64 1, i64 %t509)
|
|
unreachable
|
|
inrange7845:
|
|
%t511 = extractvalue { ptr, i64, i64 } %t508, 0
|
|
%t512 = getelementptr inbounds %S.ast.Node, ptr %t511, i64 1
|
|
%t513 = load %S.ast.Node, ptr %t512
|
|
%t514 = call %S.gen.Val @finch.gen.coerce(ptr %t496, %S.gen.Val %t505, %S.ast.Type %t506, %S.ast.Node %t513, { ptr, i64, i64 } { ptr @.str.5333, i64 9, i64 0 })
|
|
%t515 = extractvalue %S.gen.Val %t514, 0
|
|
store { ptr, i64, i64 } %t515, ptr %a516
|
|
call void @finch_str_copy(ptr %a517, ptr %a516)
|
|
%t518 = load { ptr, i64, i64 }, ptr %a517
|
|
store { ptr, i64, i64 } %t518, ptr %a519
|
|
%t520 = load ptr, ptr %a1
|
|
%t521 = load { ptr, i64, i64 }, ptr %a12
|
|
store { ptr, i64, i64 } { ptr @.str.5334, i64 32, i64 0 }, ptr %a523
|
|
store { ptr, i64, i64 } %t521, ptr %a524
|
|
call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524)
|
|
%t525 = load { ptr, i64, i64 }, ptr %a522
|
|
store { ptr, i64, i64 } %t525, ptr %a527
|
|
store { ptr, i64, i64 } { ptr @.str.5335, i64 6, i64 0 }, ptr %a528
|
|
call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528)
|
|
%t529 = load { ptr, i64, i64 }, ptr %a526
|
|
%t530 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t529, ptr %a532
|
|
store { ptr, i64, i64 } %t530, ptr %a533
|
|
call void @finch_str_concat(ptr %a531, ptr %a532, ptr %a533)
|
|
%t534 = load { ptr, i64, i64 }, ptr %a531
|
|
store { ptr, i64, i64 } %t534, ptr %a536
|
|
store { ptr, i64, i64 } { ptr @.str.5336, i64 6, i64 0 }, ptr %a537
|
|
call void @finch_str_concat(ptr %a535, ptr %a536, ptr %a537)
|
|
%t538 = load { ptr, i64, i64 }, ptr %a535
|
|
%t539 = load { ptr, i64, i64 }, ptr %a519
|
|
store { ptr, i64, i64 } %t538, ptr %a541
|
|
store { ptr, i64, i64 } %t539, ptr %a542
|
|
call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542)
|
|
%t543 = load { ptr, i64, i64 }, ptr %a540
|
|
store { ptr, i64, i64 } %t543, ptr %a545
|
|
store { ptr, i64, i64 } { ptr @.str.5337, i64 1, i64 0 }, ptr %a546
|
|
call void @finch_str_concat(ptr %a544, ptr %a545, ptr %a546)
|
|
%t547 = load { ptr, i64, i64 }, ptr %a544
|
|
call void @finch.gen.emit(ptr %t520, { ptr, i64, i64 } %t547)
|
|
%t548 = load ptr, ptr %a1
|
|
%t549 = load { ptr, i64, i64 }, ptr %a12
|
|
%t550 = call { ptr, i64, i64 } @finch.gen.load(ptr %t548, { ptr, i64, i64 } { ptr @.str.5338, i64 17, i64 0 }, { ptr, i64, i64 } %t549)
|
|
%t551 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t550, 0
|
|
%t552 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5339, i64 3, i64 0 })
|
|
%t553 = insertvalue %S.gen.Val %t551, %S.ast.Type %t552, 1
|
|
%t554 = insertvalue %S.gen.Val %t553, i1 true, 2
|
|
ret %S.gen.Val %t554
|
|
endif7841:
|
|
%t555 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t555, ptr %a556
|
|
store { ptr, i64, i64 } { ptr @.str.5340, i64 5, i64 0 }, ptr %a557
|
|
%t558 = call i32 @finch_str_eq(ptr %a556, ptr %a557)
|
|
%t559 = icmp ne i32 %t558, 0
|
|
br i1 %t559, label %then7846, label %endif7848
|
|
then7846:
|
|
%t560 = load ptr, ptr %a1
|
|
%t561 = load %S.ast.Node, ptr %a2
|
|
call void @finch.gen.need(ptr %t560, %S.ast.Node %t561, i64 0)
|
|
%t562 = load ptr, ptr %a1
|
|
%t563 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t562)
|
|
store { ptr, i64, i64 } %t563, ptr %a564
|
|
%t565 = load ptr, ptr %a1
|
|
%t566 = load { ptr, i64, i64 }, ptr %a564
|
|
store { ptr, i64, i64 } { ptr @.str.5341, i64 36, i64 0 }, ptr %a568
|
|
store { ptr, i64, i64 } %t566, ptr %a569
|
|
call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569)
|
|
%t570 = load { ptr, i64, i64 }, ptr %a567
|
|
store { ptr, i64, i64 } %t570, ptr %a572
|
|
store { ptr, i64, i64 } { ptr @.str.5342, i64 6, i64 0 }, ptr %a573
|
|
call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573)
|
|
%t574 = load { ptr, i64, i64 }, ptr %a571
|
|
%t575 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t574, ptr %a577
|
|
store { ptr, i64, i64 } %t575, ptr %a578
|
|
call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578)
|
|
%t579 = load { ptr, i64, i64 }, ptr %a576
|
|
store { ptr, i64, i64 } %t579, ptr %a581
|
|
store { ptr, i64, i64 } { ptr @.str.5343, i64 1, i64 0 }, ptr %a582
|
|
call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582)
|
|
%t583 = load { ptr, i64, i64 }, ptr %a580
|
|
call void @finch.gen.emit(ptr %t565, { ptr, i64, i64 } %t583)
|
|
%t584 = load ptr, ptr %a1
|
|
%t585 = load { ptr, i64, i64 }, ptr %a564
|
|
%t586 = call { ptr, i64, i64 } @finch.gen.load(ptr %t584, { ptr, i64, i64 } { ptr @.str.5344, i64 17, i64 0 }, { ptr, i64, i64 } %t585)
|
|
%t587 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t586, 0
|
|
%t588 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5345, i64 2, i64 0 })
|
|
%t589 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t588)
|
|
%t590 = insertvalue %S.gen.Val %t587, %S.ast.Type %t589, 1
|
|
%t591 = insertvalue %S.gen.Val %t590, i1 true, 2
|
|
ret %S.gen.Val %t591
|
|
endif7848:
|
|
%t592 = load ptr, ptr %a1
|
|
%t593 = load %S.ast.Node, ptr %a2
|
|
%t594 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.5346, i64 21, i64 0 }, ptr %a596
|
|
store { ptr, i64, i64 } %t594, ptr %a597
|
|
call void @finch_str_concat(ptr %a595, ptr %a596, ptr %a597)
|
|
%t598 = load { ptr, i64, i64 }, ptr %a595
|
|
store { ptr, i64, i64 } %t598, ptr %a600
|
|
store { ptr, i64, i64 } { ptr @.str.5347, i64 106, i64 0 }, ptr %a601
|
|
call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601)
|
|
%t602 = load { ptr, i64, i64 }, ptr %a599
|
|
call void @finch.gen.fail(ptr %t592, %S.ast.Node %t593, { ptr, i64, i64 } %t602)
|
|
ret %S.gen.Val zeroinitializer
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.runtimeDecls() {
|
|
entry:
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%t1 = mul i64 71, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t2 = call ptr @finch_alloc(i64 %t1)
|
|
%t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.5348, i64 54, i64 0 }, ptr %t3
|
|
%t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.5349, i64 65, i64 0 }, ptr %t4
|
|
%t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.5350, i64 29, i64 0 }, ptr %t5
|
|
%t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3
|
|
store { ptr, i64, i64 } { ptr @.str.5351, i64 38, i64 0 }, ptr %t6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4
|
|
store { ptr, i64, i64 } { ptr @.str.5352, i64 32, i64 0 }, ptr %t7
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5
|
|
store { ptr, i64, i64 } { ptr @.str.5353, i64 45, i64 0 }, ptr %t8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6
|
|
store { ptr, i64, i64 } { ptr @.str.5354, i64 35, i64 0 }, ptr %t9
|
|
%t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7
|
|
store { ptr, i64, i64 } { ptr @.str.5355, i64 36, i64 0 }, ptr %t10
|
|
%t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8
|
|
store { ptr, i64, i64 } { ptr @.str.5356, i64 42, i64 0 }, ptr %t11
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9
|
|
store { ptr, i64, i64 } { ptr @.str.5357, i64 37, i64 0 }, ptr %t12
|
|
%t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10
|
|
store { ptr, i64, i64 } { ptr @.str.5358, i64 38, i64 0 }, ptr %t13
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11
|
|
store { ptr, i64, i64 } { ptr @.str.5359, i64 42, i64 0 }, ptr %t14
|
|
%t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12
|
|
store { ptr, i64, i64 } { ptr @.str.5360, i64 38, i64 0 }, ptr %t15
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13
|
|
store { ptr, i64, i64 } { ptr @.str.5361, i64 37, i64 0 }, ptr %t16
|
|
%t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14
|
|
store { ptr, i64, i64 } { ptr @.str.5362, i64 42, i64 0 }, ptr %t17
|
|
%t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15
|
|
store { ptr, i64, i64 } { ptr @.str.5363, i64 42, i64 0 }, ptr %t18
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16
|
|
store { ptr, i64, i64 } { ptr @.str.5364, i64 34, i64 0 }, ptr %t19
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17
|
|
store { ptr, i64, i64 } { ptr @.str.5365, i64 42, i64 0 }, ptr %t20
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18
|
|
store { ptr, i64, i64 } { ptr @.str.5366, i64 43, i64 0 }, ptr %t21
|
|
%t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19
|
|
store { ptr, i64, i64 } { ptr @.str.5367, i64 47, i64 0 }, ptr %t22
|
|
%t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20
|
|
store { ptr, i64, i64 } { ptr @.str.5368, i64 50, i64 0 }, ptr %t23
|
|
%t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21
|
|
store { ptr, i64, i64 } { ptr @.str.5369, i64 43, i64 0 }, ptr %t24
|
|
%t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22
|
|
store { ptr, i64, i64 } { ptr @.str.5370, i64 44, i64 0 }, ptr %t25
|
|
%t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23
|
|
store { ptr, i64, i64 } { ptr @.str.5371, i64 49, i64 0 }, ptr %t26
|
|
%t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24
|
|
store { ptr, i64, i64 } { ptr @.str.5372, i64 57, i64 0 }, ptr %t27
|
|
%t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25
|
|
store { ptr, i64, i64 } { ptr @.str.5373, i64 37, i64 0 }, ptr %t28
|
|
%t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26
|
|
store { ptr, i64, i64 } { ptr @.str.5374, i64 39, i64 0 }, ptr %t29
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27
|
|
store { ptr, i64, i64 } { ptr @.str.5375, i64 37, i64 0 }, ptr %t30
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28
|
|
store { ptr, i64, i64 } { ptr @.str.5376, i64 38, i64 0 }, ptr %t31
|
|
%t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29
|
|
store { ptr, i64, i64 } { ptr @.str.5377, i64 39, i64 0 }, ptr %t32
|
|
%t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30
|
|
store { ptr, i64, i64 } { ptr @.str.5378, i64 39, i64 0 }, ptr %t33
|
|
%t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31
|
|
store { ptr, i64, i64 } { ptr @.str.5379, i64 51, i64 0 }, ptr %t34
|
|
%t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32
|
|
store { ptr, i64, i64 } { ptr @.str.5380, i64 44, i64 0 }, ptr %t35
|
|
%t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33
|
|
store { ptr, i64, i64 } { ptr @.str.5381, i64 43, i64 0 }, ptr %t36
|
|
%t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34
|
|
store { ptr, i64, i64 } { ptr @.str.5382, i64 45, i64 0 }, ptr %t37
|
|
%t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35
|
|
store { ptr, i64, i64 } { ptr @.str.5383, i64 44, i64 0 }, ptr %t38
|
|
%t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36
|
|
store { ptr, i64, i64 } { ptr @.str.5384, i64 52, i64 0 }, ptr %t39
|
|
%t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37
|
|
store { ptr, i64, i64 } { ptr @.str.5385, i64 57, i64 0 }, ptr %t40
|
|
%t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38
|
|
store { ptr, i64, i64 } { ptr @.str.5386, i64 48, i64 0 }, ptr %t41
|
|
%t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39
|
|
store { ptr, i64, i64 } { ptr @.str.5387, i64 34, i64 0 }, ptr %t42
|
|
%t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40
|
|
store { ptr, i64, i64 } { ptr @.str.5388, i64 48, i64 0 }, ptr %t43
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41
|
|
store { ptr, i64, i64 } { ptr @.str.5389, i64 60, i64 0 }, ptr %t44
|
|
%t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42
|
|
store { ptr, i64, i64 } { ptr @.str.5390, i64 55, i64 0 }, ptr %t45
|
|
%t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43
|
|
store { ptr, i64, i64 } { ptr @.str.5391, i64 46, i64 0 }, ptr %t46
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44
|
|
store { ptr, i64, i64 } { ptr @.str.5392, i64 48, i64 0 }, ptr %t47
|
|
%t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45
|
|
store { ptr, i64, i64 } { ptr @.str.5393, i64 43, i64 0 }, ptr %t48
|
|
%t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46
|
|
store { ptr, i64, i64 } { ptr @.str.5394, i64 45, i64 0 }, ptr %t49
|
|
%t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47
|
|
store { ptr, i64, i64 } { ptr @.str.5395, i64 59, i64 0 }, ptr %t50
|
|
%t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48
|
|
store { ptr, i64, i64 } { ptr @.str.5396, i64 49, i64 0 }, ptr %t51
|
|
%t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49
|
|
store { ptr, i64, i64 } { ptr @.str.5397, i64 39, i64 0 }, ptr %t52
|
|
%t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50
|
|
store { ptr, i64, i64 } { ptr @.str.5398, i64 39, i64 0 }, ptr %t53
|
|
%t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51
|
|
store { ptr, i64, i64 } { ptr @.str.5399, i64 35, i64 0 }, ptr %t54
|
|
%t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52
|
|
store { ptr, i64, i64 } { ptr @.str.5400, i64 35, i64 0 }, ptr %t55
|
|
%t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53
|
|
store { ptr, i64, i64 } { ptr @.str.5401, i64 45, i64 0 }, ptr %t56
|
|
%t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54
|
|
store { ptr, i64, i64 } { ptr @.str.5402, i64 47, i64 0 }, ptr %t57
|
|
%t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55
|
|
store { ptr, i64, i64 } { ptr @.str.5403, i64 47, i64 0 }, ptr %t58
|
|
%t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56
|
|
store { ptr, i64, i64 } { ptr @.str.5404, i64 48, i64 0 }, ptr %t59
|
|
%t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57
|
|
store { ptr, i64, i64 } { ptr @.str.5405, i64 44, i64 0 }, ptr %t60
|
|
%t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58
|
|
store { ptr, i64, i64 } { ptr @.str.5406, i64 37, i64 0 }, ptr %t61
|
|
%t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59
|
|
store { ptr, i64, i64 } { ptr @.str.5407, i64 49, i64 0 }, ptr %t62
|
|
%t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60
|
|
store { ptr, i64, i64 } { ptr @.str.5408, i64 39, i64 0 }, ptr %t63
|
|
%t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61
|
|
store { ptr, i64, i64 } { ptr @.str.5409, i64 29, i64 0 }, ptr %t64
|
|
%t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62
|
|
store { ptr, i64, i64 } { ptr @.str.5410, i64 35, i64 0 }, ptr %t65
|
|
%t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63
|
|
store { ptr, i64, i64 } { ptr @.str.5411, i64 29, i64 0 }, ptr %t66
|
|
%t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64
|
|
store { ptr, i64, i64 } { ptr @.str.5412, i64 24, i64 0 }, ptr %t67
|
|
%t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65
|
|
store { ptr, i64, i64 } { ptr @.str.5413, i64 40, i64 0 }, ptr %t68
|
|
%t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66
|
|
store { ptr, i64, i64 } { ptr @.str.5414, i64 33, i64 0 }, ptr %t69
|
|
%t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67
|
|
store { ptr, i64, i64 } { ptr @.str.5415, i64 34, i64 0 }, ptr %t70
|
|
%t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68
|
|
store { ptr, i64, i64 } { ptr @.str.5416, i64 44, i64 0 }, ptr %t71
|
|
%t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69
|
|
store { ptr, i64, i64 } { ptr @.str.5417, i64 32, i64 0 }, ptr %t72
|
|
%t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70
|
|
store { ptr, i64, i64 } { ptr @.str.5418, i64 23, i64 0 }, ptr %t73
|
|
%t74 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0
|
|
%t75 = insertvalue { ptr, i64, i64 } %t74, i64 71, 1
|
|
%t76 = insertvalue { ptr, i64, i64 } %t75, i64 71, 2
|
|
store { ptr, i64, i64 } %t76, ptr %a77
|
|
%t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a77, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.5419, i64 1, i64 0 }, ptr %a79
|
|
call void @finch_str_join(ptr %a80, ptr %a77, ptr %a79)
|
|
%t81 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t81, ptr %a83
|
|
store { ptr, i64, i64 } { ptr @.str.5420, i64 1, i64 0 }, ptr %a84
|
|
call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84)
|
|
%t85 = load { ptr, i64, i64 }, ptr %a82
|
|
ret { ptr, i64, i64 } %t85
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a20 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store { ptr, i64, i64 } { ptr @.str.5421, i64 52, i64 0 }, ptr %a2
|
|
%t3 = load ptr, ptr %a1
|
|
%t4 = icmp eq ptr %t3, null
|
|
br i1 %t4, label %panic7849, label %ok7850
|
|
panic7849:
|
|
call void @finch_panic(ptr @.str.5422, i64 4945, ptr @.str.5423)
|
|
unreachable
|
|
ok7850:
|
|
%t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 27
|
|
%t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5
|
|
%t7 = load i1, ptr %t6
|
|
br i1 %t7, label %then7851, label %endif7853
|
|
then7851:
|
|
%t8 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t8, ptr %a10
|
|
store { ptr, i64, i64 } { ptr @.str.5424, i64 17, i64 0 }, ptr %a11
|
|
call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11)
|
|
%t12 = load { ptr, i64, i64 }, ptr %a9
|
|
%t13 = load ptr, ptr %a1
|
|
%t14 = icmp eq ptr %t13, null
|
|
br i1 %t14, label %panic7854, label %ok7855
|
|
panic7854:
|
|
call void @finch_panic(ptr @.str.5425, i64 4946, ptr @.str.5426)
|
|
unreachable
|
|
ok7855:
|
|
%t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 27
|
|
%t16 = getelementptr inbounds %S.platform.Target, ptr %t15, i32 0, i32 0
|
|
%t17 = load { ptr, i64, i64 }, ptr %t16
|
|
store { ptr, i64, i64 } %t12, ptr %a19
|
|
store { ptr, i64, i64 } %t17, ptr %a20
|
|
call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a18
|
|
store { ptr, i64, i64 } %t21, ptr %a23
|
|
store { ptr, i64, i64 } { ptr @.str.5427, i64 3, i64 0 }, ptr %a24
|
|
call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24)
|
|
%t25 = load { ptr, i64, i64 }, ptr %a22
|
|
store { ptr, i64, i64 } %t25, ptr %a2
|
|
br label %endif7853
|
|
endif7853:
|
|
%t26 = load { ptr, i64, i64 }, ptr %a2
|
|
%t27 = load ptr, ptr %a1
|
|
%t28 = icmp eq ptr %t27, null
|
|
br i1 %t28, label %panic7856, label %ok7857
|
|
panic7856:
|
|
call void @finch_panic(ptr @.str.5428, i64 4948, ptr @.str.5429)
|
|
unreachable
|
|
ok7857:
|
|
%t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 2
|
|
%t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.5430, i64 1, i64 0 }, ptr %a31
|
|
call void @finch_str_join(ptr %a32, ptr %t29, ptr %a31)
|
|
%t33 = load { ptr, i64, i64 }, ptr %a32
|
|
store { ptr, i64, i64 } %t26, ptr %a35
|
|
store { ptr, i64, i64 } %t33, ptr %a36
|
|
call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a34
|
|
store { ptr, i64, i64 } %t37, ptr %a39
|
|
store { ptr, i64, i64 } { ptr @.str.5431, i64 2, i64 0 }, ptr %a40
|
|
call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a38
|
|
%t42 = call { ptr, i64, i64 } @finch.gen.runtimeDecls()
|
|
store { ptr, i64, i64 } %t41, ptr %a44
|
|
store { ptr, i64, i64 } %t42, ptr %a45
|
|
call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45)
|
|
%t46 = load { ptr, i64, i64 }, ptr %a43
|
|
store { ptr, i64, i64 } %t46, ptr %a48
|
|
store { ptr, i64, i64 } { ptr @.str.5432, i64 1, i64 0 }, ptr %a49
|
|
call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49)
|
|
%t50 = load { ptr, i64, i64 }, ptr %a47
|
|
store { ptr, i64, i64 } %t50, ptr %a2
|
|
%t51 = load ptr, ptr %a1
|
|
%t52 = icmp eq ptr %t51, null
|
|
br i1 %t52, label %panic7858, label %ok7859
|
|
panic7858:
|
|
call void @finch_panic(ptr @.str.5433, i64 4949, ptr @.str.5434)
|
|
unreachable
|
|
ok7859:
|
|
%t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 26
|
|
%t54 = load i1, ptr %t53
|
|
br i1 %t54, label %then7860, label %endif7862
|
|
then7860:
|
|
%t55 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t55, ptr %a57
|
|
store { ptr, i64, i64 } { ptr @.str.5435, i64 62, i64 0 }, ptr %a58
|
|
call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58)
|
|
%t59 = load { ptr, i64, i64 }, ptr %a56
|
|
store { ptr, i64, i64 } %t59, ptr %a2
|
|
br label %endif7862
|
|
endif7862:
|
|
%t60 = load { ptr, i64, i64 }, ptr %a2
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = icmp eq ptr %t61, null
|
|
br i1 %t62, label %panic7863, label %ok7864
|
|
panic7863:
|
|
call void @finch_panic(ptr @.str.5436, i64 4952, ptr @.str.5437)
|
|
unreachable
|
|
ok7864:
|
|
%t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 3
|
|
%t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.5438, i64 1, i64 0 }, ptr %a65
|
|
call void @finch_str_join(ptr %a66, ptr %t63, ptr %a65)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a66
|
|
store { ptr, i64, i64 } %t60, ptr %a69
|
|
store { ptr, i64, i64 } %t67, ptr %a70
|
|
call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70)
|
|
%t71 = load { ptr, i64, i64 }, ptr %a68
|
|
store { ptr, i64, i64 } %t71, ptr %a2
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = icmp eq ptr %t72, null
|
|
br i1 %t73, label %panic7865, label %ok7866
|
|
panic7865:
|
|
call void @finch_panic(ptr @.str.5439, i64 4953, ptr @.str.5440)
|
|
unreachable
|
|
ok7866:
|
|
%t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 26
|
|
%t75 = load i1, ptr %t74
|
|
br i1 %t75, label %then7867, label %endif7869
|
|
then7867:
|
|
%t76 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t76, ptr %a78
|
|
store { ptr, i64, i64 } { ptr @.str.5441, i64 1, i64 0 }, ptr %a79
|
|
call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79)
|
|
%t80 = load { ptr, i64, i64 }, ptr %a77
|
|
%t81 = load ptr, ptr %a1
|
|
%t82 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %t81)
|
|
store { ptr, i64, i64 } %t80, ptr %a84
|
|
store { ptr, i64, i64 } %t82, ptr %a85
|
|
call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85)
|
|
%t86 = load { ptr, i64, i64 }, ptr %a83
|
|
store { ptr, i64, i64 } %t86, ptr %a2
|
|
br label %endif7869
|
|
endif7869:
|
|
%t87 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
call void @finch_str_copy(ptr %a89, ptr %a88)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a89
|
|
ret { ptr, i64, i64 } %t90
|
|
}
|
|
|
|
define internal void @finch.copy.arr_S_ast_Program(ptr %dst, ptr %src) {
|
|
entry:
|
|
%a5 = alloca i64, align 16
|
|
call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64))
|
|
%t1 = load ptr, ptr %dst
|
|
%t2 = load ptr, ptr %src
|
|
%t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1
|
|
%t4 = load i64, ptr %t3
|
|
store i64 0, ptr %a5
|
|
br label %n.cond7870
|
|
n.cond7870:
|
|
%t6 = load i64, ptr %a5
|
|
%t7 = icmp slt i64 %t6, %t4
|
|
br i1 %t7, label %n.body7871, label %n.end7872
|
|
n.body7871:
|
|
%t8 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t6
|
|
%t9 = getelementptr inbounds %S.ast.Program, ptr %t2, i64 %t6
|
|
call void @finch.copy.S_ast_Program(ptr %t8, ptr %t9)
|
|
%t10 = load i64, ptr %a5
|
|
%t11 = add i64 %t10, 1
|
|
store i64 %t11, ptr %a5
|
|
br label %n.cond7870
|
|
n.end7872:
|
|
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.cond7873
|
|
n.cond7873:
|
|
%t4 = load i64, ptr %a3
|
|
%t5 = icmp slt i64 %t4, %t2
|
|
br i1 %t5, label %n.body7874, label %n.end7875
|
|
n.body7874:
|
|
%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.live7876, label %entry.next7877
|
|
entry.live7876:
|
|
%t15 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t11, i32 0, i32 1
|
|
%t16 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t15, ptr %t16)
|
|
%t17 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t11, i32 0, i32 2
|
|
%t18 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2
|
|
call void @finch.copy.S_cimport_CFunc(ptr %t17, ptr %t18)
|
|
br label %entry.next7877
|
|
entry.next7877:
|
|
%t19 = load i64, ptr %a3
|
|
%t20 = add i64 %t19, 1
|
|
store i64 %t20, ptr %a3
|
|
br label %n.cond7873
|
|
n.end7875:
|
|
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.cond7878
|
|
n.cond7878:
|
|
%t4 = load i64, ptr %a3
|
|
%t5 = icmp slt i64 %t4, %t2
|
|
br i1 %t5, label %n.body7879, label %n.end7880
|
|
n.body7879:
|
|
%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.live7881, label %entry.next7882
|
|
entry.live7881:
|
|
%t15 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t11, i32 0, i32 1
|
|
%t16 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t15, ptr %t16)
|
|
%t17 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t11, i32 0, i32 2
|
|
%t18 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2
|
|
call void @finch.copy.S_cimport_CConst(ptr %t17, ptr %t18)
|
|
br label %entry.next7882
|
|
entry.next7882:
|
|
%t19 = load i64, ptr %a3
|
|
%t20 = add i64 %t19, 1
|
|
store i64 %t20, ptr %a3
|
|
br label %n.cond7878
|
|
n.end7880:
|
|
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.cond7883
|
|
n.cond7883:
|
|
%t4 = load i64, ptr %a3
|
|
%t5 = icmp slt i64 %t4, %t2
|
|
br i1 %t5, label %n.body7884, label %n.end7885
|
|
n.body7884:
|
|
%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.live7886, label %entry.next7887
|
|
entry.live7886:
|
|
%t15 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t11, i32 0, i32 1
|
|
%t16 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t15, ptr %t16)
|
|
%t17 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t11, i32 0, i32 2
|
|
%t18 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2
|
|
call void @finch.copy.S_ast_Type(ptr %t17, ptr %t18)
|
|
br label %entry.next7887
|
|
entry.next7887:
|
|
%t19 = load i64, ptr %a3
|
|
%t20 = add i64 %t19, 1
|
|
store i64 %t20, ptr %a3
|
|
br label %n.cond7883
|
|
n.end7885:
|
|
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.cond7888
|
|
n.cond7888:
|
|
%t4 = load i64, ptr %a3
|
|
%t5 = icmp slt i64 %t4, %t2
|
|
br i1 %t5, label %n.body7889, label %n.end7890
|
|
n.body7889:
|
|
%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.live7891, label %entry.next7892
|
|
entry.live7891:
|
|
%t15 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t11, i32 0, i32 1
|
|
%t16 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t15, ptr %t16)
|
|
%t17 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t11, i32 0, i32 2
|
|
%t18 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2
|
|
call void @finch.copy.S_cimport_CStruct(ptr %t17, ptr %t18)
|
|
br label %entry.next7892
|
|
entry.next7892:
|
|
%t19 = load i64, ptr %a3
|
|
%t20 = add i64 %t19, 1
|
|
store i64 %t20, ptr %a3
|
|
br label %n.cond7888
|
|
n.end7890:
|
|
ret void
|
|
}
|
|
|
|
define internal void @finch.copy.S_cimport_CImports(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.cimport.CImports, ptr %src
|
|
store %S.cimport.CImports %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 0
|
|
call void @finch.copy.map_str_S_cimport_CFunc(ptr %t2, ptr %t3)
|
|
%t4 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 1
|
|
%t5 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 1
|
|
call void @finch.copy.map_str_S_cimport_CConst(ptr %t4, ptr %t5)
|
|
%t6 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 2
|
|
%t7 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 2
|
|
call void @finch.copy.map_str_S_ast_Type(ptr %t6, ptr %t7)
|
|
%t8 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 3
|
|
%t9 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 3
|
|
call void @finch.copy.map_str_S_cimport_CStruct(ptr %t8, ptr %t9)
|
|
%t10 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 4
|
|
%t11 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 4
|
|
call void @finch.copy.arr_str(ptr %t10, ptr %t11)
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, %S.cimport.CImports %p2, %S.gen.Options %p3) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca %S.cimport.CImports, align 16
|
|
%a4 = alloca %S.gen.Options, align 16
|
|
%a7 = alloca i1, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca %S.cimport.CImports, align 16
|
|
%a20 = alloca %S.cimport.CImports, align 16
|
|
%a31 = alloca %S.platform.Target, align 16
|
|
%a32 = alloca %S.platform.Target, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca %S.gen.Gen, align 16
|
|
%a43 = alloca ptr, align 16
|
|
%a72 = alloca i64, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%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
|
|
%a144 = alloca i64, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca i64, align 16
|
|
%a222 = alloca i64, align 16
|
|
%a230 = alloca %S.gen.FnSig, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a252 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a274 = alloca %S.gen.FnSig, align 16
|
|
%a275 = alloca %S.gen.FnSig, align 16
|
|
%a277 = alloca %S.gen.FnSig, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a286 = alloca { ptr, i64, i64 }, align 16
|
|
%a287 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a295 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca { ptr, i64, i64 }, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca { ptr, i64, i64 }, align 16
|
|
%a308 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a319 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a330 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a333 = alloca { ptr, i64, i64 }, align 16
|
|
%a334 = alloca { ptr, i64, i64 }, align 16
|
|
%a335 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a344 = alloca { ptr, i64, i64 }, align 16
|
|
%a347 = alloca { ptr, i64, i64 }, align 16
|
|
%a348 = alloca { ptr, i64, i64 }, align 16
|
|
%a349 = alloca { ptr, i64, i64 }, align 16
|
|
%a351 = alloca { ptr, i64, i64 }, align 16
|
|
%a352 = alloca { ptr, i64, i64 }, align 16
|
|
%a353 = alloca { ptr, i64, i64 }, align 16
|
|
%a356 = alloca { ptr, i64, i64 }, align 16
|
|
%a357 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = 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
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a372 = alloca { ptr, i64, i64 }, align 16
|
|
%a377 = alloca { ptr, i64, i64 }, align 16
|
|
%a378 = 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
|
|
%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
|
|
%a407 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a411 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a416 = alloca { ptr, i64, i64 }, align 16
|
|
%a417 = alloca { ptr, i64, i64 }, align 16
|
|
%a418 = alloca { ptr, i64, i64 }, align 16
|
|
%a420 = alloca { ptr, i64, i64 }, align 16
|
|
%a421 = alloca { ptr, i64, i64 }, align 16
|
|
%a422 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a431 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store %S.cimport.CImports %p2, ptr %a3
|
|
store %S.gen.Options %p3, ptr %a4
|
|
%t5 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 0
|
|
%t6 = load i1, ptr %t5
|
|
store i1 %t6, ptr %a7
|
|
%t8 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
call void @finch.copy.arr_S_ast_Program(ptr %a10, ptr %a9)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a10
|
|
%t12 = insertvalue %S.gen.Gen zeroinitializer, { ptr, i64, i64 } %t11, 0
|
|
%t13 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t13, ptr %a14
|
|
call void @finch.copy.arr_str(ptr %a15, ptr %a14)
|
|
%t16 = load { ptr, i64, i64 }, ptr %a15
|
|
%t17 = insertvalue %S.gen.Gen %t12, { ptr, i64, i64 } %t16, 1
|
|
%t18 = load %S.cimport.CImports, ptr %a3
|
|
store %S.cimport.CImports %t18, ptr %a19
|
|
call void @finch.copy.S_cimport_CImports(ptr %a20, ptr %a19)
|
|
%t21 = load %S.cimport.CImports, ptr %a20
|
|
%t22 = insertvalue %S.gen.Gen %t17, %S.cimport.CImports %t21, 24
|
|
%t23 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 0
|
|
%t24 = load i1, ptr %t23
|
|
%t25 = insertvalue %S.gen.Gen %t22, i1 %t24, 25
|
|
%t26 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 1
|
|
%t27 = load i1, ptr %t26
|
|
%t28 = insertvalue %S.gen.Gen %t25, i1 %t27, 26
|
|
%t29 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 3
|
|
%t30 = load %S.platform.Target, ptr %t29
|
|
store %S.platform.Target %t30, ptr %a31
|
|
call void @finch.copy.S_platform_Target(ptr %a32, ptr %a31)
|
|
%t33 = load %S.platform.Target, ptr %a32
|
|
%t34 = insertvalue %S.gen.Gen %t28, %S.platform.Target %t33, 27
|
|
%t35 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 2
|
|
%t36 = load { ptr, i64, i64 }, ptr %t35
|
|
store { ptr, i64, i64 } %t36, ptr %a37
|
|
call void @finch_str_copy(ptr %a38, ptr %a37)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a38
|
|
%t40 = insertvalue %S.gen.Gen %t34, { ptr, i64, i64 } %t39, 28
|
|
%t41 = insertvalue %S.gen.Gen %t40, i64 -1, 32
|
|
store %S.gen.Gen %t41, ptr %a42
|
|
store ptr %a42, ptr %a43
|
|
%t44 = load ptr, ptr %a43
|
|
%t45 = icmp eq ptr %t44, null
|
|
br i1 %t45, label %panic7893, label %ok7894
|
|
panic7893:
|
|
call void @finch_panic(ptr @.str.5442, i64 4963, ptr @.str.5443)
|
|
unreachable
|
|
ok7894:
|
|
%t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 26
|
|
%t47 = load i1, ptr %t46
|
|
br i1 %t47, label %then7895, label %endif7897
|
|
then7895:
|
|
%t48 = load ptr, ptr %a43
|
|
%t49 = icmp eq ptr %t48, null
|
|
br i1 %t49, label %panic7898, label %ok7899
|
|
panic7898:
|
|
call void @finch_panic(ptr @.str.5444, i64 4965, ptr @.str.5445)
|
|
unreachable
|
|
ok7899:
|
|
%t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 29
|
|
%t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i32 0, i32 1
|
|
%t52 = load i64, ptr %t51
|
|
%t53 = add i64 %t52, 1
|
|
call void @finch_arr_reserve(ptr %t50, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t54 = load ptr, ptr %t50
|
|
%t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52
|
|
store { ptr, i64, i64 } { ptr @.str.5446, i64 0, i64 0 }, ptr %t55
|
|
store i64 %t53, ptr %t51
|
|
%t56 = load ptr, ptr %a43
|
|
%t57 = icmp eq ptr %t56, null
|
|
br i1 %t57, label %panic7900, label %ok7901
|
|
panic7900:
|
|
call void @finch_panic(ptr @.str.5447, i64 4966, ptr @.str.5448)
|
|
unreachable
|
|
ok7901:
|
|
%t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 29
|
|
%t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i32 0, i32 1
|
|
%t60 = load i64, ptr %t59
|
|
%t61 = add i64 %t60, 1
|
|
call void @finch_arr_reserve(ptr %t58, i64 %t61, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t62 = load ptr, ptr %t58
|
|
%t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i64 %t60
|
|
store { ptr, i64, i64 } { ptr @.str.5449, i64 33, i64 0 }, ptr %t63
|
|
store i64 %t61, ptr %t59
|
|
%t64 = load ptr, ptr %a43
|
|
%t65 = icmp eq ptr %t64, null
|
|
br i1 %t65, label %panic7902, label %ok7903
|
|
panic7902:
|
|
call void @finch_panic(ptr @.str.5450, i64 4967, ptr @.str.5451)
|
|
unreachable
|
|
ok7903:
|
|
%t66 = getelementptr inbounds %S.gen.Gen, ptr %t64, i32 0, i32 29
|
|
%t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1
|
|
%t68 = load i64, ptr %t67
|
|
%t69 = add i64 %t68, 1
|
|
call void @finch_arr_reserve(ptr %t66, i64 %t69, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t70 = load ptr, ptr %t66
|
|
%t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t68
|
|
store { ptr, i64, i64 } { ptr @.str.5452, i64 38, i64 0 }, ptr %t71
|
|
store i64 %t69, ptr %t67
|
|
store i64 0, ptr %a72
|
|
br label %each.cond7904
|
|
each.cond7904:
|
|
%t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
%t74 = load i64, ptr %t73
|
|
%t75 = load i64, ptr %a72
|
|
%t76 = icmp slt i64 %t75, %t74
|
|
br i1 %t76, label %each.body7905, label %each.end7907
|
|
each.body7905:
|
|
%t77 = load ptr, ptr %a2
|
|
%t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i64 %t75
|
|
%t79 = load { ptr, i64, i64 }, ptr %t78
|
|
store { ptr, i64, i64 } %t79, ptr %a80
|
|
%t81 = load ptr, ptr %a43
|
|
%t82 = icmp eq ptr %t81, null
|
|
br i1 %t82, label %panic7908, label %ok7909
|
|
panic7908:
|
|
call void @finch_panic(ptr @.str.5453, i64 4969, ptr @.str.5454)
|
|
unreachable
|
|
ok7909:
|
|
%t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 31
|
|
%t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1
|
|
%t85 = load ptr, ptr %a43
|
|
%t86 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } { ptr @.str.5455, i64 19, i64 0 }, ptr %a88
|
|
store { ptr, i64, i64 } %t86, ptr %a89
|
|
call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a87
|
|
store { ptr, i64, i64 } %t90, ptr %a92
|
|
store { ptr, i64, i64 } { ptr @.str.5456, i64 15, i64 0 }, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
%t95 = load ptr, ptr %a43
|
|
%t96 = icmp eq ptr %t95, null
|
|
br i1 %t96, label %panic7910, label %ok7911
|
|
panic7910:
|
|
call void @finch_panic(ptr @.str.5457, i64 4969, ptr @.str.5458)
|
|
unreachable
|
|
ok7911:
|
|
%t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 28
|
|
%t98 = load { ptr, i64, i64 }, ptr %t97
|
|
store { ptr, i64, i64 } %t94, ptr %a100
|
|
store { ptr, i64, i64 } %t98, ptr %a101
|
|
call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a99
|
|
store { ptr, i64, i64 } %t102, ptr %a104
|
|
store { ptr, i64, i64 } { ptr @.str.5459, i64 2, i64 0 }, ptr %a105
|
|
call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105)
|
|
%t106 = load { ptr, i64, i64 }, ptr %a103
|
|
%t107 = call i64 @finch.gen.md(ptr %t85, { ptr, i64, i64 } %t106)
|
|
%t108 = load i64, ptr %t84
|
|
%t109 = add i64 %t108, 1
|
|
call void @finch_arr_reserve(ptr %t83, i64 %t109, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64))
|
|
%t110 = load ptr, ptr %t83
|
|
%t111 = getelementptr inbounds i64, ptr %t110, i64 %t108
|
|
store i64 %t107, ptr %t111
|
|
store i64 %t109, ptr %t84
|
|
br label %each.step7906
|
|
each.step7906:
|
|
%t112 = load i64, ptr %a72
|
|
%t113 = add i64 %t112, 1
|
|
store i64 %t113, ptr %a72
|
|
br label %each.cond7904
|
|
each.end7907:
|
|
%t114 = load ptr, ptr %a43
|
|
%t115 = icmp eq ptr %t114, null
|
|
br i1 %t115, label %panic7912, label %ok7913
|
|
panic7912:
|
|
call void @finch_panic(ptr @.str.5461, i64 4971, ptr @.str.5462)
|
|
unreachable
|
|
ok7913:
|
|
%t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 31
|
|
%t117 = load { ptr, i64, i64 }, ptr %t116
|
|
%t118 = extractvalue { ptr, i64, i64 } %t117, 1
|
|
%t119 = icmp uge i64 0, %t118
|
|
br i1 %t119, label %range7914, label %inrange7915
|
|
range7914:
|
|
call void @finch_panic_index(ptr @.str.5463, i64 4971, i64 0, i64 %t118)
|
|
unreachable
|
|
inrange7915:
|
|
%t120 = extractvalue { ptr, i64, i64 } %t117, 0
|
|
%t121 = getelementptr inbounds i64, ptr %t120, i64 0
|
|
%t122 = load i64, ptr %t121
|
|
call void @finch_str_from_int(ptr %a123, i64 %t122)
|
|
%t124 = load { ptr, i64, i64 }, ptr %a123
|
|
store { ptr, i64, i64 } { ptr @.str.5460, i64 52, i64 0 }, ptr %a126
|
|
store { ptr, i64, i64 } %t124, ptr %a127
|
|
call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127)
|
|
%t128 = load { ptr, i64, i64 }, ptr %a125
|
|
store { ptr, i64, i64 } %t128, ptr %a130
|
|
store { ptr, i64, i64 } { ptr @.str.5464, i64 84, i64 0 }, ptr %a131
|
|
call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131)
|
|
%t132 = load { ptr, i64, i64 }, ptr %a129
|
|
%t133 = load ptr, ptr %a43
|
|
%t134 = icmp eq ptr %t133, null
|
|
br i1 %t134, label %panic7916, label %ok7917
|
|
panic7916:
|
|
call void @finch_panic(ptr @.str.5465, i64 4971, ptr @.str.5466)
|
|
unreachable
|
|
ok7917:
|
|
%t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 29
|
|
%t136 = load { ptr, i64, i64 }, ptr %t135
|
|
%t137 = extractvalue { ptr, i64, i64 } %t136, 1
|
|
%t138 = icmp uge i64 0, %t137
|
|
br i1 %t138, label %range7918, label %inrange7919
|
|
range7918:
|
|
call void @finch_panic_index(ptr @.str.5467, i64 4971, i64 0, i64 %t137)
|
|
unreachable
|
|
inrange7919:
|
|
%t139 = extractvalue { ptr, i64, i64 } %t136, 0
|
|
%t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t139, i64 0
|
|
store { ptr, i64, i64 } %t132, ptr %t140
|
|
br label %endif7897
|
|
endif7897:
|
|
%t141 = load ptr, ptr %a43
|
|
call void @finch.gen.declare(ptr %t141)
|
|
%t142 = load ptr, ptr %a43
|
|
%t143 = call i64 @finch.gen.findFn(ptr %t142, { ptr, i64, i64 } { ptr @.str.5468, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5469, i64 4, i64 0 })
|
|
store i64 %t143, ptr %a144
|
|
%t145 = load i1, ptr %a7
|
|
br i1 %t145, label %then7920, label %else7921
|
|
then7920:
|
|
%t146 = load i64, ptr %a144
|
|
%t147 = icmp sge i64 %t146, 0
|
|
br i1 %t147, label %then7923, label %endif7925
|
|
then7923:
|
|
%t148 = load ptr, ptr %a43
|
|
%t149 = load ptr, ptr %a43
|
|
%t150 = icmp eq ptr %t149, null
|
|
br i1 %t150, label %panic7926, label %ok7927
|
|
panic7926:
|
|
call void @finch_panic(ptr @.str.5470, i64 4977, ptr @.str.5471)
|
|
unreachable
|
|
ok7927:
|
|
%t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 0
|
|
%t152 = load ptr, ptr %a43
|
|
%t153 = icmp eq ptr %t152, null
|
|
br i1 %t153, label %panic7928, label %ok7929
|
|
panic7928:
|
|
call void @finch_panic(ptr @.str.5472, i64 4977, ptr @.str.5473)
|
|
unreachable
|
|
ok7929:
|
|
%t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 14
|
|
%t155 = load i64, ptr %a144
|
|
%t156 = load { ptr, i64, i64 }, ptr %t154
|
|
%t157 = extractvalue { ptr, i64, i64 } %t156, 1
|
|
%t158 = icmp uge i64 %t155, %t157
|
|
br i1 %t158, label %range7930, label %inrange7931
|
|
range7930:
|
|
call void @finch_panic_index(ptr @.str.5474, i64 4977, i64 %t155, i64 %t157)
|
|
unreachable
|
|
inrange7931:
|
|
%t159 = extractvalue { ptr, i64, i64 } %t156, 0
|
|
%t160 = getelementptr inbounds %S.gen.FnSig, ptr %t159, i64 %t155
|
|
%t161 = getelementptr inbounds %S.gen.FnSig, ptr %t160, i32 0, i32 16
|
|
%t162 = load i64, ptr %t161
|
|
%t163 = load { ptr, i64, i64 }, ptr %t151
|
|
%t164 = extractvalue { ptr, i64, i64 } %t163, 1
|
|
%t165 = icmp uge i64 %t162, %t164
|
|
br i1 %t165, label %range7932, label %inrange7933
|
|
range7932:
|
|
call void @finch_panic_index(ptr @.str.5475, i64 4977, i64 %t162, i64 %t164)
|
|
unreachable
|
|
inrange7933:
|
|
%t166 = extractvalue { ptr, i64, i64 } %t163, 0
|
|
%t167 = getelementptr inbounds %S.ast.Program, ptr %t166, i64 %t162
|
|
%t168 = getelementptr inbounds %S.ast.Program, ptr %t167, i32 0, i32 8
|
|
%t169 = load ptr, ptr %a43
|
|
%t170 = icmp eq ptr %t169, null
|
|
br i1 %t170, label %panic7934, label %ok7935
|
|
panic7934:
|
|
call void @finch_panic(ptr @.str.5476, i64 4977, ptr @.str.5477)
|
|
unreachable
|
|
ok7935:
|
|
%t171 = getelementptr inbounds %S.gen.Gen, ptr %t169, i32 0, i32 14
|
|
%t172 = load i64, ptr %a144
|
|
%t173 = load { ptr, i64, i64 }, ptr %t171
|
|
%t174 = extractvalue { ptr, i64, i64 } %t173, 1
|
|
%t175 = icmp uge i64 %t172, %t174
|
|
br i1 %t175, label %range7936, label %inrange7937
|
|
range7936:
|
|
call void @finch_panic_index(ptr @.str.5478, i64 4977, i64 %t172, i64 %t174)
|
|
unreachable
|
|
inrange7937:
|
|
%t176 = extractvalue { ptr, i64, i64 } %t173, 0
|
|
%t177 = getelementptr inbounds %S.gen.FnSig, ptr %t176, i64 %t172
|
|
%t178 = getelementptr inbounds %S.gen.FnSig, ptr %t177, i32 0, i32 17
|
|
%t179 = load i64, ptr %t178
|
|
%t180 = load { ptr, i64, i64 }, ptr %t168
|
|
%t181 = extractvalue { ptr, i64, i64 } %t180, 1
|
|
%t182 = icmp uge i64 %t179, %t181
|
|
br i1 %t182, label %range7938, label %inrange7939
|
|
range7938:
|
|
call void @finch_panic_index(ptr @.str.5479, i64 4977, i64 %t179, i64 %t181)
|
|
unreachable
|
|
inrange7939:
|
|
%t183 = extractvalue { ptr, i64, i64 } %t180, 0
|
|
%t184 = getelementptr inbounds %S.ast.Node, ptr %t183, i64 %t179
|
|
%t185 = load %S.ast.Node, ptr %t184
|
|
call void @finch.gen.fail(ptr %t148, %S.ast.Node %t185, { ptr, i64, i64 } { ptr @.str.5480, i64 82, i64 0 })
|
|
br label %endif7925
|
|
endif7925:
|
|
br label %endif7922
|
|
else7921:
|
|
%t186 = load i64, ptr %a144
|
|
%t187 = icmp slt i64 %t186, 0
|
|
br i1 %t187, label %then7940, label %endif7942
|
|
then7940:
|
|
%t188 = load { ptr, i64, i64 }, ptr %a2
|
|
%t189 = extractvalue { ptr, i64, i64 } %t188, 1
|
|
%t190 = icmp uge i64 0, %t189
|
|
br i1 %t190, label %range7943, label %inrange7944
|
|
range7943:
|
|
call void @finch_panic_index(ptr @.str.5481, i64 4980, i64 0, i64 %t189)
|
|
unreachable
|
|
inrange7944:
|
|
%t191 = extractvalue { ptr, i64, i64 } %t188, 0
|
|
%t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t191, i64 0
|
|
%t193 = load { ptr, i64, i64 }, ptr %t192
|
|
store { ptr, i64, i64 } %t193, ptr %a195
|
|
store { ptr, i64, i64 } { ptr @.str.5482, i64 64, i64 0 }, ptr %a196
|
|
call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196)
|
|
%t197 = load { ptr, i64, i64 }, ptr %a194
|
|
%t198 = extractvalue { ptr, i64, i64 } %t197, 1
|
|
%t199 = trunc i64 %t198 to i32
|
|
%t200 = extractvalue { ptr, i64, i64 } %t197, 0
|
|
%t201 = icmp eq ptr %t200, null
|
|
%t202 = select i1 %t201, ptr @.str.5483, ptr %t200
|
|
%t203 = call i32 (ptr, ...) @printf(ptr @.str.5484, i32 %t199, ptr %t202)
|
|
%t204 = call i32 (ptr, ...) @printf(ptr @.str.5485)
|
|
%t205 = trunc i64 1 to i32
|
|
%t206 = call i32 @fflush(ptr null)
|
|
call void @exit(i32 %t205)
|
|
br label %endif7942
|
|
endif7942:
|
|
br label %endif7922
|
|
endif7922:
|
|
store i64 0, ptr %a207
|
|
br label %while.cond7945
|
|
while.cond7945:
|
|
%t208 = load i64, ptr %a207
|
|
%t209 = load ptr, ptr %a43
|
|
%t210 = icmp eq ptr %t209, null
|
|
br i1 %t210, label %panic7948, label %ok7949
|
|
panic7948:
|
|
call void @finch_panic(ptr @.str.5486, i64 4985, ptr @.str.5487)
|
|
unreachable
|
|
ok7949:
|
|
%t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 14
|
|
%t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t211, i32 0, i32 1
|
|
%t213 = load i64, ptr %t212
|
|
%t214 = icmp slt i64 %t208, %t213
|
|
br i1 %t214, label %while.body7946, label %while.end7947
|
|
while.body7946:
|
|
%t215 = load ptr, ptr %a43
|
|
%t216 = load i64, ptr %a207
|
|
call void @finch.gen.define(ptr %t215, i64 %t216)
|
|
%t217 = load i64, ptr %a207
|
|
%t218 = add i64 %t217, 1
|
|
store i64 %t218, ptr %a207
|
|
br label %while.cond7945
|
|
while.end7947:
|
|
%t219 = load ptr, ptr %a43
|
|
%t220 = icmp eq ptr %t219, null
|
|
br i1 %t220, label %panic7950, label %ok7951
|
|
panic7950:
|
|
call void @finch_panic(ptr @.str.5488, i64 4989, ptr @.str.5489)
|
|
unreachable
|
|
ok7951:
|
|
%t221 = getelementptr inbounds %S.gen.Gen, ptr %t219, i32 0, i32 14
|
|
store i64 0, ptr %a222
|
|
br label %each.cond7952
|
|
each.cond7952:
|
|
%t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t221, i32 0, i32 1
|
|
%t224 = load i64, ptr %t223
|
|
%t225 = load i64, ptr %a222
|
|
%t226 = icmp slt i64 %t225, %t224
|
|
br i1 %t226, label %each.body7953, label %each.end7955
|
|
each.body7953:
|
|
%t227 = load ptr, ptr %t221
|
|
%t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i64 %t225
|
|
%t229 = load %S.gen.FnSig, ptr %t228
|
|
store %S.gen.FnSig %t229, ptr %a230
|
|
%t231 = getelementptr inbounds %S.gen.FnSig, ptr %a230, i32 0, i32 5
|
|
%t232 = load i1, ptr %t231
|
|
br i1 %t232, label %then7956, label %endif7958
|
|
then7956:
|
|
%t233 = load ptr, ptr %a43
|
|
%t234 = load %S.gen.FnSig, ptr %a230
|
|
%t235 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t233, %S.gen.FnSig %t234)
|
|
br label %endif7958
|
|
endif7958:
|
|
br label %each.step7954
|
|
each.step7954:
|
|
%t236 = load i64, ptr %a222
|
|
%t237 = add i64 %t236, 1
|
|
store i64 %t237, ptr %a222
|
|
br label %each.cond7952
|
|
each.end7955:
|
|
%t238 = load i1, ptr %a7
|
|
br i1 %t238, label %then7959, label %endif7961
|
|
then7959:
|
|
store { ptr, i64, i64 } { ptr @.str.5490, i64 0, i64 0 }, ptr %a239
|
|
%t240 = load ptr, ptr %a43
|
|
%t241 = icmp eq ptr %t240, null
|
|
br i1 %t241, label %panic7962, label %ok7963
|
|
panic7962:
|
|
call void @finch_panic(ptr @.str.5491, i64 4997, ptr @.str.5492)
|
|
unreachable
|
|
ok7963:
|
|
%t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 27
|
|
%t243 = getelementptr inbounds %S.platform.Target, ptr %t242, i32 0, i32 1
|
|
%t244 = load i1, ptr %t243
|
|
br i1 %t244, label %then7964, label %endif7966
|
|
then7964:
|
|
store { ptr, i64, i64 } { ptr @.str.5493, i64 10, i64 0 }, ptr %a239
|
|
br label %endif7966
|
|
endif7966:
|
|
%t245 = load ptr, ptr %a43
|
|
%t246 = icmp eq ptr %t245, null
|
|
br i1 %t246, label %panic7967, label %ok7968
|
|
panic7967:
|
|
call void @finch_panic(ptr @.str.5494, i64 5000, ptr @.str.5495)
|
|
unreachable
|
|
ok7968:
|
|
%t247 = getelementptr inbounds %S.gen.Gen, ptr %t245, i32 0, i32 3
|
|
%t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i32 0, i32 1
|
|
%t249 = load { ptr, i64, i64 }, ptr %a239
|
|
store { ptr, i64, i64 } { ptr @.str.5496, i64 6, i64 0 }, ptr %a251
|
|
store { ptr, i64, i64 } %t249, ptr %a252
|
|
call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252)
|
|
%t253 = load { ptr, i64, i64 }, ptr %a250
|
|
store { ptr, i64, i64 } %t253, ptr %a255
|
|
store { ptr, i64, i64 } { ptr @.str.5497, i64 107, i64 0 }, ptr %a256
|
|
call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256)
|
|
%t257 = load { ptr, i64, i64 }, ptr %a254
|
|
%t258 = load i64, ptr %t248
|
|
%t259 = add i64 %t258, 1
|
|
call void @finch_arr_reserve(ptr %t247, i64 %t259, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t260 = load ptr, ptr %t247
|
|
%t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i64 %t258
|
|
store { ptr, i64, i64 } %t257, ptr %t261
|
|
store i64 %t259, ptr %t248
|
|
%t262 = load ptr, ptr %a43
|
|
%t263 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t262)
|
|
ret { ptr, i64, i64 } %t263
|
|
endif7961:
|
|
%t264 = load ptr, ptr %a43
|
|
%t265 = icmp eq ptr %t264, null
|
|
br i1 %t265, label %panic7969, label %ok7970
|
|
panic7969:
|
|
call void @finch_panic(ptr @.str.5498, i64 5004, ptr @.str.5499)
|
|
unreachable
|
|
ok7970:
|
|
%t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 14
|
|
%t267 = load i64, ptr %a144
|
|
%t268 = load { ptr, i64, i64 }, ptr %t266
|
|
%t269 = extractvalue { ptr, i64, i64 } %t268, 1
|
|
%t270 = icmp uge i64 %t267, %t269
|
|
br i1 %t270, label %range7971, label %inrange7972
|
|
range7971:
|
|
call void @finch_panic_index(ptr @.str.5500, i64 5004, i64 %t267, i64 %t269)
|
|
unreachable
|
|
inrange7972:
|
|
%t271 = extractvalue { ptr, i64, i64 } %t268, 0
|
|
%t272 = getelementptr inbounds %S.gen.FnSig, ptr %t271, i64 %t267
|
|
%t273 = load %S.gen.FnSig, ptr %t272
|
|
store %S.gen.FnSig %t273, ptr %a274
|
|
call void @finch.copy.S_gen_FnSig(ptr %a275, ptr %a274)
|
|
%t276 = load %S.gen.FnSig, ptr %a275
|
|
store %S.gen.FnSig %t276, ptr %a277
|
|
%t278 = load ptr, ptr %a43
|
|
%t279 = load %S.gen.FnSig, ptr %a277
|
|
%t280 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t278, %S.gen.FnSig %t279)
|
|
store { ptr, i64, i64 } { ptr @.str.5501, i64 5, i64 0 }, ptr %a282
|
|
store { ptr, i64, i64 } %t280, ptr %a283
|
|
call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283)
|
|
%t284 = load { ptr, i64, i64 }, ptr %a281
|
|
store { ptr, i64, i64 } %t284, ptr %a286
|
|
store { ptr, i64, i64 } { ptr @.str.5502, i64 1, i64 0 }, ptr %a287
|
|
call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287)
|
|
%t288 = load { ptr, i64, i64 }, ptr %a285
|
|
%t289 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 11
|
|
%t290 = load { ptr, i64, i64 }, ptr %t289
|
|
store { ptr, i64, i64 } %t288, ptr %a292
|
|
store { ptr, i64, i64 } %t290, ptr %a293
|
|
call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293)
|
|
%t294 = load { ptr, i64, i64 }, ptr %a291
|
|
store { ptr, i64, i64 } %t294, ptr %a296
|
|
store { ptr, i64, i64 } { ptr @.str.5503, i64 1, i64 0 }, ptr %a297
|
|
call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297)
|
|
%t298 = load { ptr, i64, i64 }, ptr %a295
|
|
store { ptr, i64, i64 } %t298, ptr %a299
|
|
store { ptr, i64, i64 } { ptr @.str.5504, i64 0, i64 0 }, ptr %a300
|
|
%t301 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 13
|
|
%t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i32 0, i32 1
|
|
%t303 = load i64, ptr %t302
|
|
%t304 = icmp eq i64 %t303, 1
|
|
br i1 %t304, label %then7973, label %endif7975
|
|
then7973:
|
|
store { ptr, i64, i64 } { ptr @.str.5505, i64 133, i64 0 }, ptr %a300
|
|
%t305 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } %t305, ptr %a307
|
|
store { ptr, i64, i64 } { ptr @.str.5506, i64 20, i64 0 }, ptr %a308
|
|
call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308)
|
|
%t309 = load { ptr, i64, i64 }, ptr %a306
|
|
store { ptr, i64, i64 } %t309, ptr %a299
|
|
br label %endif7975
|
|
endif7975:
|
|
%t310 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } %t310, ptr %a312
|
|
store { ptr, i64, i64 } { ptr @.str.5507, i64 1, i64 0 }, ptr %a313
|
|
call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313)
|
|
%t314 = load { ptr, i64, i64 }, ptr %a311
|
|
store { ptr, i64, i64 } %t314, ptr %a299
|
|
store { ptr, i64, i64 } { ptr @.str.5508, i64 12, i64 0 }, ptr %a315
|
|
%t316 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 9
|
|
%t317 = load i1, ptr %t316
|
|
br i1 %t317, label %then7976, label %else7977
|
|
then7976:
|
|
%t318 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } { ptr @.str.5509, i64 5, i64 0 }, ptr %a320
|
|
store { ptr, i64, i64 } %t318, ptr %a321
|
|
call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321)
|
|
%t322 = load { ptr, i64, i64 }, ptr %a319
|
|
store { ptr, i64, i64 } %t322, ptr %a299
|
|
%t323 = load { ptr, i64, i64 }, ptr %a300
|
|
store { ptr, i64, i64 } %t323, ptr %a325
|
|
store { ptr, i64, i64 } { ptr @.str.5510, i64 2, i64 0 }, ptr %a326
|
|
call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326)
|
|
%t327 = load { ptr, i64, i64 }, ptr %a324
|
|
%t328 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } %t327, ptr %a330
|
|
store { ptr, i64, i64 } %t328, ptr %a331
|
|
call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331)
|
|
%t332 = load { ptr, i64, i64 }, ptr %a329
|
|
store { ptr, i64, i64 } %t332, ptr %a334
|
|
store { ptr, i64, i64 } { ptr @.str.5511, i64 1, i64 0 }, ptr %a335
|
|
call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335)
|
|
%t336 = load { ptr, i64, i64 }, ptr %a333
|
|
store { ptr, i64, i64 } %t336, ptr %a300
|
|
store { ptr, i64, i64 } { ptr @.str.5512, i64 0, i64 0 }, ptr %a299
|
|
%t337 = load ptr, ptr %a43
|
|
%t338 = load %S.gen.FnSig, ptr %a277
|
|
%t339 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t337, %S.gen.FnSig %t338)
|
|
store { ptr, i64, i64 } %t339, ptr %a340
|
|
%t341 = load { ptr, i64, i64 }, ptr %a300
|
|
store { ptr, i64, i64 } %t341, ptr %a343
|
|
store { ptr, i64, i64 } { ptr @.str.5513, i64 21, i64 0 }, ptr %a344
|
|
call void @finch_str_concat(ptr %a342, ptr %a343, ptr %a344)
|
|
%t345 = load { ptr, i64, i64 }, ptr %a342
|
|
%t346 = load { ptr, i64, i64 }, ptr %a340
|
|
store { ptr, i64, i64 } %t345, ptr %a348
|
|
store { ptr, i64, i64 } %t346, ptr %a349
|
|
call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349)
|
|
%t350 = load { ptr, i64, i64 }, ptr %a347
|
|
store { ptr, i64, i64 } %t350, ptr %a352
|
|
store { ptr, i64, i64 } { ptr @.str.5514, i64 62, i64 0 }, ptr %a353
|
|
call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353)
|
|
%t354 = load { ptr, i64, i64 }, ptr %a351
|
|
store { ptr, i64, i64 } %t354, ptr %a300
|
|
%t355 = load { ptr, i64, i64 }, ptr %a300
|
|
store { ptr, i64, i64 } %t355, ptr %a357
|
|
store { ptr, i64, i64 } { ptr @.str.5515, i64 20, i64 0 }, ptr %a358
|
|
call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358)
|
|
%t359 = load { ptr, i64, i64 }, ptr %a356
|
|
%t360 = load { ptr, i64, i64 }, ptr %a340
|
|
store { ptr, i64, i64 } %t359, ptr %a362
|
|
store { ptr, i64, i64 } %t360, ptr %a363
|
|
call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363)
|
|
%t364 = load { ptr, i64, i64 }, ptr %a361
|
|
store { ptr, i64, i64 } %t364, ptr %a366
|
|
store { ptr, i64, i64 } { ptr @.str.5516, i64 78, i64 0 }, ptr %a367
|
|
call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367)
|
|
%t368 = load { ptr, i64, i64 }, ptr %a365
|
|
store { ptr, i64, i64 } %t368, ptr %a300
|
|
%t369 = load { ptr, i64, i64 }, ptr %a300
|
|
store { ptr, i64, i64 } %t369, ptr %a371
|
|
store { ptr, i64, i64 } { ptr @.str.5517, i64 62, i64 0 }, ptr %a372
|
|
call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372)
|
|
%t373 = load { ptr, i64, i64 }, ptr %a370
|
|
store { ptr, i64, i64 } %t373, ptr %a300
|
|
%t374 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 12
|
|
%t375 = getelementptr inbounds %S.ast.Type, ptr %t374, i32 0, i32 0
|
|
%t376 = load { ptr, i64, i64 }, ptr %t375
|
|
store { ptr, i64, i64 } %t376, ptr %a377
|
|
store { ptr, i64, i64 } { ptr @.str.5518, i64 3, i64 0 }, ptr %a378
|
|
%t379 = call i32 @finch_str_eq(ptr %a377, ptr %a378)
|
|
%t380 = icmp ne i32 %t379, 0
|
|
br i1 %t380, label %then7979, label %endif7981
|
|
then7979:
|
|
%t381 = load { ptr, i64, i64 }, ptr %a340
|
|
store { ptr, i64, i64 } { ptr @.str.5519, i64 20, i64 0 }, ptr %a383
|
|
store { ptr, i64, i64 } %t381, ptr %a384
|
|
call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384)
|
|
%t385 = load { ptr, i64, i64 }, ptr %a382
|
|
store { ptr, i64, i64 } %t385, ptr %a387
|
|
store { ptr, i64, i64 } { ptr @.str.5520, i64 53, i64 0 }, ptr %a388
|
|
call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388)
|
|
%t389 = load { ptr, i64, i64 }, ptr %a386
|
|
store { ptr, i64, i64 } %t389, ptr %a315
|
|
br label %endif7981
|
|
endif7981:
|
|
br label %endif7978
|
|
else7977:
|
|
%t390 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 12
|
|
%t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i32 0, i32 0
|
|
%t392 = load { ptr, i64, i64 }, ptr %t391
|
|
store { ptr, i64, i64 } %t392, ptr %a393
|
|
store { ptr, i64, i64 } { ptr @.str.5521, i64 3, i64 0 }, ptr %a394
|
|
%t395 = call i32 @finch_str_eq(ptr %a393, ptr %a394)
|
|
%t396 = icmp ne i32 %t395, 0
|
|
br i1 %t396, label %then7982, label %endif7984
|
|
then7982:
|
|
%t397 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } { ptr @.str.5522, i64 5, i64 0 }, ptr %a399
|
|
store { ptr, i64, i64 } %t397, ptr %a400
|
|
call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400)
|
|
%t401 = load { ptr, i64, i64 }, ptr %a398
|
|
store { ptr, i64, i64 } %t401, ptr %a299
|
|
store { ptr, i64, i64 } { ptr @.str.5523, i64 46, i64 0 }, ptr %a315
|
|
br label %endif7984
|
|
endif7984:
|
|
br label %endif7978
|
|
endif7978:
|
|
%t402 = load ptr, ptr %a43
|
|
%t403 = icmp eq ptr %t402, null
|
|
br i1 %t403, label %panic7985, label %ok7986
|
|
panic7985:
|
|
call void @finch_panic(ptr @.str.5524, i64 5029, ptr @.str.5525)
|
|
unreachable
|
|
ok7986:
|
|
%t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 3
|
|
%t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i32 0, i32 1
|
|
%t406 = load { ptr, i64, i64 }, ptr %a300
|
|
store { ptr, i64, i64 } { ptr @.str.5526, i64 48, i64 0 }, ptr %a408
|
|
store { ptr, i64, i64 } %t406, ptr %a409
|
|
call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409)
|
|
%t410 = load { ptr, i64, i64 }, ptr %a407
|
|
store { ptr, i64, i64 } %t410, ptr %a412
|
|
store { ptr, i64, i64 } { ptr @.str.5527, i64 2, i64 0 }, ptr %a413
|
|
call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413)
|
|
%t414 = load { ptr, i64, i64 }, ptr %a411
|
|
%t415 = load { ptr, i64, i64 }, ptr %a299
|
|
store { ptr, i64, i64 } %t414, ptr %a417
|
|
store { ptr, i64, i64 } %t415, ptr %a418
|
|
call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418)
|
|
%t419 = load { ptr, i64, i64 }, ptr %a416
|
|
store { ptr, i64, i64 } %t419, ptr %a421
|
|
store { ptr, i64, i64 } { ptr @.str.5528, i64 1, i64 0 }, ptr %a422
|
|
call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422)
|
|
%t423 = load { ptr, i64, i64 }, ptr %a420
|
|
%t424 = load { ptr, i64, i64 }, ptr %a315
|
|
store { ptr, i64, i64 } %t423, ptr %a426
|
|
store { ptr, i64, i64 } %t424, ptr %a427
|
|
call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427)
|
|
%t428 = load { ptr, i64, i64 }, ptr %a425
|
|
store { ptr, i64, i64 } %t428, ptr %a430
|
|
store { ptr, i64, i64 } { ptr @.str.5529, i64 2, i64 0 }, ptr %a431
|
|
call void @finch_str_concat(ptr %a429, ptr %a430, ptr %a431)
|
|
%t432 = load { ptr, i64, i64 }, ptr %a429
|
|
%t433 = load i64, ptr %t405
|
|
%t434 = add i64 %t433, 1
|
|
call void @finch_arr_reserve(ptr %t404, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t435 = load ptr, ptr %t404
|
|
%t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433
|
|
store { ptr, i64, i64 } %t432, ptr %t436
|
|
store i64 %t434, ptr %t405
|
|
%t437 = load ptr, ptr %a43
|
|
%t438 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t437)
|
|
ret { ptr, i64, i64 } %t438
|
|
}
|
|
|
|
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
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
store %S.C.CXString %p0, ptr %a1
|
|
%t2 = load %S.C.CXString, ptr %a1
|
|
store %S.C.CXString %t2, ptr %a3
|
|
%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
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
call void @finch_str_copy(ptr %a23, ptr %a22)
|
|
%t24 = load { ptr, i64, i64 }, ptr %a23
|
|
ret { ptr, i64, i64 } %t24
|
|
}
|
|
|
|
define internal %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %p0) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a3 = alloca %S.ast.Type, align 16
|
|
%a4 = alloca %S.ast.Type, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
%t2 = load %S.ast.Type, ptr %a1
|
|
store %S.ast.Type %t2, ptr %a3
|
|
call void @finch.copy.S_ast_Type(ptr %a4, ptr %a3)
|
|
%t5 = load %S.ast.Type, ptr %a4
|
|
%t6 = insertvalue %S.cimport.Mapped zeroinitializer, %S.ast.Type %t5, 0
|
|
%t7 = insertvalue %S.cimport.Mapped %t6, i1 true, 2
|
|
ret %S.cimport.Mapped %t7
|
|
}
|
|
|
|
define internal %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
call void @finch_str_copy(ptr %a4, ptr %a3)
|
|
%t5 = load { ptr, i64, i64 }, ptr %a4
|
|
%t6 = insertvalue %S.cimport.Mapped zeroinitializer, { ptr, i64, i64 } %t5, 1
|
|
%t7 = insertvalue %S.cimport.Mapped %t6, i1 false, 2
|
|
ret %S.cimport.Mapped %t7
|
|
}
|
|
|
|
define internal %S.ast.Type @finch.cimport.fixed(%S.ast.Type %p0, i64 %p1) {
|
|
entry:
|
|
%a1 = alloca %S.ast.Type, align 16
|
|
%a2 = alloca i64, align 16
|
|
%a6 = alloca %S.ast.Type, align 16
|
|
%a10 = alloca %S.ast.Type, align 16
|
|
%a11 = alloca %S.ast.Type, align 16
|
|
%a18 = alloca %S.ast.Type, align 16
|
|
%a19 = alloca %S.ast.Type, align 16
|
|
store %S.ast.Type %p0, ptr %a1
|
|
store i64 %p1, ptr %a2
|
|
%t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5530, i64 5, i64 0 }, 0
|
|
%t4 = load i64, ptr %a2
|
|
%t5 = insertvalue %S.ast.Type %t3, i64 %t4, 4
|
|
store %S.ast.Type %t5, ptr %a6
|
|
%t7 = getelementptr inbounds %S.ast.Type, ptr %a6, i32 0, i32 1
|
|
%t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1
|
|
%t9 = load %S.ast.Type, ptr %a1
|
|
store %S.ast.Type %t9, ptr %a10
|
|
call void @finch.copy.S_ast_Type(ptr %a11, ptr %a10)
|
|
%t12 = load %S.ast.Type, ptr %a11
|
|
%t13 = load i64, ptr %t8
|
|
%t14 = add i64 %t13, 1
|
|
call void @finch_arr_reserve(ptr %t7, i64 %t14, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t15 = load ptr, ptr %t7
|
|
%t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t13
|
|
store %S.ast.Type %t12, ptr %t16
|
|
store i64 %t14, ptr %t8
|
|
%t17 = load %S.ast.Type, ptr %a6
|
|
store %S.ast.Type %t17, ptr %a18
|
|
call void @finch.copy.S_ast_Type(ptr %a19, ptr %a18)
|
|
%t20 = load %S.ast.Type, ptr %a19
|
|
ret %S.ast.Type %t20
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca i1, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca i64, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a2
|
|
store { ptr, i64, i64 } { ptr @.str.5531, i64 22, i64 0 }, ptr %a3
|
|
%t4 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t4, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.5532, i64 26, i64 0 }, ptr %a7
|
|
call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7)
|
|
%t8 = load { ptr, i64, i64 }, ptr %a5
|
|
%t9 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t8, ptr %a11
|
|
store { ptr, i64, i64 } %t9, ptr %a12
|
|
call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12)
|
|
%t13 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t13, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.5533, i64 13, i64 0 }, ptr %a16
|
|
call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16)
|
|
%t17 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t17, ptr %a19
|
|
call void @finch_str_copy(ptr %a18, ptr %a19)
|
|
%t20 = call i64 @finch_shell(ptr %a18)
|
|
%t21 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
%t23 = call i32 @finch_file_exists(ptr %a22)
|
|
%t24 = icmp ne i32 %t23, 0
|
|
%t25 = xor i1 %t24, true
|
|
br i1 %t25, label %then7987, label %endif7989
|
|
then7987:
|
|
%t26 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t26, ptr %a27
|
|
call void @finch.copy.arr_str(ptr %a28, ptr %a27)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a28
|
|
ret { ptr, i64, i64 } %t29
|
|
endif7989:
|
|
store i1 false, ptr %a30
|
|
%t31 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
call void @finch_read_file(ptr %a33, ptr %a32, ptr @.str.5534, i64 110)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } %t34, ptr %a35
|
|
store { ptr, i64, i64 } { ptr @.str.5536, i64 1, i64 0 }, ptr %a37
|
|
call void @finch_str_split(ptr %a38, ptr %a35, ptr %a37)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a38
|
|
store { ptr, i64, i64 } %t39, ptr %a40
|
|
store i64 0, ptr %a41
|
|
br label %each.cond7990
|
|
each.cond7990:
|
|
%t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %a40, i32 0, i32 1
|
|
%t43 = load i64, ptr %t42
|
|
%t44 = load i64, ptr %a41
|
|
%t45 = icmp slt i64 %t44, %t43
|
|
br i1 %t45, label %each.body7991, label %each.end7993
|
|
each.body7991:
|
|
%t46 = load ptr, ptr %a40
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t44
|
|
%t48 = load { ptr, i64, i64 }, ptr %t47
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
%t50 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t50, ptr %a51
|
|
call void @finch_str_trim(ptr %a52, ptr %a51)
|
|
%t53 = load { ptr, i64, i64 }, ptr %a52
|
|
store { ptr, i64, i64 } %t53, ptr %a54
|
|
%t55 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
store { ptr, i64, i64 } { ptr @.str.5539, i64 34, i64 0 }, ptr %a58
|
|
%t59 = call i32 @finch_str_starts(ptr %a56, ptr %a58)
|
|
%t60 = icmp ne i32 %t59, 0
|
|
br i1 %t60, label %then7994, label %endif7996
|
|
then7994:
|
|
store i1 true, ptr %a30
|
|
br label %each.step7992
|
|
endif7996:
|
|
%t61 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t61, ptr %a62
|
|
store { ptr, i64, i64 } { ptr @.str.5541, i64 19, i64 0 }, ptr %a64
|
|
%t65 = call i32 @finch_str_starts(ptr %a62, ptr %a64)
|
|
%t66 = icmp ne i32 %t65, 0
|
|
br i1 %t66, label %then7997, label %endif7999
|
|
then7997:
|
|
br label %each.end7993
|
|
endif7999:
|
|
%t67 = load i1, ptr %a30
|
|
%t68 = xor i1 %t67, true
|
|
br label %logic.from8000
|
|
logic.from8000:
|
|
br i1 %t68, label %logic.end8002, label %logic.rhs8001
|
|
logic.rhs8001:
|
|
%t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1
|
|
%t70 = load i64, ptr %t69
|
|
%t71 = icmp eq i64 %t70, 0
|
|
br label %logic.rend8003
|
|
logic.rend8003:
|
|
br label %logic.end8002
|
|
logic.end8002:
|
|
%t72 = phi i1 [ true, %logic.from8000 ], [ %t71, %logic.rend8003 ]
|
|
br i1 %t72, label %then8004, label %endif8006
|
|
then8004:
|
|
br label %each.step7992
|
|
endif8006:
|
|
%t73 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t73, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.5543, i64 22, i64 0 }, ptr %a76
|
|
%t77 = call i32 @finch_str_ends(ptr %a74, ptr %a76)
|
|
%t78 = icmp ne i32 %t77, 0
|
|
br i1 %t78, label %then8007, label %else8008
|
|
then8007:
|
|
%t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
%t80 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
%t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1
|
|
%t84 = load i64, ptr %t83
|
|
%t85 = sub i64 %t84, 22
|
|
call void @finch_str_sub(ptr %a82, ptr %a81, i64 0, i64 %t85, ptr @.str.5545, i64 124)
|
|
%t86 = load { ptr, i64, i64 }, ptr %a82
|
|
store { ptr, i64, i64 } { ptr @.str.5544, i64 11, i64 0 }, ptr %a88
|
|
store { ptr, i64, i64 } %t86, ptr %a89
|
|
call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89)
|
|
%t90 = load { ptr, i64, i64 }, ptr %a87
|
|
%t91 = load i64, ptr %t79
|
|
%t92 = add i64 %t91, 1
|
|
call void @finch_arr_reserve(ptr %a2, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t93 = load ptr, ptr %a2
|
|
%t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91
|
|
store { ptr, i64, i64 } %t90, ptr %t94
|
|
store i64 %t92, ptr %t79
|
|
br label %endif8009
|
|
else8008:
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
%t96 = load { ptr, i64, i64 }, ptr %a54
|
|
store { ptr, i64, i64 } { ptr @.str.5546, i64 8, i64 0 }, ptr %a98
|
|
store { ptr, i64, i64 } %t96, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
%t101 = load i64, ptr %t95
|
|
%t102 = add i64 %t101, 1
|
|
call void @finch_arr_reserve(ptr %a2, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t103 = load ptr, ptr %a2
|
|
%t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101
|
|
store { ptr, i64, i64 } %t100, ptr %t104
|
|
store i64 %t102, ptr %t95
|
|
br label %endif8009
|
|
endif8009:
|
|
br label %each.step7992
|
|
each.step7992:
|
|
%t105 = load i64, ptr %a41
|
|
%t106 = add i64 %t105, 1
|
|
store i64 %t106, ptr %a41
|
|
br label %each.cond7990
|
|
each.end7993:
|
|
%t107 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5547, i64 7, i64 0 }, ptr %a109
|
|
store { ptr, i64, i64 } %t107, ptr %a110
|
|
call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a108
|
|
store { ptr, i64, i64 } %t111, ptr %a113
|
|
store { ptr, i64, i64 } { ptr @.str.5548, i64 1, i64 0 }, ptr %a114
|
|
call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114)
|
|
%t115 = load { ptr, i64, i64 }, ptr %a112
|
|
store { ptr, i64, i64 } %t115, ptr %a117
|
|
call void @finch_str_copy(ptr %a116, ptr %a117)
|
|
%t118 = call i64 @finch_shell(ptr %a116)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t119, ptr %a120
|
|
call void @finch.copy.arr_str(ptr %a121, ptr %a120)
|
|
%t122 = load { ptr, i64, i64 }, ptr %a121
|
|
ret { ptr, i64, i64 } %t122
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.C.CXType, align 16
|
|
%a3 = alloca %S.C.CXCursor, align 16
|
|
%a5 = alloca %S.C.CXType, align 16
|
|
%a7 = alloca %S.C.CXCursor, align 16
|
|
%a9 = alloca %S.C.CXCursor, align 16
|
|
%a11 = alloca [32 x i8], align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca %S.C.CXCursor, align 16
|
|
%a42 = alloca [32 x i8], align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca i32, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.C.CXType %p1, ptr %a2
|
|
%t4 = load %S.C.CXType, ptr %a2
|
|
store %S.C.CXType %t4, ptr %a5
|
|
call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a3, ptr 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 %panic8010, label %ok8011
|
|
panic8010:
|
|
call void @finch_panic(ptr @.str.5549, i64 139, ptr @.str.5550)
|
|
unreachable
|
|
ok8011:
|
|
%t17 = getelementptr inbounds %S.cimport.Importer, ptr %t15, i32 0, i32 3
|
|
%t18 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t18, ptr %a19
|
|
%t20 = call i64 @finch_map_find(ptr %t17, ptr %a19, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t21 = icmp sge i64 %t20, 0
|
|
br i1 %t21, label %then8012, label %endif8014
|
|
then8012:
|
|
%t22 = load ptr, ptr %a1
|
|
%t23 = icmp eq ptr %t22, null
|
|
br i1 %t23, label %panic8015, label %ok8016
|
|
panic8015:
|
|
call void @finch_panic(ptr @.str.5551, i64 140, ptr @.str.5552)
|
|
unreachable
|
|
ok8016:
|
|
%t24 = getelementptr inbounds %S.cimport.Importer, ptr %t22, i32 0, i32 3
|
|
%t25 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
%t27 = call i64 @finch_map_find(ptr %t24, ptr %a26, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t28 = icmp slt i64 %t27, 0
|
|
br i1 %t28, label %map.missing8017, label %map.found8018
|
|
map.missing8017:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a29
|
|
store { ptr, i64, i64 } %t25, ptr %a30
|
|
call void @finch_buf_str(ptr %a29, ptr %a30, i32 1)
|
|
call void @finch_map_missing(ptr @.str.5553, i64 140, ptr %a29)
|
|
unreachable
|
|
map.found8018:
|
|
%t31 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t24, i32 0, i32 0
|
|
%t32 = load ptr, ptr %t31
|
|
%t33 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t32, i64 %t27
|
|
%t34 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t33, i32 0, i32 2
|
|
%t35 = load { ptr, i64, i64 }, ptr %t34
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
call void @finch_str_copy(ptr %a37, ptr %a36)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a37
|
|
ret { ptr, i64, i64 } %t38
|
|
endif8014:
|
|
%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.from8019
|
|
logic.from8019:
|
|
br i1 %t48, label %logic.end8021, label %logic.rhs8020
|
|
logic.rhs8020:
|
|
%t49 = load { ptr, i64, i64 }, ptr %a45
|
|
store { ptr, i64, i64 } %t49, ptr %a50
|
|
store { ptr, i64, i64 } { ptr @.str.5555, i64 1, i64 0 }, ptr %a52
|
|
%t53 = call i64 @finch_str_find(ptr %a50, ptr %a52)
|
|
%t54 = icmp sge i64 %t53, 0
|
|
br label %logic.rend8022
|
|
logic.rend8022:
|
|
br label %logic.end8021
|
|
logic.end8021:
|
|
%t55 = phi i1 [ true, %logic.from8019 ], [ %t54, %logic.rend8022 ]
|
|
br i1 %t55, label %then8023, label %endif8025
|
|
then8023:
|
|
%t56 = load ptr, ptr %a1
|
|
%t57 = icmp eq ptr %t56, null
|
|
br i1 %t57, label %panic8026, label %ok8027
|
|
panic8026:
|
|
call void @finch_panic(ptr @.str.5556, i64 144, ptr @.str.5557)
|
|
unreachable
|
|
ok8027:
|
|
%t58 = getelementptr inbounds %S.cimport.Importer, ptr %t56, i32 0, i32 5
|
|
%t59 = load i64, ptr %t58
|
|
%t60 = add i64 %t59, 1
|
|
store i64 %t60, ptr %t58
|
|
%t61 = load ptr, ptr %a1
|
|
%t62 = icmp eq ptr %t61, null
|
|
br i1 %t62, label %panic8028, label %ok8029
|
|
panic8028:
|
|
call void @finch_panic(ptr @.str.5559, i64 145, ptr @.str.5560)
|
|
unreachable
|
|
ok8029:
|
|
%t63 = getelementptr inbounds %S.cimport.Importer, ptr %t61, i32 0, i32 5
|
|
%t64 = load i64, ptr %t63
|
|
call void @finch_str_from_int(ptr %a65, i64 %t64)
|
|
%t66 = load { ptr, i64, i64 }, ptr %a65
|
|
store { ptr, i64, i64 } { ptr @.str.5558, i64 12, i64 0 }, ptr %a68
|
|
store { ptr, i64, i64 } %t66, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t70, ptr %a45
|
|
br label %endif8025
|
|
endif8025:
|
|
%t71 = load { ptr, i64, i64 }, ptr %a45
|
|
%t72 = load ptr, ptr %a1
|
|
%t73 = icmp eq ptr %t72, null
|
|
br i1 %t73, label %panic8030, label %ok8031
|
|
panic8030:
|
|
call void @finch_panic(ptr @.str.5561, i64 147, ptr @.str.5562)
|
|
unreachable
|
|
ok8031:
|
|
%t74 = getelementptr inbounds %S.cimport.Importer, ptr %t72, i32 0, i32 3
|
|
%t75 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
store i32 0, ptr %a77
|
|
%t78 = call i64 @finch_map_slot(ptr %t74, ptr %a76, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a77)
|
|
%t79 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t74, i32 0, i32 0
|
|
%t80 = load ptr, ptr %t79
|
|
%t81 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t80, i64 %t78
|
|
%t82 = load i32, ptr %a77
|
|
%t83 = icmp ne i32 %t82, 0
|
|
br i1 %t83, label %map.new8032, label %map.have8033
|
|
map.new8032:
|
|
%t84 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t81, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t84, ptr %a76)
|
|
%t85 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t81, i32 0, i32 2
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %t85
|
|
br label %map.have8033
|
|
map.have8033:
|
|
%t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t81, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t71, ptr %a87
|
|
call void @finch_str_copy(ptr %a88, ptr %a87)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a88
|
|
store { ptr, i64, i64 } %t89, ptr %t86
|
|
%t90 = load { ptr, i64, i64 }, ptr %a45
|
|
store { ptr, i64, i64 } %t90, ptr %a91
|
|
call void @finch_str_copy(ptr %a92, ptr %a91)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a92
|
|
ret { ptr, i64, i64 } %t93
|
|
}
|
|
|
|
define internal i32 @finch.c.cimport.visitField(ptr 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
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca %S.C.CXType, align 16
|
|
%a47 = alloca i64, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca i32, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca %S.C.CXType, align 16
|
|
%a76 = alloca %S.cimport.CStruct, align 16
|
|
%a78 = alloca %S.C.CXCursor, align 16
|
|
%a85 = alloca %S.cimport.FieldCtx, align 16
|
|
%a87 = alloca %S.C.CXType, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca i32, align 16
|
|
%a113 = alloca %S.cimport.CStruct, align 16
|
|
%a114 = alloca %S.cimport.CStruct, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a123 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.C.CXType %p1, ptr %a2
|
|
%t4 = load %S.C.CXType, ptr %a2
|
|
store %S.C.CXType %t4, ptr %a5
|
|
call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a3, ptr 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 %panic8034, label %ok8035
|
|
panic8034:
|
|
call void @finch_panic(ptr @.str.5563, i64 157, ptr @.str.5564)
|
|
unreachable
|
|
ok8035:
|
|
%t26 = getelementptr inbounds %S.cimport.Importer, ptr %t24, i32 0, i32 0
|
|
%t27 = getelementptr inbounds %S.cimport.CImports, ptr %t26, i32 0, i32 3
|
|
%t28 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t28, ptr %a29
|
|
%t30 = call i64 @finch_map_find(ptr %t27, ptr %a29, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t31 = icmp sge i64 %t30, 0
|
|
br label %logic.from8036
|
|
logic.from8036:
|
|
br i1 %t31, label %logic.end8038, label %logic.rhs8037
|
|
logic.rhs8037:
|
|
%t32 = load ptr, ptr %a1
|
|
%t33 = icmp eq ptr %t32, null
|
|
br i1 %t33, label %panic8039, label %ok8040
|
|
panic8039:
|
|
call void @finch_panic(ptr @.str.5565, i64 157, ptr @.str.5566)
|
|
unreachable
|
|
ok8040:
|
|
%t34 = getelementptr inbounds %S.cimport.Importer, ptr %t32, i32 0, i32 4
|
|
%t35 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
%t37 = call i64 @finch_map_find(ptr %t34, ptr %a36, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t38 = icmp sge i64 %t37, 0
|
|
br label %logic.rend8041
|
|
logic.rend8041:
|
|
br label %logic.end8038
|
|
logic.end8038:
|
|
%t39 = phi i1 [ true, %logic.from8036 ], [ %t38, %logic.rend8041 ]
|
|
br i1 %t39, label %then8042, label %endif8044
|
|
then8042:
|
|
%t40 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t40, ptr %a41
|
|
call void @finch_str_copy(ptr %a42, ptr %a41)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a42
|
|
ret { ptr, i64, i64 } %t43
|
|
endif8044:
|
|
%t44 = load %S.C.CXType, ptr %a7
|
|
store %S.C.CXType %t44, ptr %a45
|
|
%t46 = call i64 @clang_Type_getSizeOf(ptr byval(%S.C.CXType) align 8 %a45)
|
|
store i64 %t46, ptr %a47
|
|
%t48 = load i64, ptr %a47
|
|
%t49 = icmp slt i64 %t48, 0
|
|
br i1 %t49, label %then8045, label %endif8047
|
|
then8045:
|
|
ret { ptr, i64, i64 } { ptr @.str.5567, i64 0, i64 0 }
|
|
endif8047:
|
|
%t50 = load ptr, ptr %a1
|
|
%t51 = icmp eq ptr %t50, null
|
|
br i1 %t51, label %panic8048, label %ok8049
|
|
panic8048:
|
|
call void @finch_panic(ptr @.str.5568, i64 164, ptr @.str.5569)
|
|
unreachable
|
|
ok8049:
|
|
%t52 = getelementptr inbounds %S.cimport.Importer, ptr %t50, i32 0, i32 4
|
|
%t53 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t53, ptr %a54
|
|
store i32 0, ptr %a55
|
|
%t56 = call i64 @finch_map_slot(ptr %t52, ptr %a54, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a55)
|
|
%t57 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t52, i32 0, i32 0
|
|
%t58 = load ptr, ptr %t57
|
|
%t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t58, i64 %t56
|
|
%t60 = load i32, ptr %a55
|
|
%t61 = icmp ne i32 %t60, 0
|
|
br i1 %t61, label %map.new8050, label %map.have8051
|
|
map.new8050:
|
|
%t62 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t59, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t62, ptr %a54)
|
|
%t63 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t59, i32 0, i32 2
|
|
store i1 false, ptr %t63
|
|
br label %map.have8051
|
|
map.have8051:
|
|
%t64 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t59, i32 0, i32 2
|
|
store i1 true, ptr %t64
|
|
%t65 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t65, ptr %a66
|
|
call void @finch_str_copy(ptr %a67, ptr %a66)
|
|
%t68 = load { ptr, i64, i64 }, ptr %a67
|
|
%t69 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t68, 0
|
|
%t70 = load i64, ptr %a47
|
|
%t71 = insertvalue %S.cimport.CStruct %t69, i64 %t70, 2
|
|
%t72 = load %S.C.CXType, ptr %a7
|
|
store %S.C.CXType %t72, ptr %a73
|
|
%t74 = call i64 @clang_Type_getAlignOf(ptr byval(%S.C.CXType) align 8 %a73)
|
|
%t75 = insertvalue %S.cimport.CStruct %t71, i64 %t74, 3
|
|
store %S.cimport.CStruct %t75, ptr %a76
|
|
%t77 = load %S.C.CXCursor, ptr %a12
|
|
store %S.C.CXCursor %t77, ptr %a78
|
|
%t79 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a78)
|
|
%t80 = icmp eq i32 %t79, 3
|
|
br i1 %t80, label %then8052, label %endif8054
|
|
then8052:
|
|
%t81 = getelementptr inbounds %S.cimport.CStruct, ptr %a76, i32 0, i32 4
|
|
store { ptr, i64, i64 } { ptr @.str.5570, i64 12, i64 0 }, ptr %t81
|
|
br label %endif8054
|
|
endif8054:
|
|
%t82 = load ptr, ptr %a1
|
|
%t83 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t82, 0
|
|
%t84 = insertvalue %S.cimport.FieldCtx %t83, ptr %a76, 1
|
|
store %S.cimport.FieldCtx %t84, ptr %a85
|
|
%t86 = load %S.C.CXType, ptr %a7
|
|
store %S.C.CXType %t86, ptr %a87
|
|
%t88 = call i32 @clang_Type_visitFields(ptr byval(%S.C.CXType) align 8 %a87, ptr @finch.c.cimport.visitField, ptr %a85)
|
|
%t89 = load ptr, ptr %a1
|
|
%t90 = icmp eq ptr %t89, null
|
|
br i1 %t90, label %panic8055, label %ok8056
|
|
panic8055:
|
|
call void @finch_panic(ptr @.str.5571, i64 172, ptr @.str.5572)
|
|
unreachable
|
|
ok8056:
|
|
%t91 = getelementptr inbounds %S.cimport.Importer, ptr %t89, i32 0, i32 4
|
|
%t92 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t92, ptr %a93
|
|
%t94 = call i64 @finch_map_find(ptr %t91, ptr %a93, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t95 = icmp sge i64 %t94, 0
|
|
br i1 %t95, label %remove.hit8057, label %remove.end8058
|
|
remove.hit8057:
|
|
call void @finch_map_remove_at(ptr %t91, i64 %t94, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64))
|
|
br label %remove.end8058
|
|
remove.end8058:
|
|
%t96 = load %S.cimport.CStruct, ptr %a76
|
|
%t97 = load ptr, ptr %a1
|
|
%t98 = icmp eq ptr %t97, null
|
|
br i1 %t98, label %panic8059, label %ok8060
|
|
panic8059:
|
|
call void @finch_panic(ptr @.str.5573, i64 173, ptr @.str.5574)
|
|
unreachable
|
|
ok8060:
|
|
%t99 = getelementptr inbounds %S.cimport.Importer, ptr %t97, i32 0, i32 0
|
|
%t100 = getelementptr inbounds %S.cimport.CImports, ptr %t99, i32 0, i32 3
|
|
%t101 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t101, ptr %a102
|
|
store i32 0, ptr %a103
|
|
%t104 = call i64 @finch_map_slot(ptr %t100, ptr %a102, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a103)
|
|
%t105 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t100, i32 0, i32 0
|
|
%t106 = load ptr, ptr %t105
|
|
%t107 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t106, i64 %t104
|
|
%t108 = load i32, ptr %a103
|
|
%t109 = icmp ne i32 %t108, 0
|
|
br i1 %t109, label %map.new8061, label %map.have8062
|
|
map.new8061:
|
|
%t110 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t107, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t110, ptr %a102)
|
|
%t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t107, i32 0, i32 2
|
|
store %S.cimport.CStruct zeroinitializer, ptr %t111
|
|
br label %map.have8062
|
|
map.have8062:
|
|
%t112 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t107, i32 0, i32 2
|
|
store %S.cimport.CStruct %t96, ptr %a113
|
|
call void @finch.copy.S_cimport_CStruct(ptr %a114, ptr %a113)
|
|
%t115 = load %S.cimport.CStruct, ptr %a114
|
|
store %S.cimport.CStruct %t115, ptr %t112
|
|
%t116 = load ptr, ptr %a1
|
|
%t117 = icmp eq ptr %t116, null
|
|
br i1 %t117, label %panic8063, label %ok8064
|
|
panic8063:
|
|
call void @finch_panic(ptr @.str.5575, i64 174, ptr @.str.5576)
|
|
unreachable
|
|
ok8064:
|
|
%t118 = getelementptr inbounds %S.cimport.Importer, ptr %t116, i32 0, i32 0
|
|
%t119 = getelementptr inbounds %S.cimport.CImports, ptr %t118, i32 0, i32 4
|
|
%t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1
|
|
%t121 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t121, ptr %a122
|
|
call void @finch_str_copy(ptr %a123, ptr %a122)
|
|
%t124 = load { ptr, i64, i64 }, ptr %a123
|
|
%t125 = load i64, ptr %t120
|
|
%t126 = add i64 %t125, 1
|
|
call void @finch_arr_reserve(ptr %t119, i64 %t126, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t127 = load ptr, ptr %t119
|
|
%t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i64 %t125
|
|
store { ptr, i64, i64 } %t124, ptr %t128
|
|
store i64 %t126, ptr %t120
|
|
%t129 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t129, ptr %a130
|
|
call void @finch_str_copy(ptr %a131, ptr %a130)
|
|
%t132 = load { ptr, i64, i64 }, ptr %a131
|
|
ret { ptr, i64, i64 } %t132
|
|
}
|
|
|
|
define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) {
|
|
entry:
|
|
%a1 = alloca %S.C.CXCursor, align 16
|
|
%a2 = alloca ptr, align 16
|
|
%a4 = alloca ptr, align 16
|
|
%a6 = alloca %S.C.CXCursor, align 16
|
|
%a8 = alloca [32 x i8], align 16
|
|
%a12 = alloca %S.cimport.CField, align 16
|
|
%a13 = alloca %S.C.CXType, align 16
|
|
%a14 = alloca %S.C.CXType, align 16
|
|
%a16 = alloca %S.C.CXCursor, align 16
|
|
%a18 = alloca %S.C.CXType, align 16
|
|
%a20 = alloca %S.C.CXType, align 16
|
|
%a22 = alloca %S.C.CXCursor, align 16
|
|
%a27 = alloca %S.C.CXType, align 16
|
|
%a31 = alloca %S.C.CXType, align 16
|
|
%a35 = alloca %S.C.CXCursor, align 16
|
|
%a48 = alloca %S.C.CXCursor, align 16
|
|
%a50 = alloca %S.C.CXType, align 16
|
|
%a52 = alloca %S.C.CXCursor, align 16
|
|
%a63 = alloca %S.cimport.Mapped, align 16
|
|
%a69 = alloca %S.ast.Type, align 16
|
|
%a70 = alloca %S.ast.Type, align 16
|
|
%a94 = alloca %S.cimport.CField, align 16
|
|
%a95 = alloca %S.cimport.CField, align 16
|
|
store %S.C.CXCursor %p0, ptr %a1
|
|
store ptr %p1, ptr %a2
|
|
%t3 = load ptr, ptr %a2
|
|
store ptr %t3, ptr %a4
|
|
%t5 = load %S.C.CXCursor, ptr %a1
|
|
store %S.C.CXCursor %t5, ptr %a6
|
|
%t7 = call { 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 %then8065, label %else8066
|
|
then8065:
|
|
%t38 = load ptr, ptr %a4
|
|
%t39 = icmp eq ptr %t38, null
|
|
br i1 %t39, label %panic8068, label %ok8069
|
|
panic8068:
|
|
call void @finch_panic(ptr @.str.5578, i64 191, ptr @.str.5579)
|
|
unreachable
|
|
ok8069:
|
|
%t40 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t38, i32 0, i32 1
|
|
%t41 = load ptr, ptr %t40
|
|
%t42 = icmp eq ptr %t41, null
|
|
br i1 %t42, label %panic8070, label %ok8071
|
|
panic8070:
|
|
call void @finch_panic(ptr @.str.5580, i64 191, ptr @.str.5581)
|
|
unreachable
|
|
ok8071:
|
|
%t43 = getelementptr inbounds %S.cimport.CStruct, ptr %t41, i32 0, i32 4
|
|
store { ptr, i64, i64 } { ptr @.str.5577, i64 14, i64 0 }, ptr %t43
|
|
%t44 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5
|
|
store i1 true, ptr %t44
|
|
br label %endif8067
|
|
else8066:
|
|
%t45 = getelementptr inbounds %S.C.CXType, ptr %a20, i32 0, i32 0
|
|
%t46 = load i32, ptr %t45
|
|
%t47 = icmp eq i32 %t46, 105
|
|
br label %logic.from8072
|
|
logic.from8072:
|
|
br i1 %t47, label %logic.rhs8073, label %logic.end8074
|
|
logic.rhs8073:
|
|
%t49 = load %S.C.CXType, ptr %a20
|
|
store %S.C.CXType %t49, ptr %a50
|
|
call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a48, ptr byval(%S.C.CXType) align 8 %a50)
|
|
%t51 = load %S.C.CXCursor, ptr %a48
|
|
store %S.C.CXCursor %t51, ptr %a52
|
|
%t53 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a52)
|
|
%t54 = icmp eq i32 %t53, 3
|
|
br label %logic.rend8075
|
|
logic.rend8075:
|
|
br label %logic.end8074
|
|
logic.end8074:
|
|
%t55 = phi i1 [ false, %logic.from8072 ], [ %t54, %logic.rend8075 ]
|
|
br i1 %t55, label %then8076, label %else8077
|
|
then8076:
|
|
%t56 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5
|
|
store i1 true, ptr %t56
|
|
br label %endif8078
|
|
else8077:
|
|
%t57 = load ptr, ptr %a4
|
|
%t58 = icmp eq ptr %t57, null
|
|
br i1 %t58, label %panic8079, label %ok8080
|
|
panic8079:
|
|
call void @finch_panic(ptr @.str.5582, i64 196, ptr @.str.5583)
|
|
unreachable
|
|
ok8080:
|
|
%t59 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t57, i32 0, i32 0
|
|
%t60 = load ptr, ptr %t59
|
|
%t61 = load %S.C.CXType, ptr %a20
|
|
%t62 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t60, %S.C.CXType %t61, i1 false, i1 false)
|
|
store %S.cimport.Mapped %t62, ptr %a63
|
|
%t64 = getelementptr inbounds %S.cimport.Mapped, ptr %a63, i32 0, i32 2
|
|
%t65 = load i1, ptr %t64
|
|
br i1 %t65, label %then8081, label %else8082
|
|
then8081:
|
|
%t66 = getelementptr inbounds %S.cimport.Mapped, ptr %a63, i32 0, i32 0
|
|
%t67 = load %S.ast.Type, ptr %t66
|
|
%t68 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 1
|
|
store %S.ast.Type %t67, ptr %a69
|
|
call void @finch.copy.S_ast_Type(ptr %a70, ptr %a69)
|
|
%t71 = load %S.ast.Type, ptr %a70
|
|
store %S.ast.Type %t71, ptr %t68
|
|
br label %endif8083
|
|
else8082:
|
|
%t72 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5
|
|
store i1 true, ptr %t72
|
|
br label %endif8083
|
|
endif8083:
|
|
br label %endif8078
|
|
endif8078:
|
|
br label %endif8067
|
|
endif8067:
|
|
%t73 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5
|
|
%t74 = load i1, ptr %t73
|
|
br i1 %t74, label %then8084, label %endif8086
|
|
then8084:
|
|
%t75 = load ptr, ptr %a4
|
|
%t76 = icmp eq ptr %t75, null
|
|
br i1 %t76, label %panic8087, label %ok8088
|
|
panic8087:
|
|
call void @finch_panic(ptr @.str.5584, i64 204, ptr @.str.5585)
|
|
unreachable
|
|
ok8088:
|
|
%t77 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t75, i32 0, i32 1
|
|
%t78 = load ptr, ptr %t77
|
|
%t79 = icmp eq ptr %t78, null
|
|
br i1 %t79, label %panic8089, label %ok8090
|
|
panic8089:
|
|
call void @finch_panic(ptr @.str.5586, i64 204, ptr @.str.5587)
|
|
unreachable
|
|
ok8090:
|
|
%t80 = getelementptr inbounds %S.cimport.CStruct, ptr %t78, i32 0, i32 5
|
|
store i1 true, ptr %t80
|
|
br label %endif8086
|
|
endif8086:
|
|
%t81 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 0
|
|
%t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i32 0, i32 1
|
|
%t83 = load i64, ptr %t82
|
|
%t84 = icmp eq i64 %t83, 0
|
|
br i1 %t84, label %then8091, label %endif8093
|
|
then8091:
|
|
%t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5
|
|
store i1 true, ptr %t85
|
|
br label %endif8093
|
|
endif8093:
|
|
%t86 = load ptr, ptr %a4
|
|
%t87 = icmp eq ptr %t86, null
|
|
br i1 %t87, label %panic8094, label %ok8095
|
|
panic8094:
|
|
call void @finch_panic(ptr @.str.5588, i64 209, ptr @.str.5589)
|
|
unreachable
|
|
ok8095:
|
|
%t88 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t86, i32 0, i32 1
|
|
%t89 = load ptr, ptr %t88
|
|
%t90 = icmp eq ptr %t89, null
|
|
br i1 %t90, label %panic8096, label %ok8097
|
|
panic8096:
|
|
call void @finch_panic(ptr @.str.5590, i64 209, ptr @.str.5591)
|
|
unreachable
|
|
ok8097:
|
|
%t91 = getelementptr inbounds %S.cimport.CStruct, ptr %t89, i32 0, i32 1
|
|
%t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1
|
|
%t93 = load %S.cimport.CField, ptr %a12
|
|
store %S.cimport.CField %t93, ptr %a94
|
|
call void @finch.copy.S_cimport_CField(ptr %a95, ptr %a94)
|
|
%t96 = load %S.cimport.CField, ptr %a95
|
|
%t97 = load i64, ptr %t92
|
|
%t98 = add i64 %t97, 1
|
|
call void @finch_arr_reserve(ptr %t91, i64 %t98, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64))
|
|
%t99 = load ptr, ptr %t91
|
|
%t100 = getelementptr inbounds %S.cimport.CField, ptr %t99, i64 %t97
|
|
store %S.cimport.CField %t96, ptr %t100
|
|
store i64 %t98, ptr %t92
|
|
ret i32 1
|
|
}
|
|
|
|
define internal %S.cimport.Mapped @finch.cimport.sized(i64 %p0, i1 %p1) {
|
|
entry:
|
|
%a1 = alloca i64, align 16
|
|
%a2 = alloca i1, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
store i64 %p0, ptr %a1
|
|
store i1 %p1, ptr %a2
|
|
%t3 = load i64, ptr %a1
|
|
%t4 = icmp eq i64 %t3, 1
|
|
br i1 %t4, label %then8098, label %endif8100
|
|
then8098:
|
|
%t5 = load i1, ptr %a2
|
|
br i1 %t5, label %then8101, label %endif8103
|
|
then8101:
|
|
%t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5592, i64 2, i64 0 })
|
|
%t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6)
|
|
ret %S.cimport.Mapped %t7
|
|
endif8103:
|
|
%t8 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5593, i64 2, i64 0 })
|
|
%t9 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t8)
|
|
ret %S.cimport.Mapped %t9
|
|
endif8100:
|
|
%t10 = load i64, ptr %a1
|
|
%t11 = icmp eq i64 %t10, 2
|
|
br i1 %t11, label %then8104, label %endif8106
|
|
then8104:
|
|
%t12 = load i1, ptr %a2
|
|
br i1 %t12, label %then8107, label %endif8109
|
|
then8107:
|
|
%t13 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5594, i64 3, i64 0 })
|
|
%t14 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t13)
|
|
ret %S.cimport.Mapped %t14
|
|
endif8109:
|
|
%t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5595, i64 3, i64 0 })
|
|
%t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15)
|
|
ret %S.cimport.Mapped %t16
|
|
endif8106:
|
|
%t17 = load i64, ptr %a1
|
|
%t18 = icmp eq i64 %t17, 4
|
|
br i1 %t18, label %then8110, label %endif8112
|
|
then8110:
|
|
%t19 = load i1, ptr %a2
|
|
br i1 %t19, label %then8113, label %endif8115
|
|
then8113:
|
|
%t20 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5596, i64 3, i64 0 })
|
|
%t21 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t20)
|
|
ret %S.cimport.Mapped %t21
|
|
endif8115:
|
|
%t22 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5597, i64 3, i64 0 })
|
|
%t23 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t22)
|
|
ret %S.cimport.Mapped %t23
|
|
endif8112:
|
|
%t24 = load i64, ptr %a1
|
|
%t25 = icmp eq i64 %t24, 8
|
|
br i1 %t25, label %then8116, label %endif8118
|
|
then8116:
|
|
%t26 = load i1, ptr %a2
|
|
br i1 %t26, label %then8119, label %endif8121
|
|
then8119:
|
|
%t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5598, i64 3, i64 0 })
|
|
%t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27)
|
|
ret %S.cimport.Mapped %t28
|
|
endif8121:
|
|
%t29 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5599, i64 3, i64 0 })
|
|
%t30 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t29)
|
|
ret %S.cimport.Mapped %t30
|
|
endif8118:
|
|
%t31 = load i64, ptr %a1
|
|
%t32 = mul i64 %t31, 8
|
|
call void @finch_str_from_int(ptr %a33, i64 %t32)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a33
|
|
store { ptr, i64, i64 } { ptr @.str.5600, i64 7, i64 0 }, ptr %a36
|
|
store { ptr, i64, i64 } %t34, ptr %a37
|
|
call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37)
|
|
%t38 = load { ptr, i64, i64 }, ptr %a35
|
|
store { ptr, i64, i64 } %t38, ptr %a40
|
|
store { ptr, i64, i64 } { ptr @.str.5601, i64 11, i64 0 }, ptr %a41
|
|
call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a39
|
|
%t43 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t42)
|
|
ret %S.cimport.Mapped %t43
|
|
}
|
|
|
|
define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.C.CXType, align 16
|
|
%a3 = alloca i1, align 16
|
|
%a4 = alloca i1, align 16
|
|
%a5 = alloca %S.C.CXType, align 16
|
|
%a7 = alloca %S.C.CXType, align 16
|
|
%a9 = alloca %S.C.CXType, align 16
|
|
%a11 = alloca %S.C.CXType, align 16
|
|
%a13 = alloca i64, align 16
|
|
%a16 = alloca i32, align 16
|
|
%a78 = alloca %S.C.CXType, align 16
|
|
%a79 = alloca %S.C.CXType, align 16
|
|
%a81 = alloca %S.C.CXType, align 16
|
|
%a83 = alloca %S.C.CXType, align 16
|
|
%a85 = alloca %S.C.CXType, align 16
|
|
%a98 = alloca %S.C.CXType, align 16
|
|
%a120 = alloca %S.cimport.Mapped, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a148 = alloca %S.C.CXCursor, align 16
|
|
%a150 = alloca %S.C.CXType, align 16
|
|
%a152 = alloca %S.C.CXCursor, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca %S.C.CXType, align 16
|
|
%a177 = alloca %S.C.CXType, align 16
|
|
%a180 = alloca %S.cimport.Mapped, align 16
|
|
%a188 = alloca %S.C.CXType, align 16
|
|
%a196 = alloca %S.C.CXType, align 16
|
|
%a198 = alloca [32 x i8], align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.C.CXType %p1, ptr %a2
|
|
store i1 %p2, ptr %a3
|
|
store i1 %p3, ptr %a4
|
|
%t6 = load %S.C.CXType, ptr %a2
|
|
store %S.C.CXType %t6, ptr %a7
|
|
call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a5, ptr 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 %then8122, label %endif8124
|
|
then8122:
|
|
%t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5602, i64 4, i64 0 })
|
|
%t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19)
|
|
ret %S.cimport.Mapped %t20
|
|
endif8124:
|
|
%t21 = load i32, ptr %a16
|
|
%t22 = icmp eq i32 %t21, 3
|
|
br i1 %t22, label %then8125, label %endif8127
|
|
then8125:
|
|
%t23 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5603, i64 4, i64 0 })
|
|
%t24 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t23)
|
|
ret %S.cimport.Mapped %t24
|
|
endif8127:
|
|
%t25 = load i32, ptr %a16
|
|
%t26 = icmp eq i32 %t25, 13
|
|
br label %logic.from8128
|
|
logic.from8128:
|
|
br i1 %t26, label %logic.end8130, label %logic.rhs8129
|
|
logic.rhs8129:
|
|
%t27 = load i32, ptr %a16
|
|
%t28 = icmp eq i32 %t27, 4
|
|
br label %logic.rend8131
|
|
logic.rend8131:
|
|
br label %logic.end8130
|
|
logic.end8130:
|
|
%t29 = phi i1 [ true, %logic.from8128 ], [ %t28, %logic.rend8131 ]
|
|
br i1 %t29, label %then8132, label %endif8134
|
|
then8132:
|
|
%t30 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5604, i64 4, i64 0 })
|
|
%t31 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t30)
|
|
ret %S.cimport.Mapped %t31
|
|
endif8134:
|
|
%t32 = load i32, ptr %a16
|
|
%t33 = icmp eq i32 %t32, 14
|
|
br label %logic.from8135
|
|
logic.from8135:
|
|
br i1 %t33, label %logic.end8137, label %logic.rhs8136
|
|
logic.rhs8136:
|
|
%t34 = load i32, ptr %a16
|
|
%t35 = icmp eq i32 %t34, 16
|
|
br label %logic.rend8138
|
|
logic.rend8138:
|
|
br label %logic.end8137
|
|
logic.end8137:
|
|
%t36 = phi i1 [ true, %logic.from8135 ], [ %t35, %logic.rend8138 ]
|
|
br label %logic.from8139
|
|
logic.from8139:
|
|
br i1 %t36, label %logic.end8141, label %logic.rhs8140
|
|
logic.rhs8140:
|
|
%t37 = load i32, ptr %a16
|
|
%t38 = icmp eq i32 %t37, 17
|
|
br label %logic.rend8142
|
|
logic.rend8142:
|
|
br label %logic.end8141
|
|
logic.end8141:
|
|
%t39 = phi i1 [ true, %logic.from8139 ], [ %t38, %logic.rend8142 ]
|
|
br label %logic.from8143
|
|
logic.from8143:
|
|
br i1 %t39, label %logic.end8145, label %logic.rhs8144
|
|
logic.rhs8144:
|
|
%t40 = load i32, ptr %a16
|
|
%t41 = icmp eq i32 %t40, 18
|
|
br label %logic.rend8146
|
|
logic.rend8146:
|
|
br label %logic.end8145
|
|
logic.end8145:
|
|
%t42 = phi i1 [ true, %logic.from8143 ], [ %t41, %logic.rend8146 ]
|
|
br label %logic.from8147
|
|
logic.from8147:
|
|
br i1 %t42, label %logic.end8149, label %logic.rhs8148
|
|
logic.rhs8148:
|
|
%t43 = load i32, ptr %a16
|
|
%t44 = icmp eq i32 %t43, 19
|
|
br label %logic.rend8150
|
|
logic.rend8150:
|
|
br label %logic.end8149
|
|
logic.end8149:
|
|
%t45 = phi i1 [ true, %logic.from8147 ], [ %t44, %logic.rend8150 ]
|
|
br i1 %t45, label %then8151, label %endif8153
|
|
then8151:
|
|
%t46 = load i64, ptr %a13
|
|
%t47 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t46, i1 true)
|
|
ret %S.cimport.Mapped %t47
|
|
endif8153:
|
|
%t48 = load i32, ptr %a16
|
|
%t49 = icmp eq i32 %t48, 5
|
|
br label %logic.from8154
|
|
logic.from8154:
|
|
br i1 %t49, label %logic.end8156, label %logic.rhs8155
|
|
logic.rhs8155:
|
|
%t50 = load i32, ptr %a16
|
|
%t51 = icmp eq i32 %t50, 8
|
|
br label %logic.rend8157
|
|
logic.rend8157:
|
|
br label %logic.end8156
|
|
logic.end8156:
|
|
%t52 = phi i1 [ true, %logic.from8154 ], [ %t51, %logic.rend8157 ]
|
|
br label %logic.from8158
|
|
logic.from8158:
|
|
br i1 %t52, label %logic.end8160, label %logic.rhs8159
|
|
logic.rhs8159:
|
|
%t53 = load i32, ptr %a16
|
|
%t54 = icmp eq i32 %t53, 9
|
|
br label %logic.rend8161
|
|
logic.rend8161:
|
|
br label %logic.end8160
|
|
logic.end8160:
|
|
%t55 = phi i1 [ true, %logic.from8158 ], [ %t54, %logic.rend8161 ]
|
|
br label %logic.from8162
|
|
logic.from8162:
|
|
br i1 %t55, label %logic.end8164, label %logic.rhs8163
|
|
logic.rhs8163:
|
|
%t56 = load i32, ptr %a16
|
|
%t57 = icmp eq i32 %t56, 10
|
|
br label %logic.rend8165
|
|
logic.rend8165:
|
|
br label %logic.end8164
|
|
logic.end8164:
|
|
%t58 = phi i1 [ true, %logic.from8162 ], [ %t57, %logic.rend8165 ]
|
|
br label %logic.from8166
|
|
logic.from8166:
|
|
br i1 %t58, label %logic.end8168, label %logic.rhs8167
|
|
logic.rhs8167:
|
|
%t59 = load i32, ptr %a16
|
|
%t60 = icmp eq i32 %t59, 11
|
|
br label %logic.rend8169
|
|
logic.rend8169:
|
|
br label %logic.end8168
|
|
logic.end8168:
|
|
%t61 = phi i1 [ true, %logic.from8166 ], [ %t60, %logic.rend8169 ]
|
|
br i1 %t61, label %then8170, label %endif8172
|
|
then8170:
|
|
%t62 = load i64, ptr %a13
|
|
%t63 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t62, i1 false)
|
|
ret %S.cimport.Mapped %t63
|
|
endif8172:
|
|
%t64 = load i32, ptr %a16
|
|
%t65 = icmp eq i32 %t64, 106
|
|
br i1 %t65, label %then8173, label %endif8175
|
|
then8173:
|
|
%t66 = load i64, ptr %a13
|
|
%t67 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t66, i1 true)
|
|
ret %S.cimport.Mapped %t67
|
|
endif8175:
|
|
%t68 = load i32, ptr %a16
|
|
%t69 = icmp eq i32 %t68, 21
|
|
br i1 %t69, label %then8176, label %endif8178
|
|
then8176:
|
|
%t70 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5605, i64 3, i64 0 })
|
|
%t71 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t70)
|
|
ret %S.cimport.Mapped %t71
|
|
endif8178:
|
|
%t72 = load i32, ptr %a16
|
|
%t73 = icmp eq i32 %t72, 22
|
|
br i1 %t73, label %then8179, label %endif8181
|
|
then8179:
|
|
%t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5606, i64 5, i64 0 })
|
|
%t75 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t74)
|
|
ret %S.cimport.Mapped %t75
|
|
endif8181:
|
|
%t76 = load i32, ptr %a16
|
|
%t77 = icmp eq i32 %t76, 101
|
|
br i1 %t77, label %then8182, label %endif8184
|
|
then8182:
|
|
%t80 = load %S.C.CXType, ptr %a9
|
|
store %S.C.CXType %t80, ptr %a81
|
|
call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a79, ptr byval(%S.C.CXType) align 8 %a81)
|
|
%t82 = load %S.C.CXType, ptr %a79
|
|
store %S.C.CXType %t82, ptr %a83
|
|
call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a78, ptr byval(%S.C.CXType) align 8 %a83)
|
|
%t84 = load %S.C.CXType, ptr %a78
|
|
store %S.C.CXType %t84, ptr %a85
|
|
%t86 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0
|
|
%t87 = load i32, ptr %t86
|
|
%t88 = icmp eq i32 %t87, 13
|
|
br label %logic.from8185
|
|
logic.from8185:
|
|
br i1 %t88, label %logic.end8187, label %logic.rhs8186
|
|
logic.rhs8186:
|
|
%t89 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0
|
|
%t90 = load i32, ptr %t89
|
|
%t91 = icmp eq i32 %t90, 4
|
|
br label %logic.rend8188
|
|
logic.rend8188:
|
|
br label %logic.end8187
|
|
logic.end8187:
|
|
%t92 = phi i1 [ true, %logic.from8185 ], [ %t91, %logic.rend8188 ]
|
|
br label %logic.from8189
|
|
logic.from8189:
|
|
br i1 %t92, label %logic.rhs8190, label %logic.end8191
|
|
logic.rhs8190:
|
|
%t93 = load i1, ptr %a3
|
|
br label %logic.rend8192
|
|
logic.rend8192:
|
|
br label %logic.end8191
|
|
logic.end8191:
|
|
%t94 = phi i1 [ false, %logic.from8189 ], [ %t93, %logic.rend8192 ]
|
|
br i1 %t94, label %then8193, label %endif8195
|
|
then8193:
|
|
%t95 = load i1, ptr %a4
|
|
%t96 = xor i1 %t95, true
|
|
br label %logic.from8196
|
|
logic.from8196:
|
|
br i1 %t96, label %logic.end8198, label %logic.rhs8197
|
|
logic.rhs8197:
|
|
%t97 = load %S.C.CXType, ptr %a85
|
|
store %S.C.CXType %t97, ptr %a98
|
|
%t99 = call i32 @clang_isConstQualifiedType(ptr byval(%S.C.CXType) align 8 %a98)
|
|
%t100 = icmp ne i32 %t99, 0
|
|
br label %logic.rend8199
|
|
logic.rend8199:
|
|
br label %logic.end8198
|
|
logic.end8198:
|
|
%t101 = phi i1 [ true, %logic.from8196 ], [ %t100, %logic.rend8199 ]
|
|
br i1 %t101, label %then8200, label %endif8202
|
|
then8200:
|
|
%t102 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5607, i64 3, i64 0 })
|
|
%t103 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t102)
|
|
ret %S.cimport.Mapped %t103
|
|
endif8202:
|
|
br label %endif8195
|
|
endif8195:
|
|
%t104 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0
|
|
%t105 = load i32, ptr %t104
|
|
%t106 = icmp eq i32 %t105, 2
|
|
br label %logic.from8203
|
|
logic.from8203:
|
|
br i1 %t106, label %logic.end8205, label %logic.rhs8204
|
|
logic.rhs8204:
|
|
%t107 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0
|
|
%t108 = load i32, ptr %t107
|
|
%t109 = icmp eq i32 %t108, 111
|
|
br label %logic.rend8206
|
|
logic.rend8206:
|
|
br label %logic.end8205
|
|
logic.end8205:
|
|
%t110 = phi i1 [ true, %logic.from8203 ], [ %t109, %logic.rend8206 ]
|
|
br label %logic.from8207
|
|
logic.from8207:
|
|
br i1 %t110, label %logic.end8209, label %logic.rhs8208
|
|
logic.rhs8208:
|
|
%t111 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0
|
|
%t112 = load i32, ptr %t111
|
|
%t113 = icmp eq i32 %t112, 110
|
|
br label %logic.rend8210
|
|
logic.rend8210:
|
|
br label %logic.end8209
|
|
logic.end8209:
|
|
%t114 = phi i1 [ true, %logic.from8207 ], [ %t113, %logic.rend8210 ]
|
|
br i1 %t114, label %then8211, label %endif8213
|
|
then8211:
|
|
%t115 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5608, i64 3, i64 0 })
|
|
%t116 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t115)
|
|
ret %S.cimport.Mapped %t116
|
|
endif8213:
|
|
%t117 = load ptr, ptr %a1
|
|
%t118 = load %S.C.CXType, ptr %a85
|
|
%t119 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t117, %S.C.CXType %t118, i1 false, i1 false)
|
|
store %S.cimport.Mapped %t119, ptr %a120
|
|
%t121 = getelementptr inbounds %S.cimport.Mapped, ptr %a120, i32 0, i32 2
|
|
%t122 = load i1, ptr %t121
|
|
%t123 = xor i1 %t122, true
|
|
br label %logic.from8214
|
|
logic.from8214:
|
|
br i1 %t123, label %logic.end8216, label %logic.rhs8215
|
|
logic.rhs8215:
|
|
%t124 = getelementptr inbounds %S.cimport.Mapped, ptr %a120, i32 0, i32 0
|
|
%t125 = getelementptr inbounds %S.ast.Type, ptr %t124, i32 0, i32 0
|
|
%t126 = load { ptr, i64, i64 }, ptr %t125
|
|
store { ptr, i64, i64 } %t126, ptr %a127
|
|
store { ptr, i64, i64 } { ptr @.str.5609, i64 4, i64 0 }, ptr %a128
|
|
%t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128)
|
|
%t130 = icmp ne i32 %t129, 0
|
|
br label %logic.rend8217
|
|
logic.rend8217:
|
|
br label %logic.end8216
|
|
logic.end8216:
|
|
%t131 = phi i1 [ true, %logic.from8214 ], [ %t130, %logic.rend8217 ]
|
|
br label %logic.from8218
|
|
logic.from8218:
|
|
br i1 %t131, label %logic.end8220, label %logic.rhs8219
|
|
logic.rhs8219:
|
|
%t132 = getelementptr inbounds %S.cimport.Mapped, ptr %a120, i32 0, i32 0
|
|
%t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i32 0, i32 0
|
|
%t134 = load { ptr, i64, i64 }, ptr %t133
|
|
store { ptr, i64, i64 } %t134, ptr %a135
|
|
store { ptr, i64, i64 } { ptr @.str.5610, i64 5, i64 0 }, ptr %a136
|
|
%t137 = call i32 @finch_str_eq(ptr %a135, ptr %a136)
|
|
%t138 = icmp ne i32 %t137, 0
|
|
br label %logic.rend8221
|
|
logic.rend8221:
|
|
br label %logic.end8220
|
|
logic.end8220:
|
|
%t139 = phi i1 [ true, %logic.from8218 ], [ %t138, %logic.rend8221 ]
|
|
br i1 %t139, label %then8222, label %endif8224
|
|
then8222:
|
|
%t140 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5611, i64 3, i64 0 })
|
|
%t141 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t140)
|
|
ret %S.cimport.Mapped %t141
|
|
endif8224:
|
|
%t142 = getelementptr inbounds %S.cimport.Mapped, ptr %a120, i32 0, i32 0
|
|
%t143 = load %S.ast.Type, ptr %t142
|
|
%t144 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t143)
|
|
%t145 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t144)
|
|
ret %S.cimport.Mapped %t145
|
|
endif8184:
|
|
%t146 = load i32, ptr %a16
|
|
%t147 = icmp eq i32 %t146, 105
|
|
br i1 %t147, label %then8225, label %endif8227
|
|
then8225:
|
|
%t149 = load %S.C.CXType, ptr %a9
|
|
store %S.C.CXType %t149, ptr %a150
|
|
call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a148, ptr byval(%S.C.CXType) align 8 %a150)
|
|
%t151 = load %S.C.CXCursor, ptr %a148
|
|
store %S.C.CXCursor %t151, ptr %a152
|
|
%t153 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a152)
|
|
%t154 = icmp eq i32 %t153, 3
|
|
br i1 %t154, label %then8228, label %endif8230
|
|
then8228:
|
|
%t155 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.5612, i64 23, i64 0 })
|
|
ret %S.cimport.Mapped %t155
|
|
endif8230:
|
|
%t156 = load ptr, ptr %a1
|
|
%t157 = load %S.C.CXType, ptr %a9
|
|
%t158 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t156, %S.C.CXType %t157)
|
|
store { ptr, i64, i64 } %t158, ptr %a159
|
|
%t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1
|
|
%t161 = load i64, ptr %t160
|
|
%t162 = icmp eq i64 %t161, 0
|
|
br i1 %t162, label %then8231, label %endif8233
|
|
then8231:
|
|
%t163 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.5613, i64 36, i64 0 })
|
|
ret %S.cimport.Mapped %t163
|
|
endif8233:
|
|
%t164 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5614, i64 5, i64 0 }, 0
|
|
%t165 = load { ptr, i64, i64 }, ptr %a159
|
|
store { ptr, i64, i64 } %t165, ptr %a166
|
|
call void @finch_str_copy(ptr %a167, ptr %a166)
|
|
%t168 = load { ptr, i64, i64 }, ptr %a167
|
|
%t169 = insertvalue %S.ast.Type %t164, { ptr, i64, i64 } %t168, 2
|
|
%t170 = insertvalue %S.ast.Type %t169, { ptr, i64, i64 } { ptr @.str.5615, i64 1, i64 0 }, 3
|
|
%t171 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t170)
|
|
ret %S.cimport.Mapped %t171
|
|
endif8227:
|
|
%t172 = load i32, ptr %a16
|
|
%t173 = icmp eq i32 %t172, 112
|
|
br i1 %t173, label %then8234, label %endif8236
|
|
then8234:
|
|
%t174 = load ptr, ptr %a1
|
|
%t176 = load %S.C.CXType, ptr %a9
|
|
store %S.C.CXType %t176, ptr %a177
|
|
call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a175, ptr byval(%S.C.CXType) align 8 %a177)
|
|
%t178 = load %S.C.CXType, ptr %a175
|
|
%t179 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t174, %S.C.CXType %t178, i1 false, i1 false)
|
|
store %S.cimport.Mapped %t179, ptr %a180
|
|
%t181 = getelementptr inbounds %S.cimport.Mapped, ptr %a180, i32 0, i32 2
|
|
%t182 = load i1, ptr %t181
|
|
%t183 = xor i1 %t182, true
|
|
br i1 %t183, label %then8237, label %endif8239
|
|
then8237:
|
|
%t184 = load %S.cimport.Mapped, ptr %a180
|
|
ret %S.cimport.Mapped %t184
|
|
endif8239:
|
|
%t185 = getelementptr inbounds %S.cimport.Mapped, ptr %a180, i32 0, i32 0
|
|
%t186 = load %S.ast.Type, ptr %t185
|
|
%t187 = load %S.C.CXType, ptr %a9
|
|
store %S.C.CXType %t187, ptr %a188
|
|
%t189 = call i64 @clang_getArraySize(ptr byval(%S.C.CXType) align 8 %a188)
|
|
%t190 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t186, i64 %t189)
|
|
%t191 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t190)
|
|
ret %S.cimport.Mapped %t191
|
|
endif8236:
|
|
%t192 = load i32, ptr %a16
|
|
%t193 = icmp eq i32 %t192, 23
|
|
br i1 %t193, label %then8240, label %endif8242
|
|
then8240:
|
|
%t194 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.5616, i64 16, i64 0 })
|
|
ret %S.cimport.Mapped %t194
|
|
endif8242:
|
|
%t195 = load %S.C.CXType, ptr %a9
|
|
store %S.C.CXType %t195, ptr %a196
|
|
%t197 = call { i64, i64 } @clang_getTypeSpelling(ptr byval(%S.C.CXType) align 8 %a196)
|
|
store { i64, i64 } %t197, ptr %a198
|
|
%t199 = load %S.C.CXString, ptr %a198
|
|
%t200 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t199)
|
|
store { ptr, i64, i64 } { ptr @.str.5617, i64 17, i64 0 }, ptr %a202
|
|
store { ptr, i64, i64 } %t200, ptr %a203
|
|
call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203)
|
|
%t204 = load { ptr, i64, i64 }, ptr %a201
|
|
store { ptr, i64, i64 } %t204, ptr %a206
|
|
store { ptr, i64, i64 } { ptr @.str.5618, i64 1, i64 0 }, ptr %a207
|
|
call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207)
|
|
%t208 = load { ptr, i64, i64 }, ptr %a205
|
|
%t209 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t208)
|
|
ret %S.cimport.Mapped %t209
|
|
}
|
|
|
|
define internal %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca i64, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca i64, align 16
|
|
%a45 = alloca i1, align 16
|
|
%a46 = alloca i64, align 16
|
|
%a58 = alloca i8, align 16
|
|
%a59 = alloca i64, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
call void @finch_str_copy(ptr %a4, ptr %a3)
|
|
%t5 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store i64 10, ptr %a7
|
|
%t8 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t8, ptr %a9
|
|
store { ptr, i64, i64 } { ptr @.str.5620, i64 2, i64 0 }, ptr %a11
|
|
%t12 = call i32 @finch_str_starts(ptr %a9, ptr %a11)
|
|
%t13 = icmp ne i32 %t12, 0
|
|
br label %logic.from8243
|
|
logic.from8243:
|
|
br i1 %t13, label %logic.end8245, label %logic.rhs8244
|
|
logic.rhs8244:
|
|
%t14 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
store { ptr, i64, i64 } { ptr @.str.5622, i64 2, i64 0 }, ptr %a17
|
|
%t18 = call i32 @finch_str_starts(ptr %a15, ptr %a17)
|
|
%t19 = icmp ne i32 %t18, 0
|
|
br label %logic.rend8246
|
|
logic.rend8246:
|
|
br label %logic.end8245
|
|
logic.end8245:
|
|
%t20 = phi i1 [ true, %logic.from8243 ], [ %t19, %logic.rend8246 ]
|
|
br i1 %t20, label %then8247, label %else8248
|
|
then8247:
|
|
store i64 16, ptr %a7
|
|
%t21 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
%t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t25 = load i64, ptr %t24
|
|
call void @finch_str_sub(ptr %a23, ptr %a22, i64 2, i64 %t25, ptr @.str.5623, i64 327)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t26, ptr %a6
|
|
br label %endif8249
|
|
else8248:
|
|
%t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t28 = load i64, ptr %t27
|
|
%t29 = icmp sgt i64 %t28, 1
|
|
br label %logic.from8250
|
|
logic.from8250:
|
|
br i1 %t29, label %logic.rhs8251, label %logic.end8252
|
|
logic.rhs8251:
|
|
%t30 = load { ptr, i64, i64 }, ptr %a6
|
|
%t31 = extractvalue { ptr, i64, i64 } %t30, 1
|
|
%t32 = icmp uge i64 0, %t31
|
|
br i1 %t32, label %range8253, label %inrange8254
|
|
range8253:
|
|
call void @finch_panic_index(ptr @.str.5624, i64 328, i64 0, i64 %t31)
|
|
unreachable
|
|
inrange8254:
|
|
%t33 = extractvalue { ptr, i64, i64 } %t30, 0
|
|
%t34 = getelementptr inbounds i8, ptr %t33, i64 0
|
|
%t35 = load i8, ptr %t34
|
|
%t36 = icmp eq i8 %t35, 48
|
|
br label %logic.rend8255
|
|
logic.rend8255:
|
|
br label %logic.end8252
|
|
logic.end8252:
|
|
%t37 = phi i1 [ false, %logic.from8250 ], [ %t36, %logic.rend8255 ]
|
|
br i1 %t37, label %then8256, label %endif8258
|
|
then8256:
|
|
store i64 8, ptr %a7
|
|
%t38 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t38, ptr %a39
|
|
%t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t42 = load i64, ptr %t41
|
|
call void @finch_str_sub(ptr %a40, ptr %a39, i64 1, i64 %t42, ptr @.str.5625, i64 330)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a40
|
|
store { ptr, i64, i64 } %t43, ptr %a6
|
|
br label %endif8258
|
|
endif8258:
|
|
br label %endif8249
|
|
endif8249:
|
|
store i64 0, ptr %a44
|
|
store i1 false, ptr %a45
|
|
store i64 0, ptr %a46
|
|
br label %while.cond8259
|
|
while.cond8259:
|
|
%t47 = load i64, ptr %a46
|
|
%t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t49 = load i64, ptr %t48
|
|
%t50 = icmp slt i64 %t47, %t49
|
|
br i1 %t50, label %while.body8260, label %while.end8261
|
|
while.body8260:
|
|
%t51 = load i64, ptr %a46
|
|
%t52 = load { ptr, i64, i64 }, ptr %a6
|
|
%t53 = extractvalue { ptr, i64, i64 } %t52, 1
|
|
%t54 = icmp uge i64 %t51, %t53
|
|
br i1 %t54, label %range8262, label %inrange8263
|
|
range8262:
|
|
call void @finch_panic_index(ptr @.str.5626, i64 336, i64 %t51, i64 %t53)
|
|
unreachable
|
|
inrange8263:
|
|
%t55 = extractvalue { ptr, i64, i64 } %t52, 0
|
|
%t56 = getelementptr inbounds i8, ptr %t55, i64 %t51
|
|
%t57 = load i8, ptr %t56
|
|
store i8 %t57, ptr %a58
|
|
store i64 99, ptr %a59
|
|
%t60 = load i8, ptr %a58
|
|
%t61 = icmp uge i8 %t60, 48
|
|
br label %logic.from8264
|
|
logic.from8264:
|
|
br i1 %t61, label %logic.rhs8265, label %logic.end8266
|
|
logic.rhs8265:
|
|
%t62 = load i8, ptr %a58
|
|
%t63 = icmp ule i8 %t62, 57
|
|
br label %logic.rend8267
|
|
logic.rend8267:
|
|
br label %logic.end8266
|
|
logic.end8266:
|
|
%t64 = phi i1 [ false, %logic.from8264 ], [ %t63, %logic.rend8267 ]
|
|
br i1 %t64, label %then8268, label %else8269
|
|
then8268:
|
|
%t65 = load i8, ptr %a58
|
|
%t66 = zext i8 %t65 to i64
|
|
%t67 = zext i8 48 to i64
|
|
%t68 = sub i64 %t66, %t67
|
|
store i64 %t68, ptr %a59
|
|
br label %endif8270
|
|
else8269:
|
|
%t69 = load i8, ptr %a58
|
|
%t70 = icmp uge i8 %t69, 97
|
|
br label %logic.from8271
|
|
logic.from8271:
|
|
br i1 %t70, label %logic.rhs8272, label %logic.end8273
|
|
logic.rhs8272:
|
|
%t71 = load i8, ptr %a58
|
|
%t72 = icmp ule i8 %t71, 102
|
|
br label %logic.rend8274
|
|
logic.rend8274:
|
|
br label %logic.end8273
|
|
logic.end8273:
|
|
%t73 = phi i1 [ false, %logic.from8271 ], [ %t72, %logic.rend8274 ]
|
|
br i1 %t73, label %then8275, label %else8276
|
|
then8275:
|
|
%t74 = load i8, ptr %a58
|
|
%t75 = zext i8 %t74 to i64
|
|
%t76 = zext i8 97 to i64
|
|
%t77 = sub i64 %t75, %t76
|
|
%t78 = add i64 %t77, 10
|
|
store i64 %t78, ptr %a59
|
|
br label %endif8277
|
|
else8276:
|
|
%t79 = load i8, ptr %a58
|
|
%t80 = icmp uge i8 %t79, 65
|
|
br label %logic.from8278
|
|
logic.from8278:
|
|
br i1 %t80, label %logic.rhs8279, label %logic.end8280
|
|
logic.rhs8279:
|
|
%t81 = load i8, ptr %a58
|
|
%t82 = icmp ule i8 %t81, 70
|
|
br label %logic.rend8281
|
|
logic.rend8281:
|
|
br label %logic.end8280
|
|
logic.end8280:
|
|
%t83 = phi i1 [ false, %logic.from8278 ], [ %t82, %logic.rend8281 ]
|
|
br i1 %t83, label %then8282, label %endif8284
|
|
then8282:
|
|
%t84 = load i8, ptr %a58
|
|
%t85 = zext i8 %t84 to i64
|
|
%t86 = zext i8 65 to i64
|
|
%t87 = sub i64 %t85, %t86
|
|
%t88 = add i64 %t87, 10
|
|
store i64 %t88, ptr %a59
|
|
br label %endif8284
|
|
endif8284:
|
|
br label %endif8277
|
|
endif8277:
|
|
br label %endif8270
|
|
endif8270:
|
|
%t89 = load i64, ptr %a59
|
|
%t90 = load i64, ptr %a7
|
|
%t91 = icmp sge i64 %t89, %t90
|
|
br i1 %t91, label %then8285, label %endif8287
|
|
then8285:
|
|
br label %while.end8261
|
|
endif8287:
|
|
%t92 = load i64, ptr %a44
|
|
%t93 = load i64, ptr %a7
|
|
%t94 = mul i64 %t92, %t93
|
|
%t95 = load i64, ptr %a59
|
|
%t96 = add i64 %t94, %t95
|
|
store i64 %t96, ptr %a44
|
|
store i1 true, ptr %a45
|
|
%t97 = load i64, ptr %a46
|
|
%t98 = add i64 %t97, 1
|
|
store i64 %t98, ptr %a46
|
|
br label %while.cond8259
|
|
while.end8261:
|
|
br label %while.cond8288
|
|
while.cond8288:
|
|
%t99 = load i64, ptr %a46
|
|
%t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t101 = load i64, ptr %t100
|
|
%t102 = icmp slt i64 %t99, %t101
|
|
br i1 %t102, label %while.body8289, label %while.end8290
|
|
while.body8289:
|
|
store { ptr, i64, i64 } { ptr @.str.5627, i64 4, i64 0 }, ptr %a103
|
|
%t105 = load i64, ptr %a46
|
|
%t106 = load { ptr, i64, i64 }, ptr %a6
|
|
%t107 = extractvalue { ptr, i64, i64 } %t106, 1
|
|
%t108 = icmp uge i64 %t105, %t107
|
|
br i1 %t108, label %range8291, label %inrange8292
|
|
range8291:
|
|
call void @finch_panic_index(ptr @.str.5629, i64 354, i64 %t105, i64 %t107)
|
|
unreachable
|
|
inrange8292:
|
|
%t109 = extractvalue { ptr, i64, i64 } %t106, 0
|
|
%t110 = getelementptr inbounds i8, ptr %t109, i64 %t105
|
|
%t111 = load i8, ptr %t110
|
|
call void @finch_str_from_char(ptr %a112, i8 signext %t111)
|
|
%t113 = load { ptr, i64, i64 }, ptr %a112
|
|
store { ptr, i64, i64 } %t113, ptr %a114
|
|
%t115 = call i64 @finch_str_find(ptr %a103, ptr %a114)
|
|
%t116 = icmp sge i64 %t115, 0
|
|
%t117 = xor i1 %t116, true
|
|
br i1 %t117, label %then8293, label %endif8295
|
|
then8293:
|
|
ret %S.cimport.Number zeroinitializer
|
|
endif8295:
|
|
%t118 = load i64, ptr %a46
|
|
%t119 = add i64 %t118, 1
|
|
store i64 %t119, ptr %a46
|
|
br label %while.cond8288
|
|
while.end8290:
|
|
%t120 = load i1, ptr %a45
|
|
%t121 = xor i1 %t120, true
|
|
br label %logic.from8296
|
|
logic.from8296:
|
|
br i1 %t121, label %logic.rhs8297, label %logic.end8298
|
|
logic.rhs8297:
|
|
%t122 = load i64, ptr %a7
|
|
%t123 = icmp ne i64 %t122, 8
|
|
br label %logic.rend8299
|
|
logic.rend8299:
|
|
br label %logic.end8298
|
|
logic.end8298:
|
|
%t124 = phi i1 [ false, %logic.from8296 ], [ %t123, %logic.rend8299 ]
|
|
br i1 %t124, label %then8300, label %endif8302
|
|
then8300:
|
|
ret %S.cimport.Number zeroinitializer
|
|
endif8302:
|
|
%t125 = load i64, ptr %a44
|
|
%t126 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t125, 1
|
|
%t127 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t126, 0
|
|
%t128 = insertvalue %S.cimport.Number %t127, i1 true, 1
|
|
ret %S.cimport.Number %t128
|
|
}
|
|
|
|
define internal void @finch.copy.S_cimport_Number(ptr %dst, ptr %src) {
|
|
entry:
|
|
|
|
%t1 = load %S.cimport.Number, ptr %src
|
|
store %S.cimport.Number %t1, ptr %dst
|
|
%t2 = getelementptr inbounds %S.cimport.Number, ptr %dst, i32 0, i32 0
|
|
%t3 = getelementptr inbounds %S.cimport.Number, ptr %src, i32 0, i32 0
|
|
call void @finch.copy.S_cimport_CConst(ptr %t2, ptr %t3)
|
|
ret void
|
|
}
|
|
|
|
define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.C.CXCursor, align 16
|
|
%a3 = alloca ptr, align 16
|
|
%a4 = alloca i32, align 16
|
|
%a9 = alloca %S.C.CXSourceRange, align 16
|
|
%a11 = alloca %S.C.CXCursor, align 16
|
|
%a13 = alloca %S.C.CXSourceRange, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca i64, align 16
|
|
%a24 = alloca %S.C.CXToken, align 16
|
|
%a36 = alloca %S.C.CXToken, align 16
|
|
%a38 = alloca [32 x i8], align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a94 = alloca i1, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca i1, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a194 = alloca { ptr, i64, i64 }, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a212 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca double, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a226 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca double, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a236 = alloca { ptr, i64, i64 }, align 16
|
|
%a243 = alloca %S.cimport.Number, align 16
|
|
%a255 = alloca %S.cimport.Number, align 16
|
|
%a256 = alloca %S.cimport.Number, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.C.CXCursor %p1, ptr %a2
|
|
store ptr null, ptr %a3
|
|
store i32 0, ptr %a4
|
|
%t5 = load ptr, ptr %a1
|
|
%t6 = icmp eq ptr %t5, null
|
|
br i1 %t6, label %panic8303, label %ok8304
|
|
panic8303:
|
|
call void @finch_panic(ptr @.str.5630, i64 369, ptr @.str.5631)
|
|
unreachable
|
|
ok8304:
|
|
%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.cond8305
|
|
for.cond8305:
|
|
%t18 = load i64, ptr %a17
|
|
%t19 = icmp slt i64 %t18, %t16
|
|
br i1 %t19, label %for.body8306, label %for.end8308
|
|
for.body8306:
|
|
%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 %then8309, label %endif8311
|
|
then8309:
|
|
br label %for.step8307
|
|
endif8311:
|
|
%t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t28 = load ptr, ptr %a1
|
|
%t29 = icmp eq ptr %t28, null
|
|
br i1 %t29, label %panic8312, label %ok8313
|
|
panic8312:
|
|
call void @finch_panic(ptr @.str.5632, i64 375, ptr @.str.5633)
|
|
unreachable
|
|
ok8313:
|
|
%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.step8307
|
|
for.step8307:
|
|
%t45 = load i64, ptr %a17
|
|
%t46 = add i64 %t45, 1
|
|
store i64 %t46, ptr %a17
|
|
br label %for.cond8305
|
|
for.end8308:
|
|
%t47 = load ptr, ptr %a1
|
|
%t48 = icmp eq ptr %t47, null
|
|
br i1 %t48, label %panic8314, label %ok8315
|
|
panic8314:
|
|
call void @finch_panic(ptr @.str.5634, i64 377, ptr @.str.5635)
|
|
unreachable
|
|
ok8315:
|
|
%t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 1
|
|
%t50 = load ptr, ptr %t49
|
|
%t51 = load ptr, ptr %a3
|
|
%t52 = load i32, ptr %a4
|
|
call void @clang_disposeTokens(ptr %t50, ptr %t51, i32 %t52)
|
|
br label %while.cond8316
|
|
while.cond8316:
|
|
%t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t54 = load i64, ptr %t53
|
|
%t55 = icmp sge i64 %t54, 2
|
|
br label %logic.from8319
|
|
logic.from8319:
|
|
br i1 %t55, label %logic.rhs8320, label %logic.end8321
|
|
logic.rhs8320:
|
|
%t56 = load { ptr, i64, i64 }, ptr %a14
|
|
%t57 = extractvalue { ptr, i64, i64 } %t56, 1
|
|
%t58 = icmp uge i64 0, %t57
|
|
br i1 %t58, label %range8322, label %inrange8323
|
|
range8322:
|
|
call void @finch_panic_index(ptr @.str.5636, i64 379, i64 0, i64 %t57)
|
|
unreachable
|
|
inrange8323:
|
|
%t59 = extractvalue { ptr, i64, i64 } %t56, 0
|
|
%t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i64 0
|
|
%t61 = load { ptr, i64, i64 }, ptr %t60
|
|
store { ptr, i64, i64 } %t61, ptr %a62
|
|
store { ptr, i64, i64 } { ptr @.str.5637, i64 1, i64 0 }, ptr %a63
|
|
%t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63)
|
|
%t65 = icmp ne i32 %t64, 0
|
|
br label %logic.rend8324
|
|
logic.rend8324:
|
|
br label %logic.end8321
|
|
logic.end8321:
|
|
%t66 = phi i1 [ false, %logic.from8319 ], [ %t65, %logic.rend8324 ]
|
|
br label %logic.from8325
|
|
logic.from8325:
|
|
br i1 %t66, label %logic.rhs8326, label %logic.end8327
|
|
logic.rhs8326:
|
|
%t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t68 = load i64, ptr %t67
|
|
%t69 = sub i64 %t68, 1
|
|
%t70 = load { ptr, i64, i64 }, ptr %a14
|
|
%t71 = extractvalue { ptr, i64, i64 } %t70, 1
|
|
%t72 = icmp uge i64 %t69, %t71
|
|
br i1 %t72, label %range8328, label %inrange8329
|
|
range8328:
|
|
call void @finch_panic_index(ptr @.str.5638, i64 379, i64 %t69, i64 %t71)
|
|
unreachable
|
|
inrange8329:
|
|
%t73 = extractvalue { ptr, i64, i64 } %t70, 0
|
|
%t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i64 %t69
|
|
%t75 = load { ptr, i64, i64 }, ptr %t74
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.5639, i64 1, i64 0 }, ptr %a77
|
|
%t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77)
|
|
%t79 = icmp ne i32 %t78, 0
|
|
br label %logic.rend8330
|
|
logic.rend8330:
|
|
br label %logic.end8327
|
|
logic.end8327:
|
|
%t80 = phi i1 [ false, %logic.from8325 ], [ %t79, %logic.rend8330 ]
|
|
br i1 %t80, label %while.body8317, label %while.end8318
|
|
while.body8317:
|
|
%t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t82 = load i64, ptr %t81
|
|
%t83 = icmp uge i64 0, %t82
|
|
br i1 %t83, label %range8331, label %inrange8332
|
|
range8331:
|
|
call void @finch_panic_index(ptr @.str.5640, i64 380, i64 0, i64 %t82)
|
|
unreachable
|
|
inrange8332:
|
|
%t84 = load ptr, ptr %a14
|
|
%t85 = getelementptr inbounds { ptr, i64, i64 }, ptr %t84, i64 0
|
|
%t86 = load { ptr, i64, i64 }, ptr %t85
|
|
call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t88 = load i64, ptr %t87
|
|
%t89 = icmp eq i64 %t88, 0
|
|
br i1 %t89, label %panic8333, label %ok8334
|
|
panic8333:
|
|
call void @finch_panic(ptr @.str.5641, i64 381, ptr @.str.5642)
|
|
unreachable
|
|
ok8334:
|
|
%t90 = sub i64 %t88, 1
|
|
%t91 = load ptr, ptr %a14
|
|
%t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t90
|
|
%t93 = load { ptr, i64, i64 }, ptr %t92
|
|
store i64 %t90, ptr %t87
|
|
br label %while.cond8316
|
|
while.end8318:
|
|
store i1 false, ptr %a94
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t96 = load i64, ptr %t95
|
|
%t97 = icmp eq i64 %t96, 2
|
|
br label %logic.from8335
|
|
logic.from8335:
|
|
br i1 %t97, label %logic.rhs8336, label %logic.end8337
|
|
logic.rhs8336:
|
|
%t98 = load { ptr, i64, i64 }, ptr %a14
|
|
%t99 = extractvalue { ptr, i64, i64 } %t98, 1
|
|
%t100 = icmp uge i64 0, %t99
|
|
br i1 %t100, label %range8338, label %inrange8339
|
|
range8338:
|
|
call void @finch_panic_index(ptr @.str.5643, i64 384, i64 0, i64 %t99)
|
|
unreachable
|
|
inrange8339:
|
|
%t101 = extractvalue { ptr, i64, i64 } %t98, 0
|
|
%t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t101, i64 0
|
|
%t103 = load { ptr, i64, i64 }, ptr %t102
|
|
store { ptr, i64, i64 } %t103, ptr %a104
|
|
store { ptr, i64, i64 } { ptr @.str.5644, i64 1, i64 0 }, ptr %a105
|
|
%t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105)
|
|
%t107 = icmp ne i32 %t106, 0
|
|
br label %logic.rend8340
|
|
logic.rend8340:
|
|
br label %logic.end8337
|
|
logic.end8337:
|
|
%t108 = phi i1 [ false, %logic.from8335 ], [ %t107, %logic.rend8340 ]
|
|
br i1 %t108, label %then8341, label %endif8343
|
|
then8341:
|
|
store i1 true, ptr %a94
|
|
%t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t110 = load i64, ptr %t109
|
|
%t111 = icmp uge i64 0, %t110
|
|
br i1 %t111, label %range8344, label %inrange8345
|
|
range8344:
|
|
call void @finch_panic_index(ptr @.str.5645, i64 386, i64 0, i64 %t110)
|
|
unreachable
|
|
inrange8345:
|
|
%t112 = load ptr, ptr %a14
|
|
%t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 0
|
|
%t114 = load { ptr, i64, i64 }, ptr %t113
|
|
call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
br label %endif8343
|
|
endif8343:
|
|
%t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1
|
|
%t116 = load i64, ptr %t115
|
|
%t117 = icmp ne i64 %t116, 1
|
|
br i1 %t117, label %then8346, label %endif8348
|
|
then8346:
|
|
ret %S.cimport.Number zeroinitializer
|
|
endif8348:
|
|
%t118 = load { ptr, i64, i64 }, ptr %a14
|
|
%t119 = extractvalue { ptr, i64, i64 } %t118, 1
|
|
%t120 = icmp uge i64 0, %t119
|
|
br i1 %t120, label %range8349, label %inrange8350
|
|
range8349:
|
|
call void @finch_panic_index(ptr @.str.5646, i64 391, i64 0, i64 %t119)
|
|
unreachable
|
|
inrange8350:
|
|
%t121 = extractvalue { ptr, i64, i64 } %t118, 0
|
|
%t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i64 0
|
|
%t123 = load { ptr, i64, i64 }, ptr %t122
|
|
store { ptr, i64, i64 } %t123, ptr %a124
|
|
call void @finch_str_copy(ptr %a125, ptr %a124)
|
|
%t126 = load { ptr, i64, i64 }, ptr %a125
|
|
store { ptr, i64, i64 } %t126, ptr %a127
|
|
%t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %a127, i32 0, i32 1
|
|
%t129 = load i64, ptr %t128
|
|
%t130 = icmp eq i64 %t129, 0
|
|
br label %logic.from8351
|
|
logic.from8351:
|
|
br i1 %t130, label %logic.end8353, label %logic.rhs8352
|
|
logic.rhs8352:
|
|
%t131 = load { ptr, i64, i64 }, ptr %a127
|
|
%t132 = extractvalue { ptr, i64, i64 } %t131, 1
|
|
%t133 = icmp uge i64 0, %t132
|
|
br i1 %t133, label %range8354, label %inrange8355
|
|
range8354:
|
|
call void @finch_panic_index(ptr @.str.5647, i64 392, i64 0, i64 %t132)
|
|
unreachable
|
|
inrange8355:
|
|
%t134 = extractvalue { ptr, i64, i64 } %t131, 0
|
|
%t135 = getelementptr inbounds i8, ptr %t134, i64 0
|
|
%t136 = load i8, ptr %t135
|
|
%t137 = icmp uge i8 %t136, 48
|
|
br label %logic.from8356
|
|
logic.from8356:
|
|
br i1 %t137, label %logic.rhs8357, label %logic.end8358
|
|
logic.rhs8357:
|
|
%t138 = load { ptr, i64, i64 }, ptr %a127
|
|
%t139 = extractvalue { ptr, i64, i64 } %t138, 1
|
|
%t140 = icmp uge i64 0, %t139
|
|
br i1 %t140, label %range8359, label %inrange8360
|
|
range8359:
|
|
call void @finch_panic_index(ptr @.str.5648, i64 392, i64 0, i64 %t139)
|
|
unreachable
|
|
inrange8360:
|
|
%t141 = extractvalue { ptr, i64, i64 } %t138, 0
|
|
%t142 = getelementptr inbounds i8, ptr %t141, i64 0
|
|
%t143 = load i8, ptr %t142
|
|
%t144 = icmp ule i8 %t143, 57
|
|
br label %logic.rend8361
|
|
logic.rend8361:
|
|
br label %logic.end8358
|
|
logic.end8358:
|
|
%t145 = phi i1 [ false, %logic.from8356 ], [ %t144, %logic.rend8361 ]
|
|
br label %logic.from8362
|
|
logic.from8362:
|
|
br i1 %t145, label %logic.end8364, label %logic.rhs8363
|
|
logic.rhs8363:
|
|
%t146 = load { ptr, i64, i64 }, ptr %a127
|
|
%t147 = extractvalue { ptr, i64, i64 } %t146, 1
|
|
%t148 = icmp uge i64 0, %t147
|
|
br i1 %t148, label %range8365, label %inrange8366
|
|
range8365:
|
|
call void @finch_panic_index(ptr @.str.5649, i64 392, i64 0, i64 %t147)
|
|
unreachable
|
|
inrange8366:
|
|
%t149 = extractvalue { ptr, i64, i64 } %t146, 0
|
|
%t150 = getelementptr inbounds i8, ptr %t149, i64 0
|
|
%t151 = load i8, ptr %t150
|
|
%t152 = icmp eq i8 %t151, 46
|
|
br label %logic.rend8367
|
|
logic.rend8367:
|
|
br label %logic.end8364
|
|
logic.end8364:
|
|
%t153 = phi i1 [ true, %logic.from8362 ], [ %t152, %logic.rend8367 ]
|
|
%t154 = xor i1 %t153, true
|
|
br label %logic.rend8368
|
|
logic.rend8368:
|
|
br label %logic.end8353
|
|
logic.end8353:
|
|
%t155 = phi i1 [ true, %logic.from8351 ], [ %t154, %logic.rend8368 ]
|
|
br i1 %t155, label %then8369, label %endif8371
|
|
then8369:
|
|
ret %S.cimport.Number zeroinitializer
|
|
endif8371:
|
|
%t156 = load { ptr, i64, i64 }, ptr %a127
|
|
store { ptr, i64, i64 } %t156, ptr %a157
|
|
store { ptr, i64, i64 } { ptr @.str.5651, i64 1, i64 0 }, ptr %a159
|
|
%t160 = call i64 @finch_str_find(ptr %a157, ptr %a159)
|
|
%t161 = icmp sge i64 %t160, 0
|
|
br label %logic.from8372
|
|
logic.from8372:
|
|
br i1 %t161, label %logic.end8374, label %logic.rhs8373
|
|
logic.rhs8373:
|
|
%t162 = load { ptr, i64, i64 }, ptr %a127
|
|
store { ptr, i64, i64 } %t162, ptr %a163
|
|
store { ptr, i64, i64 } { ptr @.str.5653, i64 1, i64 0 }, ptr %a165
|
|
%t166 = call i64 @finch_str_find(ptr %a163, ptr %a165)
|
|
%t167 = icmp sge i64 %t166, 0
|
|
br label %logic.rend8375
|
|
logic.rend8375:
|
|
br label %logic.end8374
|
|
logic.end8374:
|
|
%t168 = phi i1 [ true, %logic.from8372 ], [ %t167, %logic.rend8375 ]
|
|
br label %logic.from8376
|
|
logic.from8376:
|
|
br i1 %t168, label %logic.end8378, label %logic.rhs8377
|
|
logic.rhs8377:
|
|
%t169 = load { ptr, i64, i64 }, ptr %a127
|
|
store { ptr, i64, i64 } %t169, ptr %a170
|
|
store { ptr, i64, i64 } { ptr @.str.5655, i64 1, i64 0 }, ptr %a172
|
|
%t173 = call i64 @finch_str_find(ptr %a170, ptr %a172)
|
|
%t174 = icmp sge i64 %t173, 0
|
|
br label %logic.rend8379
|
|
logic.rend8379:
|
|
br label %logic.end8378
|
|
logic.end8378:
|
|
%t175 = phi i1 [ true, %logic.from8376 ], [ %t174, %logic.rend8379 ]
|
|
br label %logic.from8380
|
|
logic.from8380:
|
|
br i1 %t175, label %logic.rhs8381, label %logic.end8382
|
|
logic.rhs8381:
|
|
%t176 = load { ptr, i64, i64 }, ptr %a127
|
|
store { ptr, i64, i64 } %t176, ptr %a177
|
|
store { ptr, i64, i64 } { ptr @.str.5657, i64 2, i64 0 }, ptr %a179
|
|
%t180 = call i32 @finch_str_starts(ptr %a177, ptr %a179)
|
|
%t181 = icmp ne i32 %t180, 0
|
|
%t182 = xor i1 %t181, true
|
|
br label %logic.rend8383
|
|
logic.rend8383:
|
|
br label %logic.end8382
|
|
logic.end8382:
|
|
%t183 = phi i1 [ false, %logic.from8380 ], [ %t182, %logic.rend8383 ]
|
|
store i1 %t183, ptr %a184
|
|
%t185 = load i1, ptr %a184
|
|
br i1 %t185, label %then8384, label %endif8386
|
|
then8384:
|
|
%t186 = load { ptr, i64, i64 }, ptr %a127
|
|
store { ptr, i64, i64 } %t186, ptr %a187
|
|
call void @finch_str_copy(ptr %a188, ptr %a187)
|
|
%t189 = load { ptr, i64, i64 }, ptr %a188
|
|
store { ptr, i64, i64 } %t189, ptr %a190
|
|
br label %while.cond8387
|
|
while.cond8387:
|
|
%t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1
|
|
%t192 = load i64, ptr %t191
|
|
%t193 = icmp sgt i64 %t192, 0
|
|
br label %logic.from8390
|
|
logic.from8390:
|
|
br i1 %t193, label %logic.rhs8391, label %logic.end8392
|
|
logic.rhs8391:
|
|
store { ptr, i64, i64 } { ptr @.str.5658, i64 4, i64 0 }, ptr %a194
|
|
%t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1
|
|
%t197 = load i64, ptr %t196
|
|
%t198 = sub i64 %t197, 1
|
|
%t199 = load { ptr, i64, i64 }, ptr %a190
|
|
%t200 = extractvalue { ptr, i64, i64 } %t199, 1
|
|
%t201 = icmp uge i64 %t198, %t200
|
|
br i1 %t201, label %range8393, label %inrange8394
|
|
range8393:
|
|
call void @finch_panic_index(ptr @.str.5660, i64 398, i64 %t198, i64 %t200)
|
|
unreachable
|
|
inrange8394:
|
|
%t202 = extractvalue { ptr, i64, i64 } %t199, 0
|
|
%t203 = getelementptr inbounds i8, ptr %t202, i64 %t198
|
|
%t204 = load i8, ptr %t203
|
|
call void @finch_str_from_char(ptr %a205, i8 signext %t204)
|
|
%t206 = load { ptr, i64, i64 }, ptr %a205
|
|
store { ptr, i64, i64 } %t206, ptr %a207
|
|
%t208 = call i64 @finch_str_find(ptr %a194, ptr %a207)
|
|
%t209 = icmp sge i64 %t208, 0
|
|
br label %logic.rend8395
|
|
logic.rend8395:
|
|
br label %logic.end8392
|
|
logic.end8392:
|
|
%t210 = phi i1 [ false, %logic.from8390 ], [ %t209, %logic.rend8395 ]
|
|
br i1 %t210, label %while.body8388, label %while.end8389
|
|
while.body8388:
|
|
%t211 = load { ptr, i64, i64 }, ptr %a190
|
|
store { ptr, i64, i64 } %t211, ptr %a212
|
|
%t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1
|
|
%t215 = load i64, ptr %t214
|
|
%t216 = sub i64 %t215, 1
|
|
call void @finch_str_sub(ptr %a213, ptr %a212, i64 0, i64 %t216, ptr @.str.5661, i64 399)
|
|
%t217 = load { ptr, i64, i64 }, ptr %a213
|
|
store { ptr, i64, i64 } %t217, ptr %a190
|
|
br label %while.cond8387
|
|
while.end8389:
|
|
%t218 = load { ptr, i64, i64 }, ptr %a190
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a219
|
|
store double 0.0, ptr %a220
|
|
store { ptr, i64, i64 } %t218, ptr %a221
|
|
%t222 = call i32 @finch_str_try_float(ptr %a221, ptr %a220, ptr %a219)
|
|
%t223 = icmp eq i32 %t222, 0
|
|
%t224 = load { ptr, i64, i64 }, ptr %a219
|
|
%t225 = load double, ptr %a220
|
|
br i1 %t223, label %or.failed8396, label %or.ok8397
|
|
or.failed8396:
|
|
store { ptr, i64, i64 } %t224, ptr %a226
|
|
ret %S.cimport.Number zeroinitializer
|
|
or.ok8397:
|
|
store double %t225, ptr %a227
|
|
%t228 = load i1, ptr %a94
|
|
br i1 %t228, label %then8398, label %endif8400
|
|
then8398:
|
|
%t229 = load double, ptr %a227
|
|
%t230 = fsub double 0.0, %t229
|
|
store double %t230, ptr %a227
|
|
br label %endif8400
|
|
endif8400:
|
|
%t231 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0
|
|
%t232 = load double, ptr %a227
|
|
%t233 = insertvalue %S.cimport.CConst %t231, double %t232, 2
|
|
%t234 = load { ptr, i64, i64 }, ptr %a190
|
|
store { ptr, i64, i64 } %t234, ptr %a235
|
|
call void @finch_str_copy(ptr %a236, ptr %a235)
|
|
%t237 = load { ptr, i64, i64 }, ptr %a236
|
|
%t238 = insertvalue %S.cimport.CConst %t233, { ptr, i64, i64 } %t237, 3
|
|
%t239 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t238, 0
|
|
%t240 = insertvalue %S.cimport.Number %t239, i1 true, 1
|
|
ret %S.cimport.Number %t240
|
|
endif8386:
|
|
%t241 = load { ptr, i64, i64 }, ptr %a127
|
|
%t242 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t241)
|
|
store %S.cimport.Number %t242, ptr %a243
|
|
%t244 = getelementptr inbounds %S.cimport.Number, ptr %a243, i32 0, i32 1
|
|
%t245 = load i1, ptr %t244
|
|
br label %logic.from8401
|
|
logic.from8401:
|
|
br i1 %t245, label %logic.rhs8402, label %logic.end8403
|
|
logic.rhs8402:
|
|
%t246 = load i1, ptr %a94
|
|
br label %logic.rend8404
|
|
logic.rend8404:
|
|
br label %logic.end8403
|
|
logic.end8403:
|
|
%t247 = phi i1 [ false, %logic.from8401 ], [ %t246, %logic.rend8404 ]
|
|
br i1 %t247, label %then8405, label %endif8407
|
|
then8405:
|
|
%t248 = getelementptr inbounds %S.cimport.Number, ptr %a243, i32 0, i32 0
|
|
%t249 = getelementptr inbounds %S.cimport.CConst, ptr %t248, i32 0, i32 1
|
|
%t250 = load i64, ptr %t249
|
|
%t251 = sub i64 0, %t250
|
|
%t252 = getelementptr inbounds %S.cimport.Number, ptr %a243, i32 0, i32 0
|
|
%t253 = getelementptr inbounds %S.cimport.CConst, ptr %t252, i32 0, i32 1
|
|
store i64 %t251, ptr %t253
|
|
br label %endif8407
|
|
endif8407:
|
|
%t254 = load %S.cimport.Number, ptr %a243
|
|
store %S.cimport.Number %t254, ptr %a255
|
|
call void @finch.copy.S_cimport_Number(ptr %a256, ptr %a255)
|
|
%t257 = load %S.cimport.Number, ptr %a256
|
|
ret %S.cimport.Number %t257
|
|
}
|
|
|
|
define internal i32 @finch.cimport.visitTop(%S.C.CXCursor %p0, %S.C.CXCursor %p1, ptr %p2) {
|
|
entry:
|
|
%a1 = alloca %S.C.CXCursor, align 16
|
|
%a2 = alloca %S.C.CXCursor, align 16
|
|
%a3 = alloca ptr, align 16
|
|
%a5 = alloca ptr, align 16
|
|
store %S.C.CXCursor %p0, ptr %a1
|
|
store %S.C.CXCursor %p1, ptr %a2
|
|
store ptr %p2, ptr %a3
|
|
%t4 = load ptr, ptr %a3
|
|
store ptr %t4, ptr %a5
|
|
%t6 = load ptr, ptr %a5
|
|
%t7 = load %S.C.CXCursor, ptr %a1
|
|
call void @finch.cimport.visit(ptr %t6, %S.C.CXCursor %t7)
|
|
ret i32 1
|
|
}
|
|
|
|
define internal i32 @finch.c.cimport.visitTop(ptr 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.cimport.visit(ptr %p0, %S.C.CXCursor %p1) {
|
|
entry:
|
|
%a1 = alloca ptr, align 16
|
|
%a2 = alloca %S.C.CXCursor, align 16
|
|
%a4 = alloca %S.C.CXCursor, align 16
|
|
%a6 = alloca [32 x i8], align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca %S.C.CXCursor, align 16
|
|
%a13 = alloca i32, align 16
|
|
%a16 = alloca %S.C.CXType, align 16
|
|
%a17 = alloca %S.C.CXType, align 16
|
|
%a19 = alloca %S.C.CXCursor, align 16
|
|
%a21 = alloca %S.C.CXType, align 16
|
|
%a23 = alloca %S.C.CXType, align 16
|
|
%a27 = alloca %S.C.CXCursor, align 16
|
|
%a29 = alloca %S.C.CXType, align 16
|
|
%a31 = alloca %S.C.CXCursor, align 16
|
|
%a33 = alloca [32 x i8], align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca i1, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca i32, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca %S.cimport.CFunc, align 16
|
|
%a123 = alloca %S.C.CXCursor, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca i32, align 16
|
|
%a144 = alloca %S.cimport.CFunc, align 16
|
|
%a145 = alloca %S.cimport.CFunc, align 16
|
|
%a147 = alloca %S.C.CXType, align 16
|
|
%a148 = alloca %S.C.CXType, align 16
|
|
%a150 = alloca %S.C.CXCursor, align 16
|
|
%a152 = alloca %S.C.CXType, align 16
|
|
%a154 = alloca %S.C.CXType, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca i32, align 16
|
|
%a176 = alloca %S.cimport.CFunc, align 16
|
|
%a177 = alloca %S.cimport.CFunc, align 16
|
|
%a180 = alloca %S.C.CXType, align 16
|
|
%a182 = alloca %S.C.CXType, align 16
|
|
%a185 = alloca %S.cimport.Mapped, align 16
|
|
%a191 = alloca %S.ast.Type, align 16
|
|
%a192 = alloca %S.ast.Type, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca %S.C.CXType, align 16
|
|
%a204 = alloca i64, align 16
|
|
%a206 = alloca i64, align 16
|
|
%a214 = alloca %S.C.CXType, align 16
|
|
%a216 = alloca %S.C.CXType, align 16
|
|
%a221 = alloca %S.cimport.Mapped, align 16
|
|
%a228 = alloca %S.ast.Type, align 16
|
|
%a229 = alloca %S.ast.Type, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca %S.C.CXType, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca i32, align 16
|
|
%a265 = alloca %S.cimport.CFunc, align 16
|
|
%a266 = alloca %S.cimport.CFunc, align 16
|
|
%a271 = alloca %S.C.CXCursor, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca %S.C.CXType, align 16
|
|
%a286 = alloca %S.C.CXCursor, align 16
|
|
%a289 = alloca %S.cimport.Mapped, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca i32, align 16
|
|
%a310 = alloca %S.ast.Type, align 16
|
|
%a311 = alloca %S.ast.Type, align 16
|
|
%a316 = alloca %S.C.CXCursor, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca %S.C.CXCursor, align 16
|
|
%a334 = alloca [32 x i8], align 16
|
|
%a337 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a351 = alloca { ptr, i64, i64 }, align 16
|
|
%a352 = alloca i32, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a363 = alloca { ptr, i64, i64 }, align 16
|
|
%a368 = alloca %S.C.CXCursor, align 16
|
|
%a378 = alloca { ptr, i64, i64 }, align 16
|
|
%a383 = alloca %S.C.CXCursor, align 16
|
|
%a391 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca i32, align 16
|
|
%a405 = alloca %S.C.CXCursor, align 16
|
|
%a409 = alloca %S.C.CXCursor, align 16
|
|
%a416 = alloca %S.cimport.Number, align 16
|
|
%a424 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a437 = alloca i32, align 16
|
|
%a447 = alloca %S.cimport.CConst, align 16
|
|
%a448 = alloca %S.cimport.CConst, align 16
|
|
store ptr %p0, ptr %a1
|
|
store %S.C.CXCursor %p1, ptr %a2
|
|
%t3 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t3, ptr %a4
|
|
%t5 = call { 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 %then8408, label %else8409
|
|
then8408:
|
|
%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 %then8411, label %endif8413
|
|
then8411:
|
|
%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 %panic8414, label %ok8415
|
|
panic8414:
|
|
call void @finch_panic(ptr @.str.5662, i64 433, ptr @.str.5663)
|
|
unreachable
|
|
ok8415:
|
|
%t39 = getelementptr inbounds %S.cimport.Importer, ptr %t37, i32 0, i32 3
|
|
%t40 = load { ptr, i64, i64 }, ptr %a36
|
|
store { ptr, i64, i64 } %t40, ptr %a41
|
|
%t42 = call i64 @finch_map_find(ptr %t39, ptr %a41, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t43 = icmp sge i64 %t42, 0
|
|
br label %logic.from8416
|
|
logic.from8416:
|
|
br i1 %t43, label %logic.rhs8417, label %logic.end8418
|
|
logic.rhs8417:
|
|
%t44 = load ptr, ptr %a1
|
|
%t45 = icmp eq ptr %t44, null
|
|
br i1 %t45, label %panic8419, label %ok8420
|
|
panic8419:
|
|
call void @finch_panic(ptr @.str.5664, i64 433, ptr @.str.5665)
|
|
unreachable
|
|
ok8420:
|
|
%t46 = getelementptr inbounds %S.cimport.Importer, ptr %t44, i32 0, i32 0
|
|
%t47 = getelementptr inbounds %S.cimport.CImports, ptr %t46, i32 0, i32 3
|
|
%t48 = load ptr, ptr %a1
|
|
%t49 = icmp eq ptr %t48, null
|
|
br i1 %t49, label %panic8421, label %ok8422
|
|
panic8421:
|
|
call void @finch_panic(ptr @.str.5666, i64 433, ptr @.str.5667)
|
|
unreachable
|
|
ok8422:
|
|
%t50 = getelementptr inbounds %S.cimport.Importer, ptr %t48, i32 0, i32 3
|
|
%t51 = load { ptr, i64, i64 }, ptr %a36
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
%t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t54 = icmp slt i64 %t53, 0
|
|
br i1 %t54, label %map.missing8423, label %map.found8424
|
|
map.missing8423:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a55
|
|
store { ptr, i64, i64 } %t51, ptr %a56
|
|
call void @finch_buf_str(ptr %a55, ptr %a56, i32 1)
|
|
call void @finch_map_missing(ptr @.str.5668, i64 433, ptr %a55)
|
|
unreachable
|
|
map.found8424:
|
|
%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.rend8425
|
|
logic.rend8425:
|
|
br label %logic.end8418
|
|
logic.end8418:
|
|
%t65 = phi i1 [ false, %logic.from8416 ], [ %t64, %logic.rend8425 ]
|
|
store i1 %t65, ptr %a66
|
|
%t67 = load i1, ptr %a66
|
|
%t68 = xor i1 %t67, true
|
|
br label %logic.from8426
|
|
logic.from8426:
|
|
br i1 %t68, label %logic.rhs8427, label %logic.end8428
|
|
logic.rhs8427:
|
|
%t69 = load ptr, ptr %a1
|
|
%t70 = icmp eq ptr %t69, null
|
|
br i1 %t70, label %panic8429, label %ok8430
|
|
panic8429:
|
|
call void @finch_panic(ptr @.str.5669, i64 434, ptr @.str.5670)
|
|
unreachable
|
|
ok8430:
|
|
%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.rend8431
|
|
logic.rend8431:
|
|
br label %logic.end8428
|
|
logic.end8428:
|
|
%t78 = phi i1 [ false, %logic.from8426 ], [ %t77, %logic.rend8431 ]
|
|
br i1 %t78, label %then8432, label %endif8434
|
|
then8432:
|
|
%t79 = load { ptr, i64, i64 }, ptr %a9
|
|
%t80 = load ptr, ptr %a1
|
|
%t81 = icmp eq ptr %t80, null
|
|
br i1 %t81, label %panic8435, label %ok8436
|
|
panic8435:
|
|
call void @finch_panic(ptr @.str.5671, i64 435, ptr @.str.5672)
|
|
unreachable
|
|
ok8436:
|
|
%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.new8437, label %map.have8438
|
|
map.new8437:
|
|
%t92 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t92, ptr %a84)
|
|
%t93 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %t93
|
|
br label %map.have8438
|
|
map.have8438:
|
|
%t94 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t79, ptr %a95
|
|
call void @finch_str_copy(ptr %a96, ptr %a95)
|
|
%t97 = load { ptr, i64, i64 }, ptr %a96
|
|
store { ptr, i64, i64 } %t97, ptr %t94
|
|
br label %endif8434
|
|
endif8434:
|
|
br label %endif8413
|
|
endif8413:
|
|
br label %endif8410
|
|
else8409:
|
|
%t98 = load i32, ptr %a13
|
|
%t99 = icmp eq i32 %t98, 8
|
|
br i1 %t99, label %then8439, label %else8440
|
|
then8439:
|
|
%t100 = load ptr, ptr %a1
|
|
%t101 = icmp eq ptr %t100, null
|
|
br i1 %t101, label %panic8442, label %ok8443
|
|
panic8442:
|
|
call void @finch_panic(ptr @.str.5673, i64 439, ptr @.str.5674)
|
|
unreachable
|
|
ok8443:
|
|
%t102 = getelementptr inbounds %S.cimport.Importer, ptr %t100, i32 0, i32 0
|
|
%t103 = getelementptr inbounds %S.cimport.CImports, ptr %t102, i32 0, i32 0
|
|
%t104 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t104, ptr %a105
|
|
%t106 = call i64 @finch_map_find(ptr %t103, ptr %a105, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t107 = icmp sge i64 %t106, 0
|
|
br i1 %t107, label %then8444, label %endif8446
|
|
then8444:
|
|
ret void
|
|
endif8446:
|
|
%t108 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t108, ptr %a109
|
|
call void @finch_str_copy(ptr %a110, ptr %a109)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a110
|
|
%t112 = insertvalue %S.cimport.CFunc zeroinitializer, { ptr, i64, i64 } %t111, 0
|
|
%t113 = load ptr, ptr %a1
|
|
%t114 = icmp eq ptr %t113, null
|
|
br i1 %t114, label %panic8447, label %ok8448
|
|
panic8447:
|
|
call void @finch_panic(ptr @.str.5675, i64 442, ptr @.str.5676)
|
|
unreachable
|
|
ok8448:
|
|
%t115 = getelementptr inbounds %S.cimport.Importer, ptr %t113, i32 0, i32 2
|
|
%t116 = load { ptr, i64, i64 }, ptr %t115
|
|
store { ptr, i64, i64 } %t116, ptr %a117
|
|
call void @finch_str_copy(ptr %a118, ptr %a117)
|
|
%t119 = load { ptr, i64, i64 }, ptr %a118
|
|
%t120 = insertvalue %S.cimport.CFunc %t112, { ptr, i64, i64 } %t119, 1
|
|
store %S.cimport.CFunc %t120, ptr %a121
|
|
%t122 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t122, ptr %a123
|
|
%t124 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a123)
|
|
%t125 = icmp eq i32 %t124, 3
|
|
br i1 %t125, label %then8449, label %endif8451
|
|
then8449:
|
|
%t126 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5
|
|
store { ptr, i64, i64 } { ptr @.str.5677, i64 62, i64 0 }, ptr %t126
|
|
%t127 = load %S.cimport.CFunc, ptr %a121
|
|
%t128 = load ptr, ptr %a1
|
|
%t129 = icmp eq ptr %t128, null
|
|
br i1 %t129, label %panic8452, label %ok8453
|
|
panic8452:
|
|
call void @finch_panic(ptr @.str.5678, i64 445, ptr @.str.5679)
|
|
unreachable
|
|
ok8453:
|
|
%t130 = getelementptr inbounds %S.cimport.Importer, ptr %t128, i32 0, i32 0
|
|
%t131 = getelementptr inbounds %S.cimport.CImports, ptr %t130, i32 0, i32 0
|
|
%t132 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t132, ptr %a133
|
|
store i32 0, ptr %a134
|
|
%t135 = call i64 @finch_map_slot(ptr %t131, ptr %a133, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a134)
|
|
%t136 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t131, i32 0, i32 0
|
|
%t137 = load ptr, ptr %t136
|
|
%t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t137, i64 %t135
|
|
%t139 = load i32, ptr %a134
|
|
%t140 = icmp ne i32 %t139, 0
|
|
br i1 %t140, label %map.new8454, label %map.have8455
|
|
map.new8454:
|
|
%t141 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t138, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t141, ptr %a133)
|
|
%t142 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t138, i32 0, i32 2
|
|
store %S.cimport.CFunc zeroinitializer, ptr %t142
|
|
br label %map.have8455
|
|
map.have8455:
|
|
%t143 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t138, i32 0, i32 2
|
|
store %S.cimport.CFunc %t127, ptr %a144
|
|
call void @finch.copy.S_cimport_CFunc(ptr %a145, ptr %a144)
|
|
%t146 = load %S.cimport.CFunc, ptr %a145
|
|
store %S.cimport.CFunc %t146, ptr %t143
|
|
ret void
|
|
endif8451:
|
|
%t149 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t149, ptr %a150
|
|
call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a148, ptr byval(%S.C.CXCursor) align 8 %a150)
|
|
%t151 = load %S.C.CXType, ptr %a148
|
|
store %S.C.CXType %t151, ptr %a152
|
|
call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a147, ptr byval(%S.C.CXType) align 8 %a152)
|
|
%t153 = load %S.C.CXType, ptr %a147
|
|
store %S.C.CXType %t153, ptr %a154
|
|
%t155 = getelementptr inbounds %S.C.CXType, ptr %a154, i32 0, i32 0
|
|
%t156 = load i32, ptr %t155
|
|
%t157 = icmp eq i32 %t156, 110
|
|
br i1 %t157, label %then8456, label %endif8458
|
|
then8456:
|
|
%t158 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5
|
|
store { ptr, i64, i64 } { ptr @.str.5680, i64 42, i64 0 }, ptr %t158
|
|
%t159 = load %S.cimport.CFunc, ptr %a121
|
|
%t160 = load ptr, ptr %a1
|
|
%t161 = icmp eq ptr %t160, null
|
|
br i1 %t161, label %panic8459, label %ok8460
|
|
panic8459:
|
|
call void @finch_panic(ptr @.str.5681, i64 451, ptr @.str.5682)
|
|
unreachable
|
|
ok8460:
|
|
%t162 = getelementptr inbounds %S.cimport.Importer, ptr %t160, i32 0, i32 0
|
|
%t163 = getelementptr inbounds %S.cimport.CImports, ptr %t162, i32 0, i32 0
|
|
%t164 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t164, ptr %a165
|
|
store i32 0, ptr %a166
|
|
%t167 = call i64 @finch_map_slot(ptr %t163, ptr %a165, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a166)
|
|
%t168 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t163, i32 0, i32 0
|
|
%t169 = load ptr, ptr %t168
|
|
%t170 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t169, i64 %t167
|
|
%t171 = load i32, ptr %a166
|
|
%t172 = icmp ne i32 %t171, 0
|
|
br i1 %t172, label %map.new8461, label %map.have8462
|
|
map.new8461:
|
|
%t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t170, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t173, ptr %a165)
|
|
%t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t170, i32 0, i32 2
|
|
store %S.cimport.CFunc zeroinitializer, ptr %t174
|
|
br label %map.have8462
|
|
map.have8462:
|
|
%t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t170, i32 0, i32 2
|
|
store %S.cimport.CFunc %t159, ptr %a176
|
|
call void @finch.copy.S_cimport_CFunc(ptr %a177, ptr %a176)
|
|
%t178 = load %S.cimport.CFunc, ptr %a177
|
|
store %S.cimport.CFunc %t178, ptr %t175
|
|
ret void
|
|
endif8458:
|
|
%t179 = load ptr, ptr %a1
|
|
%t181 = load %S.C.CXType, ptr %a154
|
|
store %S.C.CXType %t181, ptr %a182
|
|
call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a180, ptr byval(%S.C.CXType) align 8 %a182)
|
|
%t183 = load %S.C.CXType, ptr %a180
|
|
%t184 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t179, %S.C.CXType %t183, i1 true, i1 false)
|
|
store %S.cimport.Mapped %t184, ptr %a185
|
|
%t186 = getelementptr inbounds %S.cimport.Mapped, ptr %a185, i32 0, i32 2
|
|
%t187 = load i1, ptr %t186
|
|
br i1 %t187, label %then8463, label %else8464
|
|
then8463:
|
|
%t188 = getelementptr inbounds %S.cimport.Mapped, ptr %a185, i32 0, i32 0
|
|
%t189 = load %S.ast.Type, ptr %t188
|
|
%t190 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 2
|
|
store %S.ast.Type %t189, ptr %a191
|
|
call void @finch.copy.S_ast_Type(ptr %a192, ptr %a191)
|
|
%t193 = load %S.ast.Type, ptr %a192
|
|
store %S.ast.Type %t193, ptr %t190
|
|
br label %endif8465
|
|
else8464:
|
|
%t194 = getelementptr inbounds %S.cimport.Mapped, ptr %a185, i32 0, i32 1
|
|
%t195 = load { ptr, i64, i64 }, ptr %t194
|
|
%t196 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5
|
|
store { ptr, i64, i64 } %t195, ptr %a197
|
|
call void @finch_str_copy(ptr %a198, ptr %a197)
|
|
%t199 = load { ptr, i64, i64 }, ptr %a198
|
|
store { ptr, i64, i64 } %t199, ptr %t196
|
|
br label %endif8465
|
|
endif8465:
|
|
%t200 = load %S.C.CXType, ptr %a154
|
|
store %S.C.CXType %t200, ptr %a201
|
|
%t202 = call i32 @clang_getNumArgTypes(ptr byval(%S.C.CXType) align 8 %a201)
|
|
%t203 = sext i32 %t202 to i64
|
|
store i64 %t203, ptr %a204
|
|
%t205 = load i64, ptr %a204
|
|
store i64 0, ptr %a206
|
|
br label %for.cond8466
|
|
for.cond8466:
|
|
%t207 = load i64, ptr %a206
|
|
%t208 = icmp slt i64 %t207, %t205
|
|
br i1 %t208, label %for.body8467, label %for.end8469
|
|
for.body8467:
|
|
%t209 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5
|
|
%t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1
|
|
%t211 = load i64, ptr %t210
|
|
%t212 = icmp sgt i64 %t211, 0
|
|
br i1 %t212, label %then8470, label %endif8472
|
|
then8470:
|
|
br label %for.end8469
|
|
endif8472:
|
|
%t213 = load ptr, ptr %a1
|
|
%t215 = load %S.C.CXType, ptr %a154
|
|
store %S.C.CXType %t215, ptr %a216
|
|
%t217 = load i64, ptr %a206
|
|
%t218 = trunc i64 %t217 to i32
|
|
call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a214, ptr byval(%S.C.CXType) align 8 %a216, i32 %t218)
|
|
%t219 = load %S.C.CXType, ptr %a214
|
|
%t220 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t213, %S.C.CXType %t219, i1 true, i1 true)
|
|
store %S.cimport.Mapped %t220, ptr %a221
|
|
%t222 = getelementptr inbounds %S.cimport.Mapped, ptr %a221, i32 0, i32 2
|
|
%t223 = load i1, ptr %t222
|
|
br i1 %t223, label %then8473, label %else8474
|
|
then8473:
|
|
%t224 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 3
|
|
%t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %t224, i32 0, i32 1
|
|
%t226 = getelementptr inbounds %S.cimport.Mapped, ptr %a221, i32 0, i32 0
|
|
%t227 = load %S.ast.Type, ptr %t226
|
|
store %S.ast.Type %t227, ptr %a228
|
|
call void @finch.copy.S_ast_Type(ptr %a229, ptr %a228)
|
|
%t230 = load %S.ast.Type, ptr %a229
|
|
%t231 = load i64, ptr %t225
|
|
%t232 = add i64 %t231, 1
|
|
call void @finch_arr_reserve(ptr %t224, i64 %t232, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64))
|
|
%t233 = load ptr, ptr %t224
|
|
%t234 = getelementptr inbounds %S.ast.Type, ptr %t233, i64 %t231
|
|
store %S.ast.Type %t230, ptr %t234
|
|
store i64 %t232, ptr %t225
|
|
br label %endif8475
|
|
else8474:
|
|
%t235 = getelementptr inbounds %S.cimport.Mapped, ptr %a221, i32 0, i32 1
|
|
%t236 = load { ptr, i64, i64 }, ptr %t235
|
|
%t237 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5
|
|
store { ptr, i64, i64 } %t236, ptr %a238
|
|
call void @finch_str_copy(ptr %a239, ptr %a238)
|
|
%t240 = load { ptr, i64, i64 }, ptr %a239
|
|
store { ptr, i64, i64 } %t240, ptr %t237
|
|
br label %endif8475
|
|
endif8475:
|
|
br label %for.step8468
|
|
for.step8468:
|
|
%t241 = load i64, ptr %a206
|
|
%t242 = add i64 %t241, 1
|
|
store i64 %t242, ptr %a206
|
|
br label %for.cond8466
|
|
for.end8469:
|
|
%t243 = load %S.C.CXType, ptr %a154
|
|
store %S.C.CXType %t243, ptr %a244
|
|
%t245 = call i32 @clang_isFunctionTypeVariadic(ptr byval(%S.C.CXType) align 8 %a244)
|
|
%t246 = icmp ne i32 %t245, 0
|
|
%t247 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 4
|
|
store i1 %t246, ptr %t247
|
|
%t248 = load %S.cimport.CFunc, ptr %a121
|
|
%t249 = load ptr, ptr %a1
|
|
%t250 = icmp eq ptr %t249, null
|
|
br i1 %t250, label %panic8476, label %ok8477
|
|
panic8476:
|
|
call void @finch_panic(ptr @.str.5683, i64 473, ptr @.str.5684)
|
|
unreachable
|
|
ok8477:
|
|
%t251 = getelementptr inbounds %S.cimport.Importer, ptr %t249, i32 0, i32 0
|
|
%t252 = getelementptr inbounds %S.cimport.CImports, ptr %t251, i32 0, i32 0
|
|
%t253 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t253, ptr %a254
|
|
store i32 0, ptr %a255
|
|
%t256 = call i64 @finch_map_slot(ptr %t252, ptr %a254, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a255)
|
|
%t257 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t252, i32 0, i32 0
|
|
%t258 = load ptr, ptr %t257
|
|
%t259 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t258, i64 %t256
|
|
%t260 = load i32, ptr %a255
|
|
%t261 = icmp ne i32 %t260, 0
|
|
br i1 %t261, label %map.new8478, label %map.have8479
|
|
map.new8478:
|
|
%t262 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t259, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t262, ptr %a254)
|
|
%t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t259, i32 0, i32 2
|
|
store %S.cimport.CFunc zeroinitializer, ptr %t263
|
|
br label %map.have8479
|
|
map.have8479:
|
|
%t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t259, i32 0, i32 2
|
|
store %S.cimport.CFunc %t248, ptr %a265
|
|
call void @finch.copy.S_cimport_CFunc(ptr %a266, ptr %a265)
|
|
%t267 = load %S.cimport.CFunc, ptr %a266
|
|
store %S.cimport.CFunc %t267, ptr %t264
|
|
br label %endif8441
|
|
else8440:
|
|
%t268 = load i32, ptr %a13
|
|
%t269 = icmp eq i32 %t268, 9
|
|
br i1 %t269, label %then8480, label %else8481
|
|
then8480:
|
|
%t270 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t270, ptr %a271
|
|
%t272 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a271)
|
|
%t273 = icmp ne i32 %t272, 2
|
|
br label %logic.from8483
|
|
logic.from8483:
|
|
br i1 %t273, label %logic.end8485, label %logic.rhs8484
|
|
logic.rhs8484:
|
|
%t274 = load ptr, ptr %a1
|
|
%t275 = icmp eq ptr %t274, null
|
|
br i1 %t275, label %panic8486, label %ok8487
|
|
panic8486:
|
|
call void @finch_panic(ptr @.str.5685, i64 475, ptr @.str.5686)
|
|
unreachable
|
|
ok8487:
|
|
%t276 = getelementptr inbounds %S.cimport.Importer, ptr %t274, i32 0, i32 0
|
|
%t277 = getelementptr inbounds %S.cimport.CImports, ptr %t276, i32 0, i32 2
|
|
%t278 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t278, ptr %a279
|
|
%t280 = call i64 @finch_map_find(ptr %t277, ptr %a279, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t281 = icmp sge i64 %t280, 0
|
|
br label %logic.rend8488
|
|
logic.rend8488:
|
|
br label %logic.end8485
|
|
logic.end8485:
|
|
%t282 = phi i1 [ true, %logic.from8483 ], [ %t281, %logic.rend8488 ]
|
|
br i1 %t282, label %then8489, label %endif8491
|
|
then8489:
|
|
ret void
|
|
endif8491:
|
|
%t283 = load ptr, ptr %a1
|
|
%t285 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t285, ptr %a286
|
|
call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a284, ptr byval(%S.C.CXCursor) align 8 %a286)
|
|
%t287 = load %S.C.CXType, ptr %a284
|
|
%t288 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t283, %S.C.CXType %t287, i1 false, i1 false)
|
|
store %S.cimport.Mapped %t288, ptr %a289
|
|
%t290 = getelementptr inbounds %S.cimport.Mapped, ptr %a289, i32 0, i32 2
|
|
%t291 = load i1, ptr %t290
|
|
br i1 %t291, label %then8492, label %endif8494
|
|
then8492:
|
|
%t292 = getelementptr inbounds %S.cimport.Mapped, ptr %a289, i32 0, i32 0
|
|
%t293 = load %S.ast.Type, ptr %t292
|
|
%t294 = load ptr, ptr %a1
|
|
%t295 = icmp eq ptr %t294, null
|
|
br i1 %t295, label %panic8495, label %ok8496
|
|
panic8495:
|
|
call void @finch_panic(ptr @.str.5687, i64 480, ptr @.str.5688)
|
|
unreachable
|
|
ok8496:
|
|
%t296 = getelementptr inbounds %S.cimport.Importer, ptr %t294, i32 0, i32 0
|
|
%t297 = getelementptr inbounds %S.cimport.CImports, ptr %t296, i32 0, i32 2
|
|
%t298 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t298, ptr %a299
|
|
store i32 0, ptr %a300
|
|
%t301 = call i64 @finch_map_slot(ptr %t297, ptr %a299, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a300)
|
|
%t302 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t297, i32 0, i32 0
|
|
%t303 = load ptr, ptr %t302
|
|
%t304 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t303, i64 %t301
|
|
%t305 = load i32, ptr %a300
|
|
%t306 = icmp ne i32 %t305, 0
|
|
br i1 %t306, label %map.new8497, label %map.have8498
|
|
map.new8497:
|
|
%t307 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t304, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t307, ptr %a299)
|
|
%t308 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t304, i32 0, i32 2
|
|
store %S.ast.Type zeroinitializer, ptr %t308
|
|
br label %map.have8498
|
|
map.have8498:
|
|
%t309 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t304, i32 0, i32 2
|
|
store %S.ast.Type %t293, ptr %a310
|
|
call void @finch.copy.S_ast_Type(ptr %a311, ptr %a310)
|
|
%t312 = load %S.ast.Type, ptr %a311
|
|
store %S.ast.Type %t312, ptr %t309
|
|
br label %endif8494
|
|
endif8494:
|
|
br label %endif8482
|
|
else8481:
|
|
%t313 = load i32, ptr %a13
|
|
%t314 = icmp eq i32 %t313, 2
|
|
br i1 %t314, label %then8499, label %else8500
|
|
then8499:
|
|
%t315 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t315, ptr %a316
|
|
%t317 = call i32 @clang_isCursorDefinition(ptr byval(%S.C.CXCursor) align 8 %a316)
|
|
%t318 = icmp ne i32 %t317, 0
|
|
br label %logic.from8502
|
|
logic.from8502:
|
|
br i1 %t318, label %logic.rhs8503, label %logic.end8504
|
|
logic.rhs8503:
|
|
%t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1
|
|
%t320 = load i64, ptr %t319
|
|
%t321 = icmp sgt i64 %t320, 0
|
|
br label %logic.rend8505
|
|
logic.rend8505:
|
|
br label %logic.end8504
|
|
logic.end8504:
|
|
%t322 = phi i1 [ false, %logic.from8502 ], [ %t321, %logic.rend8505 ]
|
|
br label %logic.from8506
|
|
logic.from8506:
|
|
br i1 %t322, label %logic.rhs8507, label %logic.end8508
|
|
logic.rhs8507:
|
|
%t323 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t323, ptr %a324
|
|
store { ptr, i64, i64 } { ptr @.str.5690, i64 1, i64 0 }, ptr %a326
|
|
%t327 = call i64 @finch_str_find(ptr %a324, ptr %a326)
|
|
%t328 = icmp sge i64 %t327, 0
|
|
%t329 = xor i1 %t328, true
|
|
br label %logic.rend8509
|
|
logic.rend8509:
|
|
br label %logic.end8508
|
|
logic.end8508:
|
|
%t330 = phi i1 [ false, %logic.from8506 ], [ %t329, %logic.rend8509 ]
|
|
br i1 %t330, label %then8510, label %endif8512
|
|
then8510:
|
|
%t331 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t331, ptr %a332
|
|
%t333 = call { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a332)
|
|
store { i64, i64 } %t333, ptr %a334
|
|
%t335 = load %S.C.CXString, ptr %a334
|
|
%t336 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t335)
|
|
store { ptr, i64, i64 } %t336, ptr %a337
|
|
%t338 = load ptr, ptr %a1
|
|
%t339 = icmp eq ptr %t338, null
|
|
br i1 %t339, label %panic8513, label %ok8514
|
|
panic8513:
|
|
call void @finch_panic(ptr @.str.5691, i64 485, ptr @.str.5692)
|
|
unreachable
|
|
ok8514:
|
|
%t340 = getelementptr inbounds %S.cimport.Importer, ptr %t338, i32 0, i32 3
|
|
%t341 = load { ptr, i64, i64 }, ptr %a337
|
|
store { ptr, i64, i64 } %t341, ptr %a342
|
|
%t343 = call i64 @finch_map_find(ptr %t340, ptr %a342, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t344 = icmp sge i64 %t343, 0
|
|
%t345 = xor i1 %t344, true
|
|
br i1 %t345, label %then8515, label %endif8517
|
|
then8515:
|
|
%t346 = load { ptr, i64, i64 }, ptr %a9
|
|
%t347 = load ptr, ptr %a1
|
|
%t348 = icmp eq ptr %t347, null
|
|
br i1 %t348, label %panic8518, label %ok8519
|
|
panic8518:
|
|
call void @finch_panic(ptr @.str.5693, i64 486, ptr @.str.5694)
|
|
unreachable
|
|
ok8519:
|
|
%t349 = getelementptr inbounds %S.cimport.Importer, ptr %t347, i32 0, i32 3
|
|
%t350 = load { ptr, i64, i64 }, ptr %a337
|
|
store { ptr, i64, i64 } %t350, ptr %a351
|
|
store i32 0, ptr %a352
|
|
%t353 = call i64 @finch_map_slot(ptr %t349, ptr %a351, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a352)
|
|
%t354 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t349, i32 0, i32 0
|
|
%t355 = load ptr, ptr %t354
|
|
%t356 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t355, i64 %t353
|
|
%t357 = load i32, ptr %a352
|
|
%t358 = icmp ne i32 %t357, 0
|
|
br i1 %t358, label %map.new8520, label %map.have8521
|
|
map.new8520:
|
|
%t359 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t356, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t359, ptr %a351)
|
|
%t360 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t356, i32 0, i32 2
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %t360
|
|
br label %map.have8521
|
|
map.have8521:
|
|
%t361 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t356, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t346, ptr %a362
|
|
call void @finch_str_copy(ptr %a363, ptr %a362)
|
|
%t364 = load { ptr, i64, i64 }, ptr %a363
|
|
store { ptr, i64, i64 } %t364, ptr %t361
|
|
br label %endif8517
|
|
endif8517:
|
|
br label %endif8512
|
|
endif8512:
|
|
br label %endif8501
|
|
else8500:
|
|
%t365 = load i32, ptr %a13
|
|
%t366 = icmp eq i32 %t365, 5
|
|
br i1 %t366, label %then8522, label %else8523
|
|
then8522:
|
|
%t367 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t367, ptr %a368
|
|
%t369 = load ptr, ptr %a1
|
|
%t370 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a368, ptr @finch.c.cimport.visitTop, ptr %t369)
|
|
br label %endif8524
|
|
else8523:
|
|
%t371 = load i32, ptr %a13
|
|
%t372 = icmp eq i32 %t371, 7
|
|
br i1 %t372, label %then8525, label %else8526
|
|
then8525:
|
|
%t373 = load ptr, ptr %a1
|
|
%t374 = icmp eq ptr %t373, null
|
|
br i1 %t374, label %panic8528, label %ok8529
|
|
panic8528:
|
|
call void @finch_panic(ptr @.str.5695, i64 492, ptr @.str.5696)
|
|
unreachable
|
|
ok8529:
|
|
%t375 = getelementptr inbounds %S.cimport.Importer, ptr %t373, i32 0, i32 0
|
|
%t376 = getelementptr inbounds %S.cimport.CImports, ptr %t375, i32 0, i32 1
|
|
%t377 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t377, ptr %a378
|
|
%t379 = call i64 @finch_map_find(ptr %t376, ptr %a378, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t380 = icmp sge i64 %t379, 0
|
|
%t381 = xor i1 %t380, true
|
|
br i1 %t381, label %then8530, label %endif8532
|
|
then8530:
|
|
%t382 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t382, ptr %a383
|
|
%t384 = call i64 @clang_getEnumConstantDeclValue(ptr byval(%S.C.CXCursor) align 8 %a383)
|
|
%t385 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t384, 1
|
|
%t386 = load ptr, ptr %a1
|
|
%t387 = icmp eq ptr %t386, null
|
|
br i1 %t387, label %panic8533, label %ok8534
|
|
panic8533:
|
|
call void @finch_panic(ptr @.str.5697, i64 493, ptr @.str.5698)
|
|
unreachable
|
|
ok8534:
|
|
%t388 = getelementptr inbounds %S.cimport.Importer, ptr %t386, i32 0, i32 0
|
|
%t389 = getelementptr inbounds %S.cimport.CImports, ptr %t388, i32 0, i32 1
|
|
%t390 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t390, ptr %a391
|
|
store i32 0, ptr %a392
|
|
%t393 = call i64 @finch_map_slot(ptr %t389, ptr %a391, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a392)
|
|
%t394 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t389, i32 0, i32 0
|
|
%t395 = load ptr, ptr %t394
|
|
%t396 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t395, i64 %t393
|
|
%t397 = load i32, ptr %a392
|
|
%t398 = icmp ne i32 %t397, 0
|
|
br i1 %t398, label %map.new8535, label %map.have8536
|
|
map.new8535:
|
|
%t399 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t396, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t399, ptr %a391)
|
|
%t400 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t396, i32 0, i32 2
|
|
store %S.cimport.CConst zeroinitializer, ptr %t400
|
|
br label %map.have8536
|
|
map.have8536:
|
|
%t401 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t396, i32 0, i32 2
|
|
store %S.cimport.CConst %t385, ptr %t401
|
|
br label %endif8532
|
|
endif8532:
|
|
br label %endif8527
|
|
else8526:
|
|
%t402 = load i32, ptr %a13
|
|
%t403 = icmp eq i32 %t402, 501
|
|
br i1 %t403, label %then8537, label %endif8539
|
|
then8537:
|
|
%t404 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t404, ptr %a405
|
|
%t406 = call i32 @clang_Cursor_isMacroBuiltin(ptr byval(%S.C.CXCursor) align 8 %a405)
|
|
%t407 = icmp ne i32 %t406, 0
|
|
br label %logic.from8540
|
|
logic.from8540:
|
|
br i1 %t407, label %logic.end8542, label %logic.rhs8541
|
|
logic.rhs8541:
|
|
%t408 = load %S.C.CXCursor, ptr %a2
|
|
store %S.C.CXCursor %t408, ptr %a409
|
|
%t410 = call i32 @clang_Cursor_isMacroFunctionLike(ptr byval(%S.C.CXCursor) align 8 %a409)
|
|
%t411 = icmp ne i32 %t410, 0
|
|
br label %logic.rend8543
|
|
logic.rend8543:
|
|
br label %logic.end8542
|
|
logic.end8542:
|
|
%t412 = phi i1 [ true, %logic.from8540 ], [ %t411, %logic.rend8543 ]
|
|
br i1 %t412, label %then8544, label %endif8546
|
|
then8544:
|
|
ret void
|
|
endif8546:
|
|
%t413 = load ptr, ptr %a1
|
|
%t414 = load %S.C.CXCursor, ptr %a2
|
|
%t415 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t413, %S.C.CXCursor %t414)
|
|
store %S.cimport.Number %t415, ptr %a416
|
|
%t417 = getelementptr inbounds %S.cimport.Number, ptr %a416, i32 0, i32 1
|
|
%t418 = load i1, ptr %t417
|
|
br label %logic.from8547
|
|
logic.from8547:
|
|
br i1 %t418, label %logic.rhs8548, label %logic.end8549
|
|
logic.rhs8548:
|
|
%t419 = load ptr, ptr %a1
|
|
%t420 = icmp eq ptr %t419, null
|
|
br i1 %t420, label %panic8550, label %ok8551
|
|
panic8550:
|
|
call void @finch_panic(ptr @.str.5699, i64 500, ptr @.str.5700)
|
|
unreachable
|
|
ok8551:
|
|
%t421 = getelementptr inbounds %S.cimport.Importer, ptr %t419, i32 0, i32 0
|
|
%t422 = getelementptr inbounds %S.cimport.CImports, ptr %t421, i32 0, i32 1
|
|
%t423 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t423, ptr %a424
|
|
%t425 = call i64 @finch_map_find(ptr %t422, ptr %a424, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t426 = icmp sge i64 %t425, 0
|
|
%t427 = xor i1 %t426, true
|
|
br label %logic.rend8552
|
|
logic.rend8552:
|
|
br label %logic.end8549
|
|
logic.end8549:
|
|
%t428 = phi i1 [ false, %logic.from8547 ], [ %t427, %logic.rend8552 ]
|
|
br i1 %t428, label %then8553, label %endif8555
|
|
then8553:
|
|
%t429 = getelementptr inbounds %S.cimport.Number, ptr %a416, i32 0, i32 0
|
|
%t430 = load %S.cimport.CConst, ptr %t429
|
|
%t431 = load ptr, ptr %a1
|
|
%t432 = icmp eq ptr %t431, null
|
|
br i1 %t432, label %panic8556, label %ok8557
|
|
panic8556:
|
|
call void @finch_panic(ptr @.str.5701, i64 501, ptr @.str.5702)
|
|
unreachable
|
|
ok8557:
|
|
%t433 = getelementptr inbounds %S.cimport.Importer, ptr %t431, i32 0, i32 0
|
|
%t434 = getelementptr inbounds %S.cimport.CImports, ptr %t433, i32 0, i32 1
|
|
%t435 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t435, ptr %a436
|
|
store i32 0, ptr %a437
|
|
%t438 = call i64 @finch_map_slot(ptr %t434, ptr %a436, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a437)
|
|
%t439 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t434, i32 0, i32 0
|
|
%t440 = load ptr, ptr %t439
|
|
%t441 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t440, i64 %t438
|
|
%t442 = load i32, ptr %a437
|
|
%t443 = icmp ne i32 %t442, 0
|
|
br i1 %t443, label %map.new8558, label %map.have8559
|
|
map.new8558:
|
|
%t444 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t441, i32 0, i32 1
|
|
call void @finch_str_copy(ptr %t444, ptr %a436)
|
|
%t445 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t441, i32 0, i32 2
|
|
store %S.cimport.CConst zeroinitializer, ptr %t445
|
|
br label %map.have8559
|
|
map.have8559:
|
|
%t446 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t441, i32 0, i32 2
|
|
store %S.cimport.CConst %t430, ptr %a447
|
|
call void @finch.copy.S_cimport_CConst(ptr %a448, ptr %a447)
|
|
%t449 = load %S.cimport.CConst, ptr %a448
|
|
store %S.cimport.CConst %t449, ptr %t446
|
|
br label %endif8555
|
|
endif8555:
|
|
br label %endif8539
|
|
endif8539:
|
|
br label %endif8527
|
|
endif8527:
|
|
br label %endif8524
|
|
endif8524:
|
|
br label %endif8501
|
|
endif8501:
|
|
br label %endif8482
|
|
endif8482:
|
|
br label %endif8441
|
|
endif8441:
|
|
br label %endif8410
|
|
endif8410:
|
|
ret void
|
|
}
|
|
|
|
define internal { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i1 %p3, { ptr, i64, i64 } %p4) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca i1, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca %S.cimport.Importer, align 16
|
|
%a12 = alloca %S.cimport.CImports, align 16
|
|
%a13 = alloca %S.cimport.CImports, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca i64, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca i64, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca i64, align 16
|
|
%a113 = alloca ptr, align 16
|
|
%a114 = alloca i64, align 16
|
|
%a122 = alloca %S.cimport.Header, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca %S.C.CXUnsavedFile, align 16
|
|
%a147 = alloca ptr, align 16
|
|
%a149 = alloca i64, align 16
|
|
%a162 = alloca i32, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a178 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a182 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca i64, align 16
|
|
%a190 = alloca i64, align 16
|
|
%a197 = alloca ptr, align 16
|
|
%a203 = alloca [32 x i8], align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a241 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a247 = alloca { ptr, i64, i64 }, align 16
|
|
%a249 = alloca { ptr, i64, i64 }, align 16
|
|
%a250 = alloca { ptr, i64, i64 }, align 16
|
|
%a251 = alloca { ptr, i64, i64 }, align 16
|
|
%a256 = alloca { ptr, i64, i64 }, align 16
|
|
%a257 = alloca { ptr, i64, i64 }, align 16
|
|
%a258 = alloca { ptr, i64, i64 }, align 16
|
|
%a261 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca { ptr, i64, i64 }, align 16
|
|
%a266 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a272 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca { ptr, i64, i64 }, align 16
|
|
%a275 = alloca { ptr, i64, i64 }, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a282 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a288 = alloca { ptr, i64, i64 }, align 16
|
|
%a289 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a293 = alloca { ptr, i64, i64 }, align 16
|
|
%a294 = alloca { ptr, i64, i64 }, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a310 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca %S.C.CXCursor, align 16
|
|
%a316 = alloca %S.C.CXCursor, align 16
|
|
%a324 = alloca %S.cimport.CImports, align 16
|
|
%a325 = alloca %S.cimport.CImports, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
store i1 %p3, ptr %a4
|
|
store { ptr, i64, i64 } %p4, ptr %a5
|
|
store %S.cimport.Importer zeroinitializer, ptr %a6
|
|
%t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t8 = load i64, ptr %t7
|
|
%t9 = icmp eq i64 %t8, 0
|
|
br i1 %t9, label %then8560, label %endif8562
|
|
then8560:
|
|
%t10 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0
|
|
%t11 = load %S.cimport.CImports, ptr %t10
|
|
store %S.cimport.CImports %t11, ptr %a12
|
|
call void @finch.copy.S_cimport_CImports(ptr %a13, ptr %a12)
|
|
%t14 = load %S.cimport.CImports, ptr %a13
|
|
%t15 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0
|
|
%t16 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t15, %S.cimport.CImports %t14, 1
|
|
ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t16
|
|
endif8562:
|
|
%t17 = mul i64 3, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)
|
|
%t18 = call ptr @finch_alloc(i64 %t17)
|
|
%t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 0
|
|
store { ptr, i64, i64 } { ptr @.str.5703, i64 2, i64 0 }, ptr %t19
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1
|
|
store { ptr, i64, i64 } { ptr @.str.5704, i64 1, i64 0 }, ptr %t20
|
|
%t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2
|
|
store { ptr, i64, i64 } { ptr @.str.5705, i64 10, i64 0 }, ptr %t21
|
|
%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 %then8563, label %endif8565
|
|
then8563:
|
|
%t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1
|
|
%t30 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5706, i64 9, i64 0 }, ptr %a32
|
|
store { ptr, i64, i64 } %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 %endif8565
|
|
endif8565:
|
|
%t39 = load i1, ptr %a4
|
|
br i1 %t39, label %then8566, label %endif8568
|
|
then8566:
|
|
%t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1
|
|
%t41 = load i64, ptr %t40
|
|
%t42 = add i64 %t41, 1
|
|
call void @finch_arr_reserve(ptr %a25, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t43 = load ptr, ptr %a25
|
|
%t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41
|
|
store { ptr, i64, i64 } { ptr @.str.5707, i64 19, i64 0 }, ptr %t44
|
|
store i64 %t42, ptr %t40
|
|
br label %endif8568
|
|
endif8568:
|
|
store i64 0, ptr %a45
|
|
br label %each.cond8569
|
|
each.cond8569:
|
|
%t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1
|
|
%t47 = load i64, ptr %t46
|
|
%t48 = load i64, ptr %a45
|
|
%t49 = icmp slt i64 %t48, %t47
|
|
br i1 %t49, label %each.body8570, label %each.end8572
|
|
each.body8570:
|
|
%t50 = load ptr, ptr %a2
|
|
%t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48
|
|
%t52 = load { ptr, i64, i64 }, ptr %t51
|
|
store { ptr, i64, i64 } %t52, ptr %a53
|
|
%t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1
|
|
%t55 = load { ptr, i64, i64 }, ptr %a53
|
|
store { ptr, i64, i64 } { ptr @.str.5708, i64 2, i64 0 }, ptr %a57
|
|
store { ptr, i64, i64 } %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.step8571
|
|
each.step8571:
|
|
%t64 = load i64, ptr %a45
|
|
%t65 = add i64 %t64, 1
|
|
store i64 %t65, ptr %a45
|
|
br label %each.cond8569
|
|
each.end8572:
|
|
%t66 = load { ptr, i64, i64 }, ptr %a5
|
|
%t67 = call { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %t66)
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
store i64 0, ptr %a69
|
|
br label %each.cond8573
|
|
each.cond8573:
|
|
%t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a68, i32 0, i32 1
|
|
%t71 = load i64, ptr %t70
|
|
%t72 = load i64, ptr %a69
|
|
%t73 = icmp slt i64 %t72, %t71
|
|
br i1 %t73, label %each.body8574, label %each.end8576
|
|
each.body8574:
|
|
%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.step8575
|
|
each.step8575:
|
|
%t87 = load i64, ptr %a69
|
|
%t88 = add i64 %t87, 1
|
|
store i64 %t88, ptr %a69
|
|
br label %each.cond8573
|
|
each.end8576:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a89
|
|
%t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1
|
|
%t91 = load i64, ptr %t90
|
|
store i64 0, ptr %a92
|
|
br label %for.cond8577
|
|
for.cond8577:
|
|
%t93 = load i64, ptr %a92
|
|
%t94 = icmp slt i64 %t93, %t91
|
|
br i1 %t94, label %for.body8578, label %for.end8580
|
|
for.body8578:
|
|
%t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1
|
|
%t96 = load i64, ptr %a92
|
|
%t97 = load { ptr, i64, i64 }, ptr %a25
|
|
%t98 = extractvalue { ptr, i64, i64 } %t97, 1
|
|
%t99 = icmp uge i64 %t96, %t98
|
|
br i1 %t99, label %range8581, label %inrange8582
|
|
range8581:
|
|
call void @finch_panic_index(ptr @.str.5709, i64 528, i64 %t96, i64 %t98)
|
|
unreachable
|
|
inrange8582:
|
|
%t100 = extractvalue { ptr, i64, i64 } %t97, 0
|
|
%t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t96
|
|
%t102 = load { ptr, i64, i64 }, ptr %t101
|
|
%t103 = extractvalue { ptr, i64, i64 } %t102, 0
|
|
%t104 = icmp eq ptr %t103, null
|
|
%t105 = select i1 %t104, ptr @.str.5710, ptr %t103
|
|
%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.step8579
|
|
for.step8579:
|
|
%t110 = load i64, ptr %a92
|
|
%t111 = add i64 %t110, 1
|
|
store i64 %t111, ptr %a92
|
|
br label %for.cond8577
|
|
for.end8580:
|
|
%t112 = call ptr @clang_createIndex(i32 0, i32 0)
|
|
store ptr %t112, ptr %a113
|
|
store i64 0, ptr %a114
|
|
br label %each.cond8583
|
|
each.cond8583:
|
|
%t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t116 = load i64, ptr %t115
|
|
%t117 = load i64, ptr %a114
|
|
%t118 = icmp slt i64 %t117, %t116
|
|
br i1 %t118, label %each.body8584, label %each.end8586
|
|
each.body8584:
|
|
%t119 = load ptr, ptr %a1
|
|
%t120 = getelementptr inbounds %S.cimport.Header, ptr %t119, i64 %t117
|
|
%t121 = load %S.cimport.Header, ptr %t120
|
|
store %S.cimport.Header %t121, ptr %a122
|
|
%t123 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0
|
|
%t124 = load { ptr, i64, i64 }, ptr %t123
|
|
store { ptr, i64, i64 } { ptr @.str.5711, i64 10, i64 0 }, ptr %a126
|
|
store { ptr, i64, i64 } %t124, ptr %a127
|
|
call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127)
|
|
%t128 = load { ptr, i64, i64 }, ptr %a125
|
|
store { ptr, i64, i64 } %t128, ptr %a130
|
|
store { ptr, i64, i64 } { ptr @.str.5712, i64 2, i64 0 }, ptr %a131
|
|
call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131)
|
|
%t132 = load { ptr, i64, i64 }, ptr %a129
|
|
store { ptr, i64, i64 } %t132, ptr %a133
|
|
%t134 = extractvalue { ptr, i64, i64 } { ptr @.str.5713, i64 14, i64 0 }, 0
|
|
%t135 = icmp eq ptr %t134, null
|
|
%t136 = select i1 %t135, ptr @.str.5714, ptr %t134
|
|
%t137 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t136, 0
|
|
%t138 = load { ptr, i64, i64 }, ptr %a133
|
|
%t139 = extractvalue { ptr, i64, i64 } %t138, 0
|
|
%t140 = icmp eq ptr %t139, null
|
|
%t141 = select i1 %t140, ptr @.str.5715, ptr %t139
|
|
%t142 = insertvalue %S.C.CXUnsavedFile %t137, ptr %t141, 1
|
|
%t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a133, i32 0, i32 1
|
|
%t144 = load i64, ptr %t143
|
|
%t145 = insertvalue %S.C.CXUnsavedFile %t142, i64 %t144, 2
|
|
store %S.C.CXUnsavedFile %t145, ptr %a146
|
|
store ptr null, ptr %a147
|
|
%t148 = or i64 1, 64
|
|
store i64 %t148, ptr %a149
|
|
%t150 = load ptr, ptr %a113
|
|
%t151 = extractvalue { ptr, i64, i64 } { ptr @.str.5716, i64 14, i64 0 }, 0
|
|
%t152 = icmp eq ptr %t151, null
|
|
%t153 = select i1 %t152, ptr @.str.5717, ptr %t151
|
|
%t154 = load { ptr, i64, i64 }, ptr %a89
|
|
%t155 = extractvalue { ptr, i64, i64 } %t154, 0
|
|
%t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1
|
|
%t157 = load i64, ptr %t156
|
|
%t158 = trunc i64 %t157 to i32
|
|
%t159 = load i64, ptr %a149
|
|
%t160 = trunc i64 %t159 to i32
|
|
%t161 = call i32 @clang_parseTranslationUnit2(ptr %t150, ptr %t153, ptr %t155, i32 %t158, ptr %a146, i32 1, i32 %t160, ptr %a147)
|
|
store i32 %t161, ptr %a162
|
|
%t163 = load i32, ptr %a162
|
|
%t164 = icmp ne i32 %t163, 0
|
|
br label %logic.from8587
|
|
logic.from8587:
|
|
br i1 %t164, label %logic.end8589, label %logic.rhs8588
|
|
logic.rhs8588:
|
|
%t165 = load ptr, ptr %a147
|
|
%t166 = icmp eq ptr %t165, null
|
|
br label %logic.rend8590
|
|
logic.rend8590:
|
|
br label %logic.end8589
|
|
logic.end8589:
|
|
%t167 = phi i1 [ true, %logic.from8587 ], [ %t166, %logic.rend8590 ]
|
|
br i1 %t167, label %then8591, label %endif8593
|
|
then8591:
|
|
%t168 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1
|
|
%t169 = load { ptr, i64, i64 }, ptr %t168
|
|
store { ptr, i64, i64 } %t169, ptr %a171
|
|
store { ptr, i64, i64 } { ptr @.str.5718, i64 33, i64 0 }, ptr %a172
|
|
call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172)
|
|
%t173 = load { ptr, i64, i64 }, ptr %a170
|
|
%t174 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0
|
|
%t175 = load { ptr, i64, i64 }, ptr %t174
|
|
store { ptr, i64, i64 } %t173, ptr %a177
|
|
store { ptr, i64, i64 } %t175, ptr %a178
|
|
call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178)
|
|
%t179 = load { ptr, i64, i64 }, ptr %a176
|
|
store { ptr, i64, i64 } %t179, ptr %a181
|
|
store { ptr, i64, i64 } { ptr @.str.5719, i64 1, i64 0 }, ptr %a182
|
|
call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182)
|
|
%t183 = load { ptr, i64, i64 }, ptr %a180
|
|
%t184 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t183, 2
|
|
ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t184
|
|
endif8593:
|
|
%t185 = load ptr, ptr %a147
|
|
%t186 = call i32 @clang_getNumDiagnostics(ptr %t185)
|
|
%t187 = zext i32 %t186 to i64
|
|
store i64 %t187, ptr %a188
|
|
%t189 = load i64, ptr %a188
|
|
store i64 0, ptr %a190
|
|
br label %for.cond8594
|
|
for.cond8594:
|
|
%t191 = load i64, ptr %a190
|
|
%t192 = icmp slt i64 %t191, %t189
|
|
br i1 %t192, label %for.body8595, label %for.end8597
|
|
for.body8595:
|
|
%t193 = load ptr, ptr %a147
|
|
%t194 = load i64, ptr %a190
|
|
%t195 = trunc i64 %t194 to i32
|
|
%t196 = call ptr @clang_getDiagnostic(ptr %t193, i32 %t195)
|
|
store ptr %t196, ptr %a197
|
|
%t198 = load ptr, ptr %a197
|
|
%t199 = call i32 @clang_getDiagnosticSeverity(ptr %t198)
|
|
%t200 = icmp sge i32 %t199, 3
|
|
br i1 %t200, label %then8598, label %endif8600
|
|
then8598:
|
|
%t201 = load ptr, ptr %a197
|
|
%t202 = call { i64, i64 } @clang_getDiagnosticSpelling(ptr %t201)
|
|
store { i64, i64 } %t202, ptr %a203
|
|
%t204 = load %S.C.CXString, ptr %a203
|
|
%t205 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t204)
|
|
store { ptr, i64, i64 } %t205, ptr %a206
|
|
%t207 = load ptr, ptr %a197
|
|
call void @clang_disposeDiagnostic(ptr %t207)
|
|
%t208 = load { ptr, i64, i64 }, ptr %a206
|
|
store { ptr, i64, i64 } %t208, ptr %a209
|
|
store { ptr, i64, i64 } { ptr @.str.5721, i64 14, i64 0 }, ptr %a211
|
|
%t212 = call i64 @finch_str_find(ptr %a209, ptr %a211)
|
|
%t213 = icmp sge i64 %t212, 0
|
|
br i1 %t213, label %then8601, label %endif8603
|
|
then8601:
|
|
%t214 = load { ptr, i64, i64 }, ptr %a206
|
|
store { ptr, i64, i64 } %t214, ptr %a215
|
|
%t217 = load { ptr, i64, i64 }, ptr %a206
|
|
store { ptr, i64, i64 } %t217, ptr %a218
|
|
%t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %a206, i32 0, i32 1
|
|
%t221 = load i64, ptr %t220
|
|
call void @finch_str_sub(ptr %a219, ptr %a218, i64 1, i64 %t221, ptr @.str.5723, i64 548)
|
|
%t222 = load { ptr, i64, i64 }, ptr %a219
|
|
store { ptr, i64, i64 } %t222, ptr %a223
|
|
store { ptr, i64, i64 } { ptr @.str.5725, i64 1, i64 0 }, ptr %a225
|
|
%t226 = call i64 @finch_str_find(ptr %a223, ptr %a225)
|
|
%t227 = add i64 %t226, 1
|
|
call void @finch_str_sub(ptr %a216, ptr %a215, i64 1, i64 %t227, ptr @.str.5722, i64 548)
|
|
%t228 = load { ptr, i64, i64 }, ptr %a216
|
|
store { ptr, i64, i64 } %t228, ptr %a229
|
|
%t230 = load { ptr, i64, i64 }, ptr %a229
|
|
%t231 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0
|
|
%t232 = load { ptr, i64, i64 }, ptr %t231
|
|
store { ptr, i64, i64 } %t230, ptr %a233
|
|
store { ptr, i64, i64 } %t232, ptr %a234
|
|
%t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234)
|
|
%t236 = icmp ne i32 %t235, 0
|
|
br i1 %t236, label %then8604, label %endif8606
|
|
then8604:
|
|
%t237 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1
|
|
%t238 = load { ptr, i64, i64 }, ptr %t237
|
|
store { ptr, i64, i64 } %t238, ptr %a240
|
|
store { ptr, i64, i64 } { ptr @.str.5726, i64 34, i64 0 }, ptr %a241
|
|
call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241)
|
|
%t242 = load { ptr, i64, i64 }, ptr %a239
|
|
%t243 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0
|
|
%t244 = load { ptr, i64, i64 }, ptr %t243
|
|
store { ptr, i64, i64 } %t242, ptr %a246
|
|
store { ptr, i64, i64 } %t244, ptr %a247
|
|
call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247)
|
|
%t248 = load { ptr, i64, i64 }, ptr %a245
|
|
store { ptr, i64, i64 } %t248, ptr %a250
|
|
store { ptr, i64, i64 } { ptr @.str.5727, i64 1, i64 0 }, ptr %a251
|
|
call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251)
|
|
%t252 = load { ptr, i64, i64 }, ptr %a249
|
|
%t253 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t252, 2
|
|
ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t253
|
|
endif8606:
|
|
%t254 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1
|
|
%t255 = load { ptr, i64, i64 }, ptr %t254
|
|
store { ptr, i64, i64 } %t255, ptr %a257
|
|
store { ptr, i64, i64 } { ptr @.str.5728, i64 34, i64 0 }, ptr %a258
|
|
call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258)
|
|
%t259 = load { ptr, i64, i64 }, ptr %a256
|
|
%t260 = load { ptr, i64, i64 }, ptr %a229
|
|
store { ptr, i64, i64 } %t259, ptr %a262
|
|
store { ptr, i64, i64 } %t260, ptr %a263
|
|
call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263)
|
|
%t264 = load { ptr, i64, i64 }, ptr %a261
|
|
store { ptr, i64, i64 } %t264, ptr %a266
|
|
store { ptr, i64, i64 } { ptr @.str.5729, i64 10, i64 0 }, ptr %a267
|
|
call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267)
|
|
%t268 = load { ptr, i64, i64 }, ptr %a265
|
|
%t269 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0
|
|
%t270 = load { ptr, i64, i64 }, ptr %t269
|
|
store { ptr, i64, i64 } %t268, ptr %a272
|
|
store { ptr, i64, i64 } %t270, ptr %a273
|
|
call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273)
|
|
%t274 = load { ptr, i64, i64 }, ptr %a271
|
|
store { ptr, i64, i64 } %t274, ptr %a276
|
|
store { ptr, i64, i64 } { ptr @.str.5730, i64 60, i64 0 }, ptr %a277
|
|
call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277)
|
|
%t278 = load { ptr, i64, i64 }, ptr %a275
|
|
%t279 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t278, 2
|
|
ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t279
|
|
endif8603:
|
|
%t280 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1
|
|
%t281 = load { ptr, i64, i64 }, ptr %t280
|
|
store { ptr, i64, i64 } %t281, ptr %a283
|
|
store { ptr, i64, i64 } { ptr @.str.5731, i64 19, i64 0 }, ptr %a284
|
|
call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284)
|
|
%t285 = load { ptr, i64, i64 }, ptr %a282
|
|
%t286 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0
|
|
%t287 = load { ptr, i64, i64 }, ptr %t286
|
|
store { ptr, i64, i64 } %t285, ptr %a289
|
|
store { ptr, i64, i64 } %t287, ptr %a290
|
|
call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290)
|
|
%t291 = load { ptr, i64, i64 }, ptr %a288
|
|
store { ptr, i64, i64 } %t291, ptr %a293
|
|
store { ptr, i64, i64 } { ptr @.str.5732, i64 16, i64 0 }, ptr %a294
|
|
call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294)
|
|
%t295 = load { ptr, i64, i64 }, ptr %a292
|
|
%t296 = load { ptr, i64, i64 }, ptr %a206
|
|
store { ptr, i64, i64 } %t295, ptr %a298
|
|
store { ptr, i64, i64 } %t296, ptr %a299
|
|
call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299)
|
|
%t300 = load { ptr, i64, i64 }, ptr %a297
|
|
%t301 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t300, 2
|
|
ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t301
|
|
endif8600:
|
|
%t302 = load ptr, ptr %a197
|
|
call void @clang_disposeDiagnostic(ptr %t302)
|
|
br label %for.step8596
|
|
for.step8596:
|
|
%t303 = load i64, ptr %a190
|
|
%t304 = add i64 %t303, 1
|
|
store i64 %t304, ptr %a190
|
|
br label %for.cond8594
|
|
for.end8597:
|
|
%t305 = load ptr, ptr %a147
|
|
%t306 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1
|
|
store ptr %t305, ptr %t306
|
|
%t307 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0
|
|
%t308 = load { ptr, i64, i64 }, ptr %t307
|
|
%t309 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2
|
|
store { ptr, i64, i64 } %t308, ptr %a310
|
|
call void @finch_str_copy(ptr %a311, ptr %a310)
|
|
%t312 = load { ptr, i64, i64 }, ptr %a311
|
|
store { ptr, i64, i64 } %t312, ptr %t309
|
|
%t314 = load ptr, ptr %a147
|
|
call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a313, ptr %t314)
|
|
%t315 = load %S.C.CXCursor, ptr %a313
|
|
store %S.C.CXCursor %t315, ptr %a316
|
|
%t317 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a316, ptr @finch.c.cimport.visitTop, ptr %a6)
|
|
%t318 = load ptr, ptr %a147
|
|
call void @clang_disposeTranslationUnit(ptr %t318)
|
|
br label %each.step8585
|
|
each.step8585:
|
|
%t319 = load i64, ptr %a114
|
|
%t320 = add i64 %t319, 1
|
|
store i64 %t320, ptr %a114
|
|
br label %each.cond8583
|
|
each.end8586:
|
|
%t321 = load ptr, ptr %a113
|
|
call void @clang_disposeIndex(ptr %t321)
|
|
%t322 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0
|
|
%t323 = load %S.cimport.CImports, ptr %t322
|
|
store %S.cimport.CImports %t323, ptr %a324
|
|
call void @finch.copy.S_cimport_CImports(ptr %a325, ptr %a324)
|
|
%t326 = load %S.cimport.CImports, ptr %a325
|
|
%t327 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0
|
|
%t328 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t327, %S.cimport.CImports %t326, 1
|
|
ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t328
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
call void @finch_str_trim(ptr %a4, ptr %a3)
|
|
%t5 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
store { ptr, i64, i64 } { ptr @.str.5735, i64 1, i64 0 }, ptr %a8
|
|
call void @finch_str_split(ptr %a9, ptr %a6, ptr %a8)
|
|
%t10 = load { ptr, i64, i64 }, ptr %a9
|
|
store { ptr, i64, i64 } %t10, ptr %a11
|
|
%t12 = load { ptr, i64, i64 }, ptr %a11
|
|
%t13 = extractvalue { ptr, i64, i64 } %t12, 1
|
|
%t14 = icmp uge i64 0, %t13
|
|
br i1 %t14, label %range8607, label %inrange8608
|
|
range8607:
|
|
call void @finch_panic_index(ptr @.str.5736, i64 20, i64 0, i64 %t13)
|
|
unreachable
|
|
inrange8608:
|
|
%t15 = extractvalue { ptr, i64, i64 } %t12, 0
|
|
%t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 0
|
|
%t17 = load { ptr, i64, i64 }, ptr %t16
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
call void @finch_str_trim(ptr %a19, ptr %a18)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a19
|
|
ret { ptr, i64, i64 } %t20
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.platform.hostTriple() {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } { ptr @.str.5738, i64 21, i64 0 }, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } { ptr @.str.5739, i64 22, i64 0 }, ptr %a4
|
|
store { ptr, i64, i64 } %t2, ptr %a5
|
|
call void @finch_str_concat(ptr %a3, ptr %a4, ptr %a5)
|
|
%t6 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t6, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.5740, i64 14, i64 0 }, ptr %a9
|
|
call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9)
|
|
%t10 = load { ptr, i64, i64 }, ptr %a7
|
|
store { ptr, i64, i64 } %t10, ptr %a12
|
|
call void @finch_str_copy(ptr %a11, ptr %a12)
|
|
%t13 = call i64 @finch_shell(ptr %a11)
|
|
%t14 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a16
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a17
|
|
%t18 = call i32 @finch_try_read_file(ptr %a16, ptr %a15, ptr %a17)
|
|
%t19 = icmp eq i32 %t18, 0
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
%t21 = load { ptr, i64, i64 }, ptr %a16
|
|
br i1 %t19, label %or.failed8609, label %or.ok8610
|
|
or.failed8609:
|
|
store { ptr, i64, i64 } %t20, ptr %a22
|
|
br label %or.bend8611
|
|
or.bend8611:
|
|
br label %or.end8612
|
|
or.ok8610:
|
|
br label %or.end8612
|
|
or.end8612:
|
|
%t23 = phi { ptr, i64, i64 } [ { ptr @.str.5741, i64 0, i64 0 }, %or.bend8611 ], [ %t21, %or.ok8610 ]
|
|
store { ptr, i64, i64 } %t23, ptr %a24
|
|
%t25 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } { ptr @.str.5742, i64 7, i64 0 }, ptr %a27
|
|
store { ptr, i64, i64 } %t25, ptr %a28
|
|
call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28)
|
|
%t29 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t29, ptr %a31
|
|
store { ptr, i64, i64 } { ptr @.str.5743, i64 1, i64 0 }, ptr %a32
|
|
call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32)
|
|
%t33 = load { ptr, i64, i64 }, ptr %a30
|
|
store { ptr, i64, i64 } %t33, ptr %a35
|
|
call void @finch_str_copy(ptr %a34, ptr %a35)
|
|
%t36 = call i64 @finch_shell(ptr %a34)
|
|
%t37 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } %t37, ptr %a38
|
|
call void @finch_str_trim(ptr %a39, ptr %a38)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a39
|
|
%t41 = extractvalue { ptr, i64, i64 } %t40, 1
|
|
%t42 = icmp eq i64 %t41, 0
|
|
br i1 %t42, label %then8613, label %endif8615
|
|
then8613:
|
|
ret { ptr, i64, i64 } { ptr @.str.5745, i64 24, i64 0 }
|
|
endif8615:
|
|
%t43 = load { ptr, i64, i64 }, ptr %a24
|
|
%t44 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t43)
|
|
ret { ptr, i64, i64 } %t44
|
|
}
|
|
|
|
define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a22 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca %S.platform.Target, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a81 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a89 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a118 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a138 = alloca { ptr, i64, i64 }, align 16
|
|
%a139 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca i1, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a160 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca i1, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a189 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca { ptr, i64, i64 }, align 16
|
|
%a221 = alloca { ptr, i64, i64 }, align 16
|
|
%a242 = alloca %S.platform.Target, align 16
|
|
%a243 = alloca %S.platform.Target, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = call { ptr, i64, i64 } @finch.platform.hostTriple()
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
%t4 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
call void @finch_str_copy(ptr %a6, ptr %a5)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
%t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t10 = load i64, ptr %t9
|
|
%t11 = icmp eq i64 %t10, 0
|
|
br i1 %t11, label %then8616, label %else8617
|
|
then8616:
|
|
%t12 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t12, ptr %a13
|
|
call void @finch_str_copy(ptr %a14, ptr %a13)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a14
|
|
store { ptr, i64, i64 } %t15, ptr %a8
|
|
br label %endif8618
|
|
else8617:
|
|
%t16 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t16, ptr %a17
|
|
store { ptr, i64, i64 } { ptr @.str.5746, i64 7, i64 0 }, ptr %a18
|
|
%t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18)
|
|
%t20 = icmp ne i32 %t19, 0
|
|
br i1 %t20, label %then8619, label %else8620
|
|
then8619:
|
|
store { ptr, i64, i64 } { ptr @.str.5747, i64 18, i64 0 }, ptr %a8
|
|
br label %endif8621
|
|
else8620:
|
|
%t21 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t21, ptr %a22
|
|
store { ptr, i64, i64 } { ptr @.str.5748, i64 5, i64 0 }, ptr %a23
|
|
%t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23)
|
|
%t25 = icmp ne i32 %t24, 0
|
|
br i1 %t25, label %then8622, label %else8623
|
|
then8622:
|
|
store { ptr, i64, i64 } { ptr @.str.5749, i64 24, i64 0 }, ptr %a8
|
|
br label %endif8624
|
|
else8623:
|
|
%t26 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t26, ptr %a27
|
|
store { ptr, i64, i64 } { ptr @.str.5750, i64 5, i64 0 }, ptr %a28
|
|
%t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28)
|
|
%t30 = icmp ne i32 %t29, 0
|
|
br label %logic.from8625
|
|
logic.from8625:
|
|
br i1 %t30, label %logic.end8627, label %logic.rhs8626
|
|
logic.rhs8626:
|
|
%t31 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t31, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.5751, i64 7, i64 0 }, ptr %a33
|
|
%t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33)
|
|
%t35 = icmp ne i32 %t34, 0
|
|
br label %logic.rend8628
|
|
logic.rend8628:
|
|
br label %logic.end8627
|
|
logic.end8627:
|
|
%t36 = phi i1 [ true, %logic.from8625 ], [ %t35, %logic.rend8628 ]
|
|
br label %logic.from8629
|
|
logic.from8629:
|
|
br i1 %t36, label %logic.end8631, label %logic.rhs8630
|
|
logic.rhs8630:
|
|
%t37 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t37, ptr %a38
|
|
store { ptr, i64, i64 } { ptr @.str.5752, i64 11, i64 0 }, ptr %a39
|
|
%t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39)
|
|
%t41 = icmp ne i32 %t40, 0
|
|
br label %logic.rend8632
|
|
logic.rend8632:
|
|
br label %logic.end8631
|
|
logic.end8631:
|
|
%t42 = phi i1 [ true, %logic.from8629 ], [ %t41, %logic.rend8632 ]
|
|
br i1 %t42, label %then8633, label %else8634
|
|
then8633:
|
|
store { ptr, i64, i64 } { ptr @.str.5753, i64 25, i64 0 }, ptr %a8
|
|
br label %endif8635
|
|
else8634:
|
|
%t43 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t43, ptr %a44
|
|
store { ptr, i64, i64 } { ptr @.str.5754, i64 5, i64 0 }, ptr %a45
|
|
%t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45)
|
|
%t47 = icmp ne i32 %t46, 0
|
|
br i1 %t47, label %then8636, label %endif8638
|
|
then8636:
|
|
%t48 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
store { ptr, i64, i64 } { ptr @.str.5756, i64 7, i64 0 }, ptr %a51
|
|
%t52 = call i32 @finch_str_starts(ptr %a49, ptr %a51)
|
|
%t53 = icmp ne i32 %t52, 0
|
|
br label %logic.from8639
|
|
logic.from8639:
|
|
br i1 %t53, label %logic.end8641, label %logic.rhs8640
|
|
logic.rhs8640:
|
|
%t54 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t54, ptr %a55
|
|
store { ptr, i64, i64 } { ptr @.str.5758, i64 5, i64 0 }, ptr %a57
|
|
%t58 = call i32 @finch_str_starts(ptr %a55, ptr %a57)
|
|
%t59 = icmp ne i32 %t58, 0
|
|
br label %logic.rend8642
|
|
logic.rend8642:
|
|
br label %logic.end8641
|
|
logic.end8641:
|
|
%t60 = phi i1 [ true, %logic.from8639 ], [ %t59, %logic.rend8642 ]
|
|
br i1 %t60, label %then8643, label %else8644
|
|
then8643:
|
|
store { ptr, i64, i64 } { ptr @.str.5759, i64 24, i64 0 }, ptr %a8
|
|
br label %endif8645
|
|
else8644:
|
|
store { ptr, i64, i64 } { ptr @.str.5760, i64 25, i64 0 }, ptr %a8
|
|
br label %endif8645
|
|
endif8645:
|
|
br label %endif8638
|
|
endif8638:
|
|
br label %endif8635
|
|
endif8635:
|
|
br label %endif8624
|
|
endif8624:
|
|
br label %endif8621
|
|
endif8621:
|
|
br label %endif8618
|
|
endif8618:
|
|
%t61 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t61, ptr %a62
|
|
call void @finch_str_copy(ptr %a63, ptr %a62)
|
|
%t64 = load { ptr, i64, i64 }, ptr %a63
|
|
%t65 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t64, 0
|
|
store %S.platform.Target %t65, ptr %a66
|
|
%t67 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.5762, i64 7, i64 0 }, ptr %a70
|
|
%t71 = call i64 @finch_str_find(ptr %a68, ptr %a70)
|
|
%t72 = icmp sge i64 %t71, 0
|
|
br label %logic.from8646
|
|
logic.from8646:
|
|
br i1 %t72, label %logic.end8648, label %logic.rhs8647
|
|
logic.rhs8647:
|
|
%t73 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t73, ptr %a74
|
|
store { ptr, i64, i64 } { ptr @.str.5764, i64 5, i64 0 }, ptr %a76
|
|
%t77 = call i64 @finch_str_find(ptr %a74, ptr %a76)
|
|
%t78 = icmp sge i64 %t77, 0
|
|
br label %logic.rend8649
|
|
logic.rend8649:
|
|
br label %logic.end8648
|
|
logic.end8648:
|
|
%t79 = phi i1 [ true, %logic.from8646 ], [ %t78, %logic.rend8649 ]
|
|
br label %logic.from8650
|
|
logic.from8650:
|
|
br i1 %t79, label %logic.end8652, label %logic.rhs8651
|
|
logic.rhs8651:
|
|
%t80 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t80, ptr %a81
|
|
store { ptr, i64, i64 } { ptr @.str.5766, i64 4, i64 0 }, ptr %a83
|
|
%t84 = call i64 @finch_str_find(ptr %a81, ptr %a83)
|
|
%t85 = icmp sge i64 %t84, 0
|
|
br label %logic.rend8653
|
|
logic.rend8653:
|
|
br label %logic.end8652
|
|
logic.end8652:
|
|
%t86 = phi i1 [ true, %logic.from8650 ], [ %t85, %logic.rend8653 ]
|
|
br label %logic.from8654
|
|
logic.from8654:
|
|
br i1 %t86, label %logic.end8656, label %logic.rhs8655
|
|
logic.rhs8655:
|
|
%t87 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
store { ptr, i64, i64 } { ptr @.str.5768, i64 5, i64 0 }, ptr %a90
|
|
%t91 = call i64 @finch_str_find(ptr %a88, ptr %a90)
|
|
%t92 = icmp sge i64 %t91, 0
|
|
br label %logic.rend8657
|
|
logic.rend8657:
|
|
br label %logic.end8656
|
|
logic.end8656:
|
|
%t93 = phi i1 [ true, %logic.from8654 ], [ %t92, %logic.rend8657 ]
|
|
%t94 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1
|
|
store i1 %t93, ptr %t94
|
|
%t95 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t95, ptr %a96
|
|
store { ptr, i64, i64 } { ptr @.str.5770, i64 4, i64 0 }, ptr %a98
|
|
%t99 = call i64 @finch_str_find(ptr %a96, ptr %a98)
|
|
%t100 = icmp sge i64 %t99, 0
|
|
%t101 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 2
|
|
store i1 %t100, ptr %t101
|
|
%t102 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t102, ptr %a103
|
|
store { ptr, i64, i64 } { ptr @.str.5772, i64 5, i64 0 }, ptr %a105
|
|
%t106 = call i64 @finch_str_find(ptr %a103, ptr %a105)
|
|
%t107 = icmp sge i64 %t106, 0
|
|
br label %logic.from8658
|
|
logic.from8658:
|
|
br i1 %t107, label %logic.end8660, label %logic.rhs8659
|
|
logic.rhs8659:
|
|
%t108 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t108, ptr %a109
|
|
store { ptr, i64, i64 } { ptr @.str.5774, i64 6, i64 0 }, ptr %a111
|
|
%t112 = call i64 @finch_str_find(ptr %a109, ptr %a111)
|
|
%t113 = icmp sge i64 %t112, 0
|
|
br label %logic.rend8661
|
|
logic.rend8661:
|
|
br label %logic.end8660
|
|
logic.end8660:
|
|
%t114 = phi i1 [ true, %logic.from8658 ], [ %t113, %logic.rend8661 ]
|
|
br label %logic.from8662
|
|
logic.from8662:
|
|
br i1 %t114, label %logic.end8664, label %logic.rhs8663
|
|
logic.rhs8663:
|
|
%t115 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t115, ptr %a116
|
|
store { ptr, i64, i64 } { ptr @.str.5776, i64 5, i64 0 }, ptr %a118
|
|
%t119 = call i64 @finch_str_find(ptr %a116, ptr %a118)
|
|
%t120 = icmp sge i64 %t119, 0
|
|
br label %logic.rend8665
|
|
logic.rend8665:
|
|
br label %logic.end8664
|
|
logic.end8664:
|
|
%t121 = phi i1 [ true, %logic.from8662 ], [ %t120, %logic.rend8665 ]
|
|
%t122 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 3
|
|
store i1 %t121, ptr %t122
|
|
%t123 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t123, ptr %a124
|
|
store { ptr, i64, i64 } { ptr @.str.5778, i64 7, i64 0 }, ptr %a126
|
|
%t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126)
|
|
%t128 = icmp ne i32 %t127, 0
|
|
br label %logic.from8666
|
|
logic.from8666:
|
|
br i1 %t128, label %logic.end8668, label %logic.rhs8667
|
|
logic.rhs8667:
|
|
%t129 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t129, ptr %a130
|
|
store { ptr, i64, i64 } { ptr @.str.5780, i64 5, i64 0 }, ptr %a132
|
|
%t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132)
|
|
%t134 = icmp ne i32 %t133, 0
|
|
br label %logic.rend8669
|
|
logic.rend8669:
|
|
br label %logic.end8668
|
|
logic.end8668:
|
|
%t135 = phi i1 [ true, %logic.from8666 ], [ %t134, %logic.rend8669 ]
|
|
%t136 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4
|
|
store i1 %t135, ptr %t136
|
|
%t137 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t137, ptr %a138
|
|
store { ptr, i64, i64 } { ptr @.str.5782, i64 7, i64 0 }, ptr %a140
|
|
%t141 = call i32 @finch_str_starts(ptr %a138, ptr %a140)
|
|
%t142 = icmp ne i32 %t141, 0
|
|
br label %logic.from8670
|
|
logic.from8670:
|
|
br i1 %t142, label %logic.end8672, label %logic.rhs8671
|
|
logic.rhs8671:
|
|
%t143 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t143, ptr %a144
|
|
store { ptr, i64, i64 } { ptr @.str.5784, i64 5, i64 0 }, ptr %a146
|
|
%t147 = call i32 @finch_str_starts(ptr %a144, ptr %a146)
|
|
%t148 = icmp ne i32 %t147, 0
|
|
br label %logic.rend8673
|
|
logic.rend8673:
|
|
br label %logic.end8672
|
|
logic.end8672:
|
|
%t149 = phi i1 [ true, %logic.from8670 ], [ %t148, %logic.rend8673 ]
|
|
store i1 %t149, ptr %a150
|
|
%t151 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t151, ptr %a152
|
|
store { ptr, i64, i64 } { ptr @.str.5786, i64 5, i64 0 }, ptr %a154
|
|
%t155 = call i64 @finch_str_find(ptr %a152, ptr %a154)
|
|
%t156 = icmp sge i64 %t155, 0
|
|
br label %logic.from8674
|
|
logic.from8674:
|
|
br i1 %t156, label %logic.end8676, label %logic.rhs8675
|
|
logic.rhs8675:
|
|
%t157 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t157, ptr %a158
|
|
store { ptr, i64, i64 } { ptr @.str.5788, i64 6, i64 0 }, ptr %a160
|
|
%t161 = call i64 @finch_str_find(ptr %a158, ptr %a160)
|
|
%t162 = icmp sge i64 %t161, 0
|
|
br label %logic.rend8677
|
|
logic.rend8677:
|
|
br label %logic.end8676
|
|
logic.end8676:
|
|
%t163 = phi i1 [ true, %logic.from8674 ], [ %t162, %logic.rend8677 ]
|
|
store i1 %t163, ptr %a164
|
|
%t165 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1
|
|
%t166 = load i1, ptr %t165
|
|
br label %logic.from8678
|
|
logic.from8678:
|
|
br i1 %t166, label %logic.end8680, label %logic.rhs8679
|
|
logic.rhs8679:
|
|
%t167 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 3
|
|
%t168 = load i1, ptr %t167
|
|
%t169 = load i1, ptr %a164
|
|
%t170 = icmp ne i1 %t168, %t169
|
|
br label %logic.rend8681
|
|
logic.rend8681:
|
|
br label %logic.end8680
|
|
logic.end8680:
|
|
%t171 = phi i1 [ true, %logic.from8678 ], [ %t170, %logic.rend8681 ]
|
|
br label %logic.from8682
|
|
logic.from8682:
|
|
br i1 %t171, label %logic.end8684, label %logic.rhs8683
|
|
logic.rhs8683:
|
|
%t172 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4
|
|
%t173 = load i1, ptr %t172
|
|
%t174 = load i1, ptr %a150
|
|
%t175 = icmp ne i1 %t173, %t174
|
|
br label %logic.rend8685
|
|
logic.rend8685:
|
|
br label %logic.end8684
|
|
logic.end8684:
|
|
%t176 = phi i1 [ true, %logic.from8682 ], [ %t175, %logic.rend8685 ]
|
|
%t177 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5
|
|
store i1 %t176, ptr %t177
|
|
%t178 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 6
|
|
store { ptr, i64, i64 } { ptr @.str.5789, i64 0, i64 0 }, ptr %t178
|
|
%t179 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1
|
|
%t180 = load i1, ptr %t179
|
|
br i1 %t180, label %then8686, label %endif8688
|
|
then8686:
|
|
%t181 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 6
|
|
store { ptr, i64, i64 } { ptr @.str.5790, i64 4, i64 0 }, ptr %t181
|
|
br label %endif8688
|
|
endif8688:
|
|
%t182 = extractvalue { ptr, i64, i64 } { ptr @.str.5791, i64 8, i64 0 }, 0
|
|
%t183 = icmp eq ptr %t182, null
|
|
%t184 = select i1 %t183, ptr @.str.5792, ptr %t182
|
|
%t185 = call ptr @getenv(ptr %t184)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a186
|
|
call void @finch_str_from_c(ptr %a186, ptr %t185)
|
|
%t187 = load { ptr, i64, i64 }, ptr %a186
|
|
store { ptr, i64, i64 } %t187, ptr %a188
|
|
call void @finch_str_copy(ptr %a189, ptr %a188)
|
|
%t190 = load { ptr, i64, i64 }, ptr %a189
|
|
store { ptr, i64, i64 } %t190, ptr %a191
|
|
%t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %a191, i32 0, i32 1
|
|
%t193 = load i64, ptr %t192
|
|
%t194 = icmp sgt i64 %t193, 0
|
|
br i1 %t194, label %then8689, label %else8690
|
|
then8689:
|
|
%t195 = load { ptr, i64, i64 }, ptr %a191
|
|
%t196 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7
|
|
store { ptr, i64, i64 } %t195, ptr %a197
|
|
call void @finch_str_copy(ptr %a198, ptr %a197)
|
|
%t199 = load { ptr, i64, i64 }, ptr %a198
|
|
store { ptr, i64, i64 } %t199, ptr %t196
|
|
br label %endif8691
|
|
else8690:
|
|
%t200 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5
|
|
%t201 = load i1, ptr %t200
|
|
br label %logic.from8692
|
|
logic.from8692:
|
|
br i1 %t201, label %logic.rhs8693, label %logic.end8694
|
|
logic.rhs8693:
|
|
%t202 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1
|
|
%t203 = load i1, ptr %t202
|
|
br label %logic.rend8695
|
|
logic.rend8695:
|
|
br label %logic.end8694
|
|
logic.end8694:
|
|
%t204 = phi i1 [ false, %logic.from8692 ], [ %t203, %logic.rend8695 ]
|
|
br i1 %t204, label %then8696, label %else8697
|
|
then8696:
|
|
%t205 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7
|
|
store { ptr, i64, i64 } { ptr @.str.5793, i64 22, i64 0 }, ptr %t205
|
|
br label %endif8698
|
|
else8697:
|
|
%t206 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5
|
|
%t207 = load i1, ptr %t206
|
|
br label %logic.from8699
|
|
logic.from8699:
|
|
br i1 %t207, label %logic.rhs8700, label %logic.end8701
|
|
logic.rhs8700:
|
|
%t208 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4
|
|
%t209 = load i1, ptr %t208
|
|
br label %logic.rend8702
|
|
logic.rend8702:
|
|
br label %logic.end8701
|
|
logic.end8701:
|
|
%t210 = phi i1 [ false, %logic.from8699 ], [ %t209, %logic.rend8702 ]
|
|
br label %logic.from8703
|
|
logic.from8703:
|
|
br i1 %t210, label %logic.rhs8704, label %logic.end8705
|
|
logic.rhs8704:
|
|
%t211 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 3
|
|
%t212 = load i1, ptr %t211
|
|
%t213 = xor i1 %t212, true
|
|
br label %logic.rend8706
|
|
logic.rend8706:
|
|
br label %logic.end8705
|
|
logic.end8705:
|
|
%t214 = phi i1 [ false, %logic.from8703 ], [ %t213, %logic.rend8706 ]
|
|
br i1 %t214, label %then8707, label %else8708
|
|
then8707:
|
|
%t215 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7
|
|
store { ptr, i64, i64 } { ptr @.str.5794, i64 21, i64 0 }, ptr %t215
|
|
br label %endif8709
|
|
else8708:
|
|
%t216 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5
|
|
%t217 = load i1, ptr %t216
|
|
br i1 %t217, label %then8710, label %else8711
|
|
then8710:
|
|
%t218 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.5795, i64 15, i64 0 }, ptr %a220
|
|
store { ptr, i64, i64 } %t218, ptr %a221
|
|
call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221)
|
|
%t222 = load { ptr, i64, i64 }, ptr %a219
|
|
%t223 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7
|
|
store { ptr, i64, i64 } %t222, ptr %t223
|
|
br label %endif8712
|
|
else8711:
|
|
%t224 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7
|
|
store { ptr, i64, i64 } { ptr @.str.5796, i64 2, i64 0 }, ptr %t224
|
|
br label %endif8712
|
|
endif8712:
|
|
br label %endif8709
|
|
endif8709:
|
|
br label %endif8698
|
|
endif8698:
|
|
br label %endif8691
|
|
endif8691:
|
|
%t225 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5
|
|
%t226 = load i1, ptr %t225
|
|
br label %logic.from8713
|
|
logic.from8713:
|
|
br i1 %t226, label %logic.rhs8714, label %logic.end8715
|
|
logic.rhs8714:
|
|
%t227 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1
|
|
%t228 = load i1, ptr %t227
|
|
br label %logic.rend8716
|
|
logic.rend8716:
|
|
br label %logic.end8715
|
|
logic.end8715:
|
|
%t229 = phi i1 [ false, %logic.from8713 ], [ %t228, %logic.rend8716 ]
|
|
br i1 %t229, label %then8717, label %else8718
|
|
then8717:
|
|
%t230 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 8
|
|
store { ptr, i64, i64 } { ptr @.str.5797, i64 5, i64 0 }, ptr %t230
|
|
br label %endif8719
|
|
else8718:
|
|
%t231 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5
|
|
%t232 = load i1, ptr %t231
|
|
br label %logic.from8720
|
|
logic.from8720:
|
|
br i1 %t232, label %logic.rhs8721, label %logic.end8722
|
|
logic.rhs8721:
|
|
%t233 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4
|
|
%t234 = load i1, ptr %t233
|
|
br label %logic.rend8723
|
|
logic.rend8723:
|
|
br label %logic.end8722
|
|
logic.end8722:
|
|
%t235 = phi i1 [ false, %logic.from8720 ], [ %t234, %logic.rend8723 ]
|
|
br label %logic.from8724
|
|
logic.from8724:
|
|
br i1 %t235, label %logic.rhs8725, label %logic.end8726
|
|
logic.rhs8725:
|
|
%t236 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 3
|
|
%t237 = load i1, ptr %t236
|
|
%t238 = xor i1 %t237, true
|
|
br label %logic.rend8727
|
|
logic.rend8727:
|
|
br label %logic.end8726
|
|
logic.end8726:
|
|
%t239 = phi i1 [ false, %logic.from8724 ], [ %t238, %logic.rend8727 ]
|
|
br i1 %t239, label %then8728, label %endif8730
|
|
then8728:
|
|
%t240 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 8
|
|
store { ptr, i64, i64 } { ptr @.str.5798, i64 13, i64 0 }, ptr %t240
|
|
br label %endif8730
|
|
endif8730:
|
|
br label %endif8719
|
|
endif8719:
|
|
%t241 = load %S.platform.Target, ptr %a66
|
|
store %S.platform.Target %t241, ptr %a242
|
|
call void @finch.copy.S_platform_Target(ptr %a243, ptr %a242)
|
|
%t244 = load %S.platform.Target, ptr %a243
|
|
ret %S.platform.Target %t244
|
|
}
|
|
|
|
define internal i1 @finch.platform.charIsSigned(%S.platform.Target %p0) {
|
|
entry:
|
|
%a1 = alloca %S.platform.Target, align 16
|
|
store %S.platform.Target %p0, ptr %a1
|
|
%t2 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 4
|
|
%t3 = load i1, ptr %t2
|
|
%t4 = xor i1 %t3, true
|
|
br label %logic.from8731
|
|
logic.from8731:
|
|
br i1 %t4, label %logic.end8733, label %logic.rhs8732
|
|
logic.rhs8732:
|
|
%t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3
|
|
%t6 = load i1, ptr %t5
|
|
br label %logic.rend8734
|
|
logic.rend8734:
|
|
br label %logic.end8733
|
|
logic.end8733:
|
|
%t7 = phi i1 [ true, %logic.from8731 ], [ %t6, %logic.rend8734 ]
|
|
br label %logic.from8735
|
|
logic.from8735:
|
|
br i1 %t7, label %logic.end8737, label %logic.rhs8736
|
|
logic.rhs8736:
|
|
%t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1
|
|
%t9 = load i1, ptr %t8
|
|
br label %logic.rend8738
|
|
logic.rend8738:
|
|
br label %logic.end8737
|
|
logic.end8737:
|
|
%t10 = phi i1 [ true, %logic.from8735 ], [ %t9, %logic.rend8738 ]
|
|
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.cond8739
|
|
each.cond8739:
|
|
%t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t5 = load i64, ptr %t4
|
|
%t6 = load i64, ptr %a3
|
|
%t7 = icmp slt i64 %t6, %t5
|
|
br i1 %t7, label %each.body8740, label %each.end8742
|
|
each.body8740:
|
|
%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.step8741
|
|
each.step8741:
|
|
%t17 = load i64, ptr %a3
|
|
%t18 = add i64 %t17, 1
|
|
store i64 %t18, ptr %a3
|
|
br label %each.cond8739
|
|
each.end8742:
|
|
store { ptr, i64, i64 } { ptr @.str.5799, i64 16, i64 0 }, ptr %a19
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a20
|
|
store i64 0, ptr %a21
|
|
br label %for.cond8743
|
|
for.cond8743:
|
|
%t22 = load i64, ptr %a21
|
|
%t23 = icmp slt i64 %t22, 8
|
|
br i1 %t23, label %for.body8744, label %for.end8746
|
|
for.body8744:
|
|
%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 %range8747, label %inrange8748
|
|
range8747:
|
|
call void @finch_panic_index(ptr @.str.5800, i64 17, i64 %t32, i64 %t34)
|
|
unreachable
|
|
inrange8748:
|
|
%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.step8745
|
|
for.step8745:
|
|
%t45 = load i64, ptr %a21
|
|
%t46 = add i64 %t45, 1
|
|
store i64 %t46, ptr %a21
|
|
br label %for.cond8743
|
|
for.end8746:
|
|
%t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.5801, i64 0, i64 0 }, ptr %a48
|
|
call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48)
|
|
%t50 = load { ptr, i64, i64 }, ptr %a49
|
|
ret { ptr, i64, i64 } %t50
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
store { ptr, i64, i64 } { ptr @.str.5804, i64 1, i64 0 }, ptr %a5
|
|
store { ptr, i64, i64 } { ptr @.str.5805, i64 4, i64 0 }, ptr %a6
|
|
call void @finch_str_replace(ptr %a4, ptr %a3, ptr %a5, ptr %a6)
|
|
%t7 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.5802, i64 1, i64 0 }, ptr %a9
|
|
store { ptr, i64, i64 } %t7, ptr %a10
|
|
call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a8
|
|
store { ptr, i64, i64 } %t11, ptr %a13
|
|
store { ptr, i64, i64 } { ptr @.str.5806, i64 1, i64 0 }, ptr %a14
|
|
call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a12
|
|
ret { ptr, i64, i64 } %t15
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.linker.cacheDir() {
|
|
entry:
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%t1 = extractvalue { ptr, i64, i64 } { ptr @.str.5807, i64 14, i64 0 }, 0
|
|
%t2 = icmp eq ptr %t1, null
|
|
%t3 = select i1 %t2, ptr @.str.5808, 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 %then8749, label %endif8751
|
|
then8749:
|
|
%t14 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t14, ptr %a16
|
|
store { ptr, i64, i64 } { ptr @.str.5809, i64 6, i64 0 }, ptr %a17
|
|
call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17)
|
|
%t18 = load { ptr, i64, i64 }, ptr %a15
|
|
ret { ptr, i64, i64 } %t18
|
|
endif8751:
|
|
%t19 = extractvalue { ptr, i64, i64 } { ptr @.str.5810, i64 4, i64 0 }, 0
|
|
%t20 = icmp eq ptr %t19, null
|
|
%t21 = select i1 %t20, ptr @.str.5811, 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 %then8752, label %endif8754
|
|
then8752:
|
|
%t32 = load { ptr, i64, i64 }, ptr %a28
|
|
store { ptr, i64, i64 } %t32, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.5812, i64 13, i64 0 }, ptr %a35
|
|
call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35)
|
|
%t36 = load { ptr, i64, i64 }, ptr %a33
|
|
ret { ptr, i64, i64 } %t36
|
|
endif8754:
|
|
ret { ptr, i64, i64 } { ptr @.str.5813, i64 16, i64 0 }
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %p0, %S.platform.Target %p1) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca %S.platform.Target, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a32 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a47 = alloca i64, align 16
|
|
%a51 = alloca { ptr, i64, i64 }, align 16
|
|
%a56 = alloca { ptr, i64, i64 }, align 16
|
|
%a57 = alloca { ptr, i64, i64 }, align 16
|
|
%a58 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a65 = alloca { ptr, i64, i64 }, align 16
|
|
%a66 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a72 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a87 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store %S.platform.Target %p1, ptr %a2
|
|
%t3 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t3, ptr %a4
|
|
store { ptr, i64, i64 } { ptr @.str.5815, i64 10, i64 0 }, ptr %a6
|
|
%t7 = call i32 @finch_str_ends(ptr %a4, ptr %a6)
|
|
%t8 = icmp ne i32 %t7, 0
|
|
br i1 %t8, label %then8755, label %endif8757
|
|
then8755:
|
|
%t9 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t9, ptr %a10
|
|
%t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t13 = load i64, ptr %t12
|
|
%t14 = sub i64 %t13, 10
|
|
call void @finch_str_sub(ptr %a11, ptr %a10, i64 0, i64 %t14, ptr @.str.5817, i64 42)
|
|
%t15 = load { ptr, i64, i64 }, ptr %a11
|
|
%t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15)
|
|
store { ptr, i64, i64 } { ptr @.str.5816, i64 11, i64 0 }, ptr %a18
|
|
store { ptr, i64, i64 } %t16, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
ret { ptr, i64, i64 } %t20
|
|
endif8757:
|
|
%t21 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5
|
|
%t22 = load i1, ptr %t21
|
|
%t23 = xor i1 %t22, true
|
|
br i1 %t23, label %then8758, label %endif8760
|
|
then8758:
|
|
store { ptr, i64, i64 } { ptr @.str.5818, i64 24, i64 0 }, ptr %a24
|
|
%t25 = load { ptr, i64, i64 }, ptr %a1
|
|
%t26 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t25)
|
|
store { ptr, i64, i64 } { ptr @.str.5819, i64 18, i64 0 }, ptr %a28
|
|
store { ptr, i64, i64 } %t26, ptr %a29
|
|
call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29)
|
|
%t30 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t30, ptr %a32
|
|
store { ptr, i64, i64 } { ptr @.str.5820, i64 4, i64 0 }, ptr %a33
|
|
call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a31
|
|
%t35 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } %t34, ptr %a37
|
|
store { ptr, i64, i64 } %t35, ptr %a38
|
|
call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38)
|
|
%t39 = load { ptr, i64, i64 }, ptr %a36
|
|
store { ptr, i64, i64 } %t39, ptr %a41
|
|
store { ptr, i64, i64 } { ptr @.str.5821, i64 14, i64 0 }, ptr %a42
|
|
call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42)
|
|
%t43 = load { ptr, i64, i64 }, ptr %a40
|
|
store { ptr, i64, i64 } %t43, ptr %a45
|
|
call void @finch_str_copy(ptr %a44, ptr %a45)
|
|
%t46 = call i64 @finch_shell(ptr %a44)
|
|
store i64 %t46, ptr %a47
|
|
%t48 = load i64, ptr %a47
|
|
%t49 = icmp eq i64 %t48, 0
|
|
br label %logic.from8761
|
|
logic.from8761:
|
|
br i1 %t49, label %logic.rhs8762, label %logic.end8763
|
|
logic.rhs8762:
|
|
%t50 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } %t50, ptr %a51
|
|
%t52 = call i32 @finch_file_exists(ptr %a51)
|
|
%t53 = icmp ne i32 %t52, 0
|
|
br label %logic.rend8764
|
|
logic.rend8764:
|
|
br label %logic.end8763
|
|
logic.end8763:
|
|
%t54 = phi i1 [ false, %logic.from8761 ], [ %t53, %logic.rend8764 ]
|
|
br i1 %t54, label %then8765, label %endif8767
|
|
then8765:
|
|
%t55 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } %t55, ptr %a56
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a57
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a58
|
|
%t59 = call i32 @finch_try_read_file(ptr %a57, ptr %a56, ptr %a58)
|
|
%t60 = icmp eq i32 %t59, 0
|
|
%t61 = load { ptr, i64, i64 }, ptr %a58
|
|
%t62 = load { ptr, i64, i64 }, ptr %a57
|
|
br i1 %t60, label %or.failed8768, label %or.ok8769
|
|
or.failed8768:
|
|
store { ptr, i64, i64 } %t61, ptr %a63
|
|
br label %or.bend8770
|
|
or.bend8770:
|
|
br label %or.end8771
|
|
or.ok8769:
|
|
br label %or.end8771
|
|
or.end8771:
|
|
%t64 = phi { ptr, i64, i64 } [ { ptr @.str.5822, i64 0, i64 0 }, %or.bend8770 ], [ %t62, %or.ok8769 ]
|
|
store { ptr, i64, i64 } %t64, ptr %a65
|
|
call void @finch_str_trim(ptr %a66, ptr %a65)
|
|
%t67 = load { ptr, i64, i64 }, ptr %a66
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
%t69 = load { ptr, i64, i64 }, ptr %a24
|
|
store { ptr, i64, i64 } { ptr @.str.5824, i64 7, i64 0 }, ptr %a71
|
|
store { ptr, i64, i64 } %t69, ptr %a72
|
|
call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72)
|
|
%t73 = load { ptr, i64, i64 }, ptr %a70
|
|
store { ptr, i64, i64 } %t73, ptr %a75
|
|
store { ptr, i64, i64 } { ptr @.str.5825, i64 1, i64 0 }, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
store { ptr, i64, i64 } %t77, ptr %a79
|
|
call void @finch_str_copy(ptr %a78, ptr %a79)
|
|
%t80 = call i64 @finch_shell(ptr %a78)
|
|
%t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a68, i32 0, i32 1
|
|
%t82 = load i64, ptr %t81
|
|
%t83 = icmp sgt i64 %t82, 0
|
|
br i1 %t83, label %then8772, label %endif8774
|
|
then8772:
|
|
%t84 = load { ptr, i64, i64 }, ptr %a68
|
|
ret { ptr, i64, i64 } %t84
|
|
endif8774:
|
|
br label %endif8767
|
|
endif8767:
|
|
br label %endif8760
|
|
endif8760:
|
|
%t85 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } { ptr @.str.5826, i64 2, i64 0 }, ptr %a87
|
|
store { ptr, i64, i64 } %t85, ptr %a88
|
|
call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88)
|
|
%t89 = load { ptr, i64, i64 }, ptr %a86
|
|
%t90 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t89)
|
|
ret { ptr, i64, i64 } %t90
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a4 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca i64, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca i64, align 16
|
|
%a33 = alloca i64, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t2, ptr %a3
|
|
call void @finch_str_copy(ptr %a4, ptr %a3)
|
|
%t5 = load { ptr, i64, i64 }, ptr %a4
|
|
store { ptr, i64, i64 } %t5, ptr %a6
|
|
%t7 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
store { ptr, i64, i64 } { ptr @.str.5828, i64 1, i64 0 }, ptr %a10
|
|
%t11 = call i64 @finch_str_find(ptr %a8, ptr %a10)
|
|
store i64 %t11, ptr %a12
|
|
br label %while.cond8775
|
|
while.cond8775:
|
|
%t13 = load i64, ptr %a12
|
|
%t14 = icmp sge i64 %t13, 0
|
|
br i1 %t14, label %while.body8776, label %while.end8777
|
|
while.body8776:
|
|
%t15 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t15, ptr %a16
|
|
%t18 = load i64, ptr %a12
|
|
%t19 = add i64 %t18, 1
|
|
%t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t21 = load i64, ptr %t20
|
|
call void @finch_str_sub(ptr %a17, ptr %a16, i64 %t19, i64 %t21, ptr @.str.5829, i64 63)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a17
|
|
store { ptr, i64, i64 } %t22, ptr %a6
|
|
%t23 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t23, ptr %a24
|
|
store { ptr, i64, i64 } { ptr @.str.5831, i64 1, i64 0 }, ptr %a26
|
|
%t27 = call i64 @finch_str_find(ptr %a24, ptr %a26)
|
|
store i64 %t27, ptr %a12
|
|
br label %while.cond8775
|
|
while.end8777:
|
|
%t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t29 = load i64, ptr %t28
|
|
store i64 %t29, ptr %a30
|
|
%t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t32 = load i64, ptr %t31
|
|
store i64 0, ptr %a33
|
|
br label %for.cond8778
|
|
for.cond8778:
|
|
%t34 = load i64, ptr %a33
|
|
%t35 = icmp slt i64 %t34, %t32
|
|
br i1 %t35, label %for.body8779, label %for.end8781
|
|
for.body8779:
|
|
%t36 = load i64, ptr %a33
|
|
%t37 = load { ptr, i64, i64 }, ptr %a6
|
|
%t38 = extractvalue { ptr, i64, i64 } %t37, 1
|
|
%t39 = icmp uge i64 %t36, %t38
|
|
br i1 %t39, label %range8782, label %inrange8783
|
|
range8782:
|
|
call void @finch_panic_index(ptr @.str.5832, i64 68, i64 %t36, i64 %t38)
|
|
unreachable
|
|
inrange8783:
|
|
%t40 = extractvalue { ptr, i64, i64 } %t37, 0
|
|
%t41 = getelementptr inbounds i8, ptr %t40, i64 %t36
|
|
%t42 = load i8, ptr %t41
|
|
%t43 = icmp eq i8 %t42, 46
|
|
br i1 %t43, label %then8784, label %endif8786
|
|
then8784:
|
|
%t44 = load i64, ptr %a33
|
|
store i64 %t44, ptr %a30
|
|
br label %endif8786
|
|
endif8786:
|
|
br label %for.step8780
|
|
for.step8780:
|
|
%t45 = load i64, ptr %a33
|
|
%t46 = add i64 %t45, 1
|
|
store i64 %t46, ptr %a33
|
|
br label %for.cond8778
|
|
for.end8781:
|
|
%t47 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t47, ptr %a48
|
|
%t50 = load i64, ptr %a30
|
|
call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.5833, i64 72)
|
|
%t51 = load { ptr, i64, i64 }, ptr %a49
|
|
store { ptr, i64, i64 } %t51, ptr %a6
|
|
br label %while.cond8787
|
|
while.cond8787:
|
|
%t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t53 = load i64, ptr %t52
|
|
%t54 = icmp sgt i64 %t53, 0
|
|
br label %logic.from8790
|
|
logic.from8790:
|
|
br i1 %t54, label %logic.rhs8791, label %logic.end8792
|
|
logic.rhs8791:
|
|
%t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t56 = load i64, ptr %t55
|
|
%t57 = sub i64 %t56, 1
|
|
%t58 = load { ptr, i64, i64 }, ptr %a6
|
|
%t59 = extractvalue { ptr, i64, i64 } %t58, 1
|
|
%t60 = icmp uge i64 %t57, %t59
|
|
br i1 %t60, label %range8793, label %inrange8794
|
|
range8793:
|
|
call void @finch_panic_index(ptr @.str.5834, i64 73, i64 %t57, i64 %t59)
|
|
unreachable
|
|
inrange8794:
|
|
%t61 = extractvalue { ptr, i64, i64 } %t58, 0
|
|
%t62 = getelementptr inbounds i8, ptr %t61, i64 %t57
|
|
%t63 = load i8, ptr %t62
|
|
%t64 = icmp uge i8 %t63, 48
|
|
br label %logic.rend8795
|
|
logic.rend8795:
|
|
br label %logic.end8792
|
|
logic.end8792:
|
|
%t65 = phi i1 [ false, %logic.from8790 ], [ %t64, %logic.rend8795 ]
|
|
br label %logic.from8796
|
|
logic.from8796:
|
|
br i1 %t65, label %logic.rhs8797, label %logic.end8798
|
|
logic.rhs8797:
|
|
%t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t67 = load i64, ptr %t66
|
|
%t68 = sub i64 %t67, 1
|
|
%t69 = load { ptr, i64, i64 }, ptr %a6
|
|
%t70 = extractvalue { ptr, i64, i64 } %t69, 1
|
|
%t71 = icmp uge i64 %t68, %t70
|
|
br i1 %t71, label %range8799, label %inrange8800
|
|
range8799:
|
|
call void @finch_panic_index(ptr @.str.5835, i64 73, i64 %t68, i64 %t70)
|
|
unreachable
|
|
inrange8800:
|
|
%t72 = extractvalue { ptr, i64, i64 } %t69, 0
|
|
%t73 = getelementptr inbounds i8, ptr %t72, i64 %t68
|
|
%t74 = load i8, ptr %t73
|
|
%t75 = icmp ule i8 %t74, 57
|
|
br label %logic.rend8801
|
|
logic.rend8801:
|
|
br label %logic.end8798
|
|
logic.end8798:
|
|
%t76 = phi i1 [ false, %logic.from8796 ], [ %t75, %logic.rend8801 ]
|
|
br i1 %t76, label %while.body8788, label %while.end8789
|
|
while.body8788:
|
|
%t77 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
%t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1
|
|
%t81 = load i64, ptr %t80
|
|
%t82 = sub i64 %t81, 1
|
|
call void @finch_str_sub(ptr %a79, ptr %a78, i64 0, i64 %t82, ptr @.str.5836, i64 74)
|
|
%t83 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } %t83, ptr %a6
|
|
br label %while.cond8787
|
|
while.end8789:
|
|
%t84 = load { ptr, i64, i64 }, ptr %a6
|
|
store { ptr, i64, i64 } %t84, ptr %a85
|
|
call void @finch_str_lower(ptr %a86, ptr %a85)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a86
|
|
ret { ptr, i64, i64 } %t87
|
|
}
|
|
|
|
define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca i64, align 16
|
|
%a11 = alloca i64, align 16
|
|
%a16 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
%t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1
|
|
%t3 = load i64, ptr %t2
|
|
%t4 = icmp sgt i64 %t3, 0
|
|
br label %logic.from8802
|
|
logic.from8802:
|
|
br i1 %t4, label %logic.rhs8803, label %logic.end8804
|
|
logic.rhs8803:
|
|
%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.cond8805
|
|
find.cond8805:
|
|
%t12 = load i64, ptr %a11
|
|
%t13 = icmp slt i64 %t12, %t9
|
|
br i1 %t13, label %find.body8806, label %find.end8809
|
|
find.body8806:
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t12
|
|
%t15 = load { ptr, i64, i64 }, ptr %t14
|
|
store { ptr, i64, i64 } %t15, ptr %a16
|
|
store { ptr, i64, i64 } %t7, ptr %a17
|
|
%t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17)
|
|
%t19 = icmp ne i32 %t18, 0
|
|
br i1 %t19, label %find.hit8807, label %find.next8808
|
|
find.hit8807:
|
|
store i64 %t12, ptr %a8
|
|
br label %find.end8809
|
|
find.next8808:
|
|
%t20 = add i64 %t12, 1
|
|
store i64 %t20, ptr %a11
|
|
br label %find.cond8805
|
|
find.end8809:
|
|
%t21 = load i64, ptr %a8
|
|
%t22 = icmp sge i64 %t21, 0
|
|
%t23 = xor i1 %t22, true
|
|
br label %logic.rend8810
|
|
logic.rend8810:
|
|
br label %logic.end8804
|
|
logic.end8804:
|
|
%t24 = phi i1 [ false, %logic.from8802 ], [ %t23, %logic.rend8810 ]
|
|
br i1 %t24, label %then8811, label %endif8813
|
|
then8811:
|
|
%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 %endif8813
|
|
endif8813:
|
|
ret void
|
|
}
|
|
|
|
define internal { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca { ptr, i64, i64 }, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca i64, align 16
|
|
%a14 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca i64, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a49 = alloca { ptr, i64, i64 }, align 16
|
|
%a50 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store { ptr, i64, i64 } %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
%t7 = load { ptr, i64, i64 }, ptr %a2
|
|
store { ptr, i64, i64 } %t7, ptr %a8
|
|
%t9 = call i64 @finch_str_find(ptr %a5, ptr %a8)
|
|
store i64 %t9, ptr %a10
|
|
%t11 = load i64, ptr %a10
|
|
%t12 = icmp slt i64 %t11, 0
|
|
br i1 %t12, label %then8814, label %endif8816
|
|
then8814:
|
|
ret { ptr, i64, i64 } { ptr @.str.5839, i64 0, i64 0 }
|
|
endif8816:
|
|
%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.5840, i64 95)
|
|
%t22 = load { ptr, i64, i64 }, ptr %a15
|
|
store { ptr, i64, i64 } %t22, ptr %a23
|
|
store i64 0, ptr %a24
|
|
br label %while.cond8817
|
|
while.cond8817:
|
|
%t25 = load i64, ptr %a24
|
|
%t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1
|
|
%t27 = load i64, ptr %t26
|
|
%t28 = icmp slt i64 %t25, %t27
|
|
br label %logic.from8820
|
|
logic.from8820:
|
|
br i1 %t28, label %logic.rhs8821, label %logic.end8822
|
|
logic.rhs8821:
|
|
%t29 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t29, ptr %a30
|
|
%t32 = load i64, ptr %a24
|
|
%t33 = load { ptr, i64, i64 }, ptr %a23
|
|
%t34 = extractvalue { ptr, i64, i64 } %t33, 1
|
|
%t35 = icmp uge i64 %t32, %t34
|
|
br i1 %t35, label %range8823, label %inrange8824
|
|
range8823:
|
|
call void @finch_panic_index(ptr @.str.5842, i64 97, i64 %t32, i64 %t34)
|
|
unreachable
|
|
inrange8824:
|
|
%t36 = extractvalue { ptr, i64, i64 } %t33, 0
|
|
%t37 = getelementptr inbounds i8, ptr %t36, i64 %t32
|
|
%t38 = load i8, ptr %t37
|
|
call void @finch_str_from_char(ptr %a39, i8 signext %t38)
|
|
%t40 = load { ptr, i64, i64 }, ptr %a39
|
|
store { ptr, i64, i64 } %t40, ptr %a41
|
|
%t42 = call i64 @finch_str_find(ptr %a30, ptr %a41)
|
|
%t43 = icmp sge i64 %t42, 0
|
|
%t44 = xor i1 %t43, true
|
|
br label %logic.rend8825
|
|
logic.rend8825:
|
|
br label %logic.end8822
|
|
logic.end8822:
|
|
%t45 = phi i1 [ false, %logic.from8820 ], [ %t44, %logic.rend8825 ]
|
|
br i1 %t45, label %while.body8818, label %while.end8819
|
|
while.body8818:
|
|
%t46 = load i64, ptr %a24
|
|
%t47 = add i64 %t46, 1
|
|
store i64 %t47, ptr %a24
|
|
br label %while.cond8817
|
|
while.end8819:
|
|
%t48 = load { ptr, i64, i64 }, ptr %a23
|
|
store { ptr, i64, i64 } %t48, ptr %a49
|
|
%t51 = load i64, ptr %a24
|
|
call void @finch_str_sub(ptr %a50, ptr %a49, i64 0, i64 %t51, ptr @.str.5843, i64 100)
|
|
%t52 = load { ptr, i64, i64 }, ptr %a50
|
|
ret { ptr, i64, i64 } %t52
|
|
}
|
|
|
|
define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca %S.cimport.CImports, align 16
|
|
%a3 = alloca %S.platform.Target, align 16
|
|
%a4 = alloca %S.linker.Names, align 16
|
|
%a5 = alloca %S.linker.Names, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a9 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a12 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca i64, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a28 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a36 = alloca { ptr, i64, i64 }, align 16
|
|
%a37 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a45 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a54 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a62 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a70 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a82 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a102 = alloca { ptr, i64, i64 }, align 16
|
|
%a103 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a112 = alloca { ptr, i64, i64 }, align 16
|
|
%a113 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a128 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca i64, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a173 = alloca { ptr, i64, i64 }, align 16
|
|
%a184 = alloca { ptr, i64, i64 }, align 16
|
|
%a185 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca i64, align 16
|
|
%a195 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
%a216 = alloca { ptr, i64, i64 }, align 16
|
|
%a220 = alloca i64, align 16
|
|
%a223 = alloca i64, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca i64, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a240 = alloca { ptr, i64, i64 }, align 16
|
|
%a265 = alloca i64, align 16
|
|
%a276 = alloca { ptr, i64, i64 }, align 16
|
|
%a277 = alloca { ptr, i64, i64 }, align 16
|
|
%a279 = alloca { ptr, i64, i64 }, align 16
|
|
%a280 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca i64, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a297 = alloca { ptr, i64, i64 }, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca { ptr, i64, i64 }, align 16
|
|
%a309 = alloca { ptr, i64, i64 }, align 16
|
|
%a314 = alloca { ptr, i64, i64 }, align 16
|
|
%a315 = alloca { ptr, i64, i64 }, align 16
|
|
%a316 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a323 = alloca { ptr, i64, i64 }, align 16
|
|
%a324 = alloca { ptr, i64, i64 }, align 16
|
|
%a325 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a328 = alloca { ptr, i64, i64 }, align 16
|
|
%a329 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a343 = alloca { ptr, i64, i64 }, align 16
|
|
%a352 = alloca { ptr, i64, i64 }, align 16
|
|
%a357 = alloca { ptr, i64, i64 }, align 16
|
|
%a358 = alloca { ptr, i64, i64 }, align 16
|
|
%a359 = alloca { ptr, i64, i64 }, align 16
|
|
%a361 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a363 = alloca { ptr, i64, i64 }, align 16
|
|
%a366 = alloca { ptr, i64, i64 }, align 16
|
|
%a367 = alloca { ptr, i64, i64 }, align 16
|
|
%a368 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a372 = alloca { ptr, i64, i64 }, align 16
|
|
%a381 = alloca { ptr, i64, i64 }, align 16
|
|
%a382 = alloca { ptr, i64, i64 }, align 16
|
|
%a383 = alloca { ptr, i64, i64 }, align 16
|
|
%a385 = alloca { ptr, i64, i64 }, align 16
|
|
%a386 = alloca { ptr, i64, i64 }, align 16
|
|
%a387 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a429 = alloca { ptr, i64, i64 }, align 16
|
|
%a430 = alloca { ptr, i64, i64 }, align 16
|
|
%a431 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store %S.cimport.CImports %p1, ptr %a2
|
|
store %S.platform.Target %p2, ptr %a3
|
|
store %S.linker.Names zeroinitializer, ptr %a4
|
|
store %S.linker.Names zeroinitializer, ptr %a5
|
|
%t6 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t6, ptr %a7
|
|
store { ptr, i64, i64 } { ptr @.str.5845, i64 1, i64 0 }, ptr %a9
|
|
call void @finch_str_split(ptr %a10, ptr %a7, ptr %a9)
|
|
%t11 = load { ptr, i64, i64 }, ptr %a10
|
|
store { ptr, i64, i64 } %t11, ptr %a12
|
|
store i64 0, ptr %a13
|
|
br label %each.cond8826
|
|
each.cond8826:
|
|
%t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a12, i32 0, i32 1
|
|
%t15 = load i64, ptr %t14
|
|
%t16 = load i64, ptr %a13
|
|
%t17 = icmp slt i64 %t16, %t15
|
|
br i1 %t17, label %each.body8827, label %each.end8829
|
|
each.body8827:
|
|
%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.5848, i64 24, i64 0 }, ptr %a30
|
|
%t31 = call i64 @finch_str_find(ptr %a28, ptr %a30)
|
|
%t32 = icmp sge i64 %t31, 0
|
|
br i1 %t32, label %then8830, label %else8831
|
|
then8830:
|
|
%t33 = load { ptr, i64, i64 }, ptr %a26
|
|
%t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.5849, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.5850, i64 1, i64 0 })
|
|
call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34)
|
|
br label %endif8832
|
|
else8831:
|
|
%t35 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t35, ptr %a36
|
|
store { ptr, i64, i64 } { ptr @.str.5852, i64 18, i64 0 }, ptr %a38
|
|
%t39 = call i64 @finch_str_find(ptr %a36, ptr %a38)
|
|
%t40 = icmp sge i64 %t39, 0
|
|
br i1 %t40, label %then8833, label %else8834
|
|
then8833:
|
|
%t41 = load { ptr, i64, i64 }, ptr %a26
|
|
%t42 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t41, { ptr, i64, i64 } { ptr @.str.5853, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5854, i64 2, i64 0 })
|
|
call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t42)
|
|
br label %endif8835
|
|
else8834:
|
|
%t43 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t43, ptr %a44
|
|
store { ptr, i64, i64 } { ptr @.str.5856, i64 27, i64 0 }, ptr %a46
|
|
%t47 = call i64 @finch_str_find(ptr %a44, ptr %a46)
|
|
%t48 = icmp sge i64 %t47, 0
|
|
br i1 %t48, label %then8836, label %else8837
|
|
then8836:
|
|
%t49 = load { ptr, i64, i64 }, ptr %a26
|
|
%t50 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t49, { ptr, i64, i64 } { ptr @.str.5857, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.5858, i64 3, i64 0 })
|
|
call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t50)
|
|
br label %endif8838
|
|
else8837:
|
|
%t51 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
store { ptr, i64, i64 } { ptr @.str.5860, i64 14, i64 0 }, ptr %a54
|
|
%t55 = call i64 @finch_str_find(ptr %a52, ptr %a54)
|
|
%t56 = icmp sge i64 %t55, 0
|
|
br i1 %t56, label %then8839, label %else8840
|
|
then8839:
|
|
%t57 = load { ptr, i64, i64 }, ptr %a26
|
|
%t58 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t57, { ptr, i64, i64 } { ptr @.str.5861, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5862, i64 4, i64 0 })
|
|
call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t58)
|
|
br label %endif8841
|
|
else8840:
|
|
%t59 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t59, ptr %a60
|
|
store { ptr, i64, i64 } { ptr @.str.5864, i64 24, i64 0 }, ptr %a62
|
|
%t63 = call i64 @finch_str_find(ptr %a60, ptr %a62)
|
|
%t64 = icmp sge i64 %t63, 0
|
|
br i1 %t64, label %then8842, label %else8843
|
|
then8842:
|
|
%t65 = load { ptr, i64, i64 }, ptr %a26
|
|
%t66 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t65, { ptr, i64, i64 } { ptr @.str.5865, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.5866, i64 4, i64 0 })
|
|
call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t66)
|
|
br label %endif8844
|
|
else8843:
|
|
%t67 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t67, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.5868, i64 13, i64 0 }, ptr %a70
|
|
%t71 = call i64 @finch_str_find(ptr %a68, ptr %a70)
|
|
%t72 = icmp sge i64 %t71, 0
|
|
br i1 %t72, label %then8845, label %else8846
|
|
then8845:
|
|
%t73 = load { ptr, i64, i64 }, ptr %a26
|
|
%t74 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t73, { ptr, i64, i64 } { ptr @.str.5869, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5870, i64 1, i64 0 })
|
|
call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t74)
|
|
br label %endif8847
|
|
else8846:
|
|
%t75 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t75, ptr %a76
|
|
store { ptr, i64, i64 } { ptr @.str.5872, i64 11, i64 0 }, ptr %a78
|
|
%t79 = call i64 @finch_str_find(ptr %a76, ptr %a78)
|
|
%t80 = icmp sge i64 %t79, 0
|
|
br label %logic.from8848
|
|
logic.from8848:
|
|
br i1 %t80, label %logic.rhs8849, label %logic.end8850
|
|
logic.rhs8849:
|
|
%t81 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t81, ptr %a82
|
|
store { ptr, i64, i64 } { ptr @.str.5874, i64 9, i64 0 }, ptr %a84
|
|
%t85 = call i64 @finch_str_find(ptr %a82, ptr %a84)
|
|
%t86 = icmp sge i64 %t85, 0
|
|
br label %logic.rend8851
|
|
logic.rend8851:
|
|
br label %logic.end8850
|
|
logic.end8850:
|
|
%t87 = phi i1 [ false, %logic.from8848 ], [ %t86, %logic.rend8851 ]
|
|
br i1 %t87, label %then8852, label %else8853
|
|
then8852:
|
|
%t88 = load { ptr, i64, i64 }, ptr %a26
|
|
%t89 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t88, { ptr, i64, i64 } { ptr @.str.5875, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5876, i64 1, i64 0 })
|
|
store { ptr, i64, i64 } %t89, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.5877, i64 10, i64 0 }, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t93)
|
|
br label %endif8854
|
|
else8853:
|
|
%t94 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t94, ptr %a95
|
|
store { ptr, i64, i64 } { ptr @.str.5879, i64 1, i64 0 }, ptr %a97
|
|
%t98 = call i32 @finch_str_starts(ptr %a95, ptr %a97)
|
|
%t99 = icmp ne i32 %t98, 0
|
|
br label %logic.from8855
|
|
logic.from8855:
|
|
br i1 %t99, label %logic.rhs8856, label %logic.end8857
|
|
logic.rhs8856:
|
|
%t100 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t100, ptr %a101
|
|
store { ptr, i64, i64 } { ptr @.str.5881, i64 19, i64 0 }, ptr %a103
|
|
%t104 = call i64 @finch_str_find(ptr %a101, ptr %a103)
|
|
%t105 = icmp sge i64 %t104, 0
|
|
br label %logic.rend8858
|
|
logic.rend8858:
|
|
br label %logic.end8857
|
|
logic.end8857:
|
|
%t106 = phi i1 [ false, %logic.from8855 ], [ %t105, %logic.rend8858 ]
|
|
br i1 %t106, label %then8859, label %endif8861
|
|
then8859:
|
|
%t107 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t107, ptr %a108
|
|
%t110 = load { ptr, i64, i64 }, ptr %a26
|
|
store { ptr, i64, i64 } %t110, ptr %a111
|
|
store { ptr, i64, i64 } { ptr @.str.5884, i64 19, i64 0 }, ptr %a113
|
|
%t114 = call i64 @finch_str_find(ptr %a111, ptr %a113)
|
|
call void @finch_str_sub(ptr %a109, ptr %a108, i64 1, i64 %t114, ptr @.str.5882, i64 125)
|
|
%t115 = load { ptr, i64, i64 }, ptr %a109
|
|
store { ptr, i64, i64 } %t115, ptr %a116
|
|
%t117 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3
|
|
%t118 = load i1, ptr %t117
|
|
br label %logic.from8862
|
|
logic.from8862:
|
|
br i1 %t118, label %logic.rhs8863, label %logic.end8864
|
|
logic.rhs8863:
|
|
%t119 = load { ptr, i64, i64 }, ptr %a116
|
|
store { ptr, i64, i64 } %t119, ptr %a120
|
|
store { ptr, i64, i64 } { ptr @.str.5886, i64 1, i64 0 }, ptr %a122
|
|
%t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122)
|
|
%t124 = icmp ne i32 %t123, 0
|
|
br label %logic.rend8865
|
|
logic.rend8865:
|
|
br label %logic.end8864
|
|
logic.end8864:
|
|
%t125 = phi i1 [ false, %logic.from8862 ], [ %t124, %logic.rend8865 ]
|
|
br i1 %t125, label %then8866, label %endif8868
|
|
then8866:
|
|
%t126 = load { ptr, i64, i64 }, ptr %a116
|
|
store { ptr, i64, i64 } %t126, ptr %a127
|
|
%t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %a116, i32 0, i32 1
|
|
%t130 = load i64, ptr %t129
|
|
call void @finch_str_sub(ptr %a128, ptr %a127, i64 1, i64 %t130, ptr @.str.5887, i64 127)
|
|
%t131 = load { ptr, i64, i64 }, ptr %a128
|
|
store { ptr, i64, i64 } %t131, ptr %a116
|
|
br label %endif8868
|
|
endif8868:
|
|
%t132 = load { ptr, i64, i64 }, ptr %a116
|
|
call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t132)
|
|
br label %endif8861
|
|
endif8861:
|
|
br label %endif8854
|
|
endif8854:
|
|
br label %endif8847
|
|
endif8847:
|
|
br label %endif8844
|
|
endif8844:
|
|
br label %endif8841
|
|
endif8841:
|
|
br label %endif8838
|
|
endif8838:
|
|
br label %endif8835
|
|
endif8835:
|
|
br label %endif8832
|
|
endif8832:
|
|
br label %each.step8828
|
|
each.step8828:
|
|
%t133 = load i64, ptr %a13
|
|
%t134 = add i64 %t133, 1
|
|
store i64 %t134, ptr %a13
|
|
br label %each.cond8826
|
|
each.end8829:
|
|
%t135 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0
|
|
%t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1
|
|
%t137 = load i64, ptr %t136
|
|
%t138 = icmp eq i64 %t137, 0
|
|
br label %logic.from8869
|
|
logic.from8869:
|
|
br i1 %t138, label %logic.rhs8870, label %logic.end8871
|
|
logic.rhs8870:
|
|
%t139 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0
|
|
%t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t139, i32 0, i32 1
|
|
%t141 = load i64, ptr %t140
|
|
%t142 = icmp eq i64 %t141, 0
|
|
br label %logic.rend8872
|
|
logic.rend8872:
|
|
br label %logic.end8871
|
|
logic.end8871:
|
|
%t143 = phi i1 [ false, %logic.from8869 ], [ %t142, %logic.rend8872 ]
|
|
br i1 %t143, label %then8873, label %endif8875
|
|
then8873:
|
|
%t144 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t144, ptr %a146
|
|
store { ptr, i64, i64 } { ptr @.str.5888, i64 21, i64 0 }, ptr %a147
|
|
call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147)
|
|
%t148 = load { ptr, i64, i64 }, ptr %a145
|
|
%t149 = extractvalue { ptr, i64, i64 } %t148, 1
|
|
%t150 = trunc i64 %t149 to i32
|
|
%t151 = extractvalue { ptr, i64, i64 } %t148, 0
|
|
%t152 = icmp eq ptr %t151, null
|
|
%t153 = select i1 %t152, ptr @.str.5889, ptr %t151
|
|
%t154 = call i32 (ptr, ...) @printf(ptr @.str.5890, i32 %t150, ptr %t153)
|
|
%t155 = call i32 (ptr, ...) @printf(ptr @.str.5891)
|
|
ret i64 1
|
|
endif8875:
|
|
%t156 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0
|
|
store i64 0, ptr %a157
|
|
br label %each.cond8876
|
|
each.cond8876:
|
|
%t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1
|
|
%t159 = load i64, ptr %t158
|
|
%t160 = load i64, ptr %a157
|
|
%t161 = icmp slt i64 %t160, %t159
|
|
br i1 %t161, label %each.body8877, label %each.end8879
|
|
each.body8877:
|
|
%t162 = load ptr, ptr %t156
|
|
%t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160
|
|
%t164 = load { ptr, i64, i64 }, ptr %t163
|
|
store { ptr, i64, i64 } %t164, ptr %a165
|
|
%t166 = load { ptr, i64, i64 }, ptr %a165
|
|
store { ptr, i64, i64 } { ptr @.str.5892, i64 20, i64 0 }, ptr %a168
|
|
store { ptr, i64, i64 } %t166, ptr %a169
|
|
call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169)
|
|
%t170 = load { ptr, i64, i64 }, ptr %a167
|
|
store { ptr, i64, i64 } %t170, ptr %a172
|
|
store { ptr, i64, i64 } { ptr @.str.5893, i64 62, i64 0 }, ptr %a173
|
|
call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173)
|
|
%t174 = load { ptr, i64, i64 }, ptr %a171
|
|
%t175 = extractvalue { ptr, i64, i64 } %t174, 1
|
|
%t176 = trunc i64 %t175 to i32
|
|
%t177 = extractvalue { ptr, i64, i64 } %t174, 0
|
|
%t178 = icmp eq ptr %t177, null
|
|
%t179 = select i1 %t178, ptr @.str.5894, ptr %t177
|
|
%t180 = call i32 (ptr, ...) @printf(ptr @.str.5895, i32 %t176, ptr %t179)
|
|
%t181 = call i32 (ptr, ...) @printf(ptr @.str.5896)
|
|
br label %each.step8878
|
|
each.step8878:
|
|
%t182 = load i64, ptr %a157
|
|
%t183 = add i64 %t182, 1
|
|
store i64 %t183, ptr %a157
|
|
br label %each.cond8876
|
|
each.end8879:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a184
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a185
|
|
%t186 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0
|
|
store i64 0, ptr %a187
|
|
br label %each.cond8880
|
|
each.cond8880:
|
|
%t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t186, i32 0, i32 1
|
|
%t189 = load i64, ptr %t188
|
|
%t190 = load i64, ptr %a187
|
|
%t191 = icmp slt i64 %t190, %t189
|
|
br i1 %t191, label %each.body8881, label %each.end8883
|
|
each.body8881:
|
|
%t192 = load ptr, ptr %t186
|
|
%t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190
|
|
%t194 = load { ptr, i64, i64 }, ptr %t193
|
|
store { ptr, i64, i64 } %t194, ptr %a195
|
|
store { ptr, i64, i64 } { ptr @.str.5897, i64 0, i64 0 }, ptr %a196
|
|
%t197 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0
|
|
%t198 = load { ptr, i64, i64 }, ptr %a195
|
|
store { ptr, i64, i64 } %t198, ptr %a199
|
|
%t200 = call i64 @finch_map_find(ptr %t197, ptr %a199, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t201 = icmp sge i64 %t200, 0
|
|
br i1 %t201, label %then8884, label %endif8886
|
|
then8884:
|
|
%t202 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0
|
|
%t203 = load { ptr, i64, i64 }, ptr %a195
|
|
store { ptr, i64, i64 } %t203, ptr %a204
|
|
%t205 = call i64 @finch_map_find(ptr %t202, ptr %a204, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1)
|
|
%t206 = icmp slt i64 %t205, 0
|
|
br i1 %t206, label %map.missing8887, label %map.found8888
|
|
map.missing8887:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a207
|
|
store { ptr, i64, i64 } %t203, ptr %a208
|
|
call void @finch_buf_str(ptr %a207, ptr %a208, i32 1)
|
|
call void @finch_map_missing(ptr @.str.5898, i64 145, ptr %a207)
|
|
unreachable
|
|
map.found8888:
|
|
%t209 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t202, i32 0, i32 0
|
|
%t210 = load ptr, ptr %t209
|
|
%t211 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t210, i64 %t205
|
|
%t212 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t211, i32 0, i32 2
|
|
%t213 = getelementptr inbounds %S.cimport.CFunc, ptr %t212, i32 0, i32 1
|
|
%t214 = load { ptr, i64, i64 }, ptr %t213
|
|
store { ptr, i64, i64 } %t214, ptr %a215
|
|
call void @finch_str_copy(ptr %a216, ptr %a215)
|
|
%t217 = load { ptr, i64, i64 }, ptr %a216
|
|
store { ptr, i64, i64 } %t217, ptr %a196
|
|
br label %endif8886
|
|
endif8886:
|
|
%t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1
|
|
%t219 = load { ptr, i64, i64 }, ptr %a196
|
|
store i64 -1, ptr %a220
|
|
%t221 = load i64, ptr %t218
|
|
%t222 = load ptr, ptr %a184
|
|
store i64 0, ptr %a223
|
|
br label %find.cond8889
|
|
find.cond8889:
|
|
%t224 = load i64, ptr %a223
|
|
%t225 = icmp slt i64 %t224, %t221
|
|
br i1 %t225, label %find.body8890, label %find.end8893
|
|
find.body8890:
|
|
%t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 %t224
|
|
%t227 = load { ptr, i64, i64 }, ptr %t226
|
|
store { ptr, i64, i64 } %t227, ptr %a228
|
|
store { ptr, i64, i64 } %t219, ptr %a229
|
|
%t230 = call i32 @finch_str_eq(ptr %a228, ptr %a229)
|
|
%t231 = icmp ne i32 %t230, 0
|
|
br i1 %t231, label %find.hit8891, label %find.next8892
|
|
find.hit8891:
|
|
store i64 %t224, ptr %a220
|
|
br label %find.end8893
|
|
find.next8892:
|
|
%t232 = add i64 %t224, 1
|
|
store i64 %t232, ptr %a223
|
|
br label %find.cond8889
|
|
find.end8893:
|
|
%t233 = load i64, ptr %a220
|
|
store i64 %t233, ptr %a234
|
|
%t235 = load i64, ptr %a234
|
|
%t236 = icmp slt i64 %t235, 0
|
|
br i1 %t236, label %then8894, label %endif8896
|
|
then8894:
|
|
%t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1
|
|
%t238 = load { ptr, i64, i64 }, ptr %a196
|
|
store { ptr, i64, i64 } %t238, ptr %a239
|
|
call void @finch_str_copy(ptr %a240, ptr %a239)
|
|
%t241 = load { ptr, i64, i64 }, ptr %a240
|
|
%t242 = load i64, ptr %t237
|
|
%t243 = add i64 %t242, 1
|
|
call void @finch_arr_reserve(ptr %a184, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t244 = load ptr, ptr %a184
|
|
%t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242
|
|
store { ptr, i64, i64 } %t241, ptr %t245
|
|
store i64 %t243, ptr %t237
|
|
%t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a185, i32 0, i32 1
|
|
%t247 = load i64, ptr %t246
|
|
%t248 = add i64 %t247, 1
|
|
call void @finch_arr_reserve(ptr %a185, i64 %t248, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64))
|
|
%t249 = load ptr, ptr %a185
|
|
%t250 = getelementptr inbounds %S.linker.Names, ptr %t249, i64 %t247
|
|
store %S.linker.Names zeroinitializer, ptr %t250
|
|
store i64 %t248, ptr %t246
|
|
%t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1
|
|
%t252 = load i64, ptr %t251
|
|
%t253 = sub i64 %t252, 1
|
|
store i64 %t253, ptr %a234
|
|
br label %endif8896
|
|
endif8896:
|
|
%t254 = load i64, ptr %a234
|
|
%t255 = load { ptr, i64, i64 }, ptr %a185
|
|
%t256 = extractvalue { ptr, i64, i64 } %t255, 1
|
|
%t257 = icmp uge i64 %t254, %t256
|
|
br i1 %t257, label %range8897, label %inrange8898
|
|
range8897:
|
|
call void @finch_panic_index(ptr @.str.5899, i64 153, i64 %t254, i64 %t256)
|
|
unreachable
|
|
inrange8898:
|
|
%t258 = extractvalue { ptr, i64, i64 } %t255, 0
|
|
%t259 = getelementptr inbounds %S.linker.Names, ptr %t258, i64 %t254
|
|
%t260 = load { ptr, i64, i64 }, ptr %a195
|
|
call void @finch.linker.Names.add(ptr %t259, { ptr, i64, i64 } %t260)
|
|
br label %each.step8882
|
|
each.step8882:
|
|
%t261 = load i64, ptr %a187
|
|
%t262 = add i64 %t261, 1
|
|
store i64 %t262, ptr %a187
|
|
br label %each.cond8880
|
|
each.end8883:
|
|
%t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1
|
|
%t264 = load i64, ptr %t263
|
|
store i64 0, ptr %a265
|
|
br label %for.cond8899
|
|
for.cond8899:
|
|
%t266 = load i64, ptr %a265
|
|
%t267 = icmp slt i64 %t266, %t264
|
|
br i1 %t267, label %for.body8900, label %for.end8902
|
|
for.body8900:
|
|
%t268 = load i64, ptr %a265
|
|
%t269 = load { ptr, i64, i64 }, ptr %a185
|
|
%t270 = extractvalue { ptr, i64, i64 } %t269, 1
|
|
%t271 = icmp uge i64 %t268, %t270
|
|
br i1 %t271, label %range8903, label %inrange8904
|
|
range8903:
|
|
call void @finch_panic_index(ptr @.str.5900, i64 156, i64 %t268, i64 %t270)
|
|
unreachable
|
|
inrange8904:
|
|
%t272 = extractvalue { ptr, i64, i64 } %t269, 0
|
|
%t273 = getelementptr inbounds %S.linker.Names, ptr %t272, i64 %t268
|
|
%t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i32 0, i32 0
|
|
%t275 = load { ptr, i64, i64 }, ptr %t274
|
|
store { ptr, i64, i64 } %t275, ptr %a276
|
|
call void @finch.copy.arr_str(ptr %a277, ptr %a276)
|
|
%t278 = load { ptr, i64, i64 }, ptr %a277
|
|
store { ptr, i64, i64 } %t278, ptr %a279
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a280
|
|
%t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %a279, i32 0, i32 1
|
|
%t282 = load i64, ptr %t281
|
|
store i64 0, ptr %a283
|
|
br label %for.cond8905
|
|
for.cond8905:
|
|
%t284 = load i64, ptr %a283
|
|
%t285 = icmp slt i64 %t284, %t282
|
|
br i1 %t285, label %for.body8906, label %for.end8908
|
|
for.body8906:
|
|
%t286 = load i64, ptr %a283
|
|
%t287 = icmp slt i64 %t286, 3
|
|
br i1 %t287, label %then8909, label %endif8911
|
|
then8909:
|
|
%t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a280, i32 0, i32 1
|
|
%t289 = load i64, ptr %a283
|
|
%t290 = load { ptr, i64, i64 }, ptr %a279
|
|
%t291 = extractvalue { ptr, i64, i64 } %t290, 1
|
|
%t292 = icmp uge i64 %t289, %t291
|
|
br i1 %t292, label %range8912, label %inrange8913
|
|
range8912:
|
|
call void @finch_panic_index(ptr @.str.5901, i64 160, i64 %t289, i64 %t291)
|
|
unreachable
|
|
inrange8913:
|
|
%t293 = extractvalue { ptr, i64, i64 } %t290, 0
|
|
%t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289
|
|
%t295 = load { ptr, i64, i64 }, ptr %t294
|
|
store { ptr, i64, i64 } %t295, ptr %a296
|
|
call void @finch_str_copy(ptr %a297, ptr %a296)
|
|
%t298 = load { ptr, i64, i64 }, ptr %a297
|
|
%t299 = load i64, ptr %t288
|
|
%t300 = add i64 %t299, 1
|
|
call void @finch_arr_reserve(ptr %a280, i64 %t300, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t301 = load ptr, ptr %a280
|
|
%t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t299
|
|
store { ptr, i64, i64 } %t298, ptr %t302
|
|
store i64 %t300, ptr %t288
|
|
br label %endif8911
|
|
endif8911:
|
|
br label %for.step8907
|
|
for.step8907:
|
|
%t303 = load i64, ptr %a283
|
|
%t304 = add i64 %t303, 1
|
|
store i64 %t304, ptr %a283
|
|
br label %for.cond8905
|
|
for.end8908:
|
|
%t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %a280, i32 0, i32 1
|
|
store { ptr, i64, i64 } { ptr @.str.5902, i64 2, i64 0 }, ptr %a306
|
|
call void @finch_str_join(ptr %a307, ptr %a280, ptr %a306)
|
|
%t308 = load { ptr, i64, i64 }, ptr %a307
|
|
store { ptr, i64, i64 } %t308, ptr %a309
|
|
%t310 = getelementptr inbounds { ptr, i64, i64 }, ptr %a279, i32 0, i32 1
|
|
%t311 = load i64, ptr %t310
|
|
%t312 = icmp sgt i64 %t311, 3
|
|
br i1 %t312, label %then8914, label %endif8916
|
|
then8914:
|
|
%t313 = load { ptr, i64, i64 }, ptr %a309
|
|
store { ptr, i64, i64 } %t313, ptr %a315
|
|
store { ptr, i64, i64 } { ptr @.str.5903, i64 5, i64 0 }, ptr %a316
|
|
call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316)
|
|
%t317 = load { ptr, i64, i64 }, ptr %a314
|
|
%t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %a279, i32 0, i32 1
|
|
%t319 = load i64, ptr %t318
|
|
%t320 = sub i64 %t319, 3
|
|
call void @finch_str_from_int(ptr %a321, i64 %t320)
|
|
%t322 = load { ptr, i64, i64 }, ptr %a321
|
|
store { ptr, i64, i64 } %t317, ptr %a324
|
|
store { ptr, i64, i64 } %t322, ptr %a325
|
|
call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325)
|
|
%t326 = load { ptr, i64, i64 }, ptr %a323
|
|
store { ptr, i64, i64 } %t326, ptr %a328
|
|
store { ptr, i64, i64 } { ptr @.str.5904, i64 5, i64 0 }, ptr %a329
|
|
call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329)
|
|
%t330 = load { ptr, i64, i64 }, ptr %a327
|
|
store { ptr, i64, i64 } %t330, ptr %a309
|
|
br label %endif8916
|
|
endif8916:
|
|
%t331 = load i64, ptr %a265
|
|
%t332 = load { ptr, i64, i64 }, ptr %a184
|
|
%t333 = extractvalue { ptr, i64, i64 } %t332, 1
|
|
%t334 = icmp uge i64 %t331, %t333
|
|
br i1 %t334, label %range8917, label %inrange8918
|
|
range8917:
|
|
call void @finch_panic_index(ptr @.str.5905, i64 167, i64 %t331, i64 %t333)
|
|
unreachable
|
|
inrange8918:
|
|
%t335 = extractvalue { ptr, i64, i64 } %t332, 0
|
|
%t336 = getelementptr inbounds { ptr, i64, i64 }, ptr %t335, i64 %t331
|
|
%t337 = getelementptr inbounds { ptr, i64, i64 }, ptr %t336, i32 0, i32 1
|
|
%t338 = load i64, ptr %t337
|
|
%t339 = icmp eq i64 %t338, 0
|
|
br i1 %t339, label %then8919, label %endif8921
|
|
then8919:
|
|
%t340 = load { ptr, i64, i64 }, ptr %a309
|
|
store { ptr, i64, i64 } { ptr @.str.5906, i64 25, i64 0 }, ptr %a342
|
|
store { ptr, i64, i64 } %t340, ptr %a343
|
|
call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343)
|
|
%t344 = load { ptr, i64, i64 }, ptr %a341
|
|
%t345 = extractvalue { ptr, i64, i64 } %t344, 1
|
|
%t346 = trunc i64 %t345 to i32
|
|
%t347 = extractvalue { ptr, i64, i64 } %t344, 0
|
|
%t348 = icmp eq ptr %t347, null
|
|
%t349 = select i1 %t348, ptr @.str.5907, ptr %t347
|
|
%t350 = call i32 (ptr, ...) @printf(ptr @.str.5908, i32 %t346, ptr %t349)
|
|
%t351 = call i32 (ptr, ...) @printf(ptr @.str.5909)
|
|
br label %for.step8901
|
|
endif8921:
|
|
store { ptr, i64, i64 } { ptr @.str.5910, i64 4, i64 0 }, ptr %a352
|
|
%t353 = getelementptr inbounds { ptr, i64, i64 }, ptr %a279, i32 0, i32 1
|
|
%t354 = load i64, ptr %t353
|
|
%t355 = icmp eq i64 %t354, 1
|
|
br i1 %t355, label %then8922, label %endif8924
|
|
then8922:
|
|
store { ptr, i64, i64 } { ptr @.str.5911, i64 5, i64 0 }, ptr %a352
|
|
br label %endif8924
|
|
endif8924:
|
|
%t356 = load { ptr, i64, i64 }, ptr %a309
|
|
store { ptr, i64, i64 } { ptr @.str.5912, i64 7, i64 0 }, ptr %a358
|
|
store { ptr, i64, i64 } %t356, ptr %a359
|
|
call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359)
|
|
%t360 = load { ptr, i64, i64 }, ptr %a357
|
|
store { ptr, i64, i64 } %t360, ptr %a362
|
|
store { ptr, i64, i64 } { ptr @.str.5913, i64 1, i64 0 }, ptr %a363
|
|
call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363)
|
|
%t364 = load { ptr, i64, i64 }, ptr %a361
|
|
%t365 = load { ptr, i64, i64 }, ptr %a352
|
|
store { ptr, i64, i64 } %t364, ptr %a367
|
|
store { ptr, i64, i64 } %t365, ptr %a368
|
|
call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368)
|
|
%t369 = load { ptr, i64, i64 }, ptr %a366
|
|
store { ptr, i64, i64 } %t369, ptr %a371
|
|
store { ptr, i64, i64 } { ptr @.str.5914, i64 7, i64 0 }, ptr %a372
|
|
call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372)
|
|
%t373 = load { ptr, i64, i64 }, ptr %a370
|
|
%t374 = load i64, ptr %a265
|
|
%t375 = load { ptr, i64, i64 }, ptr %a184
|
|
%t376 = extractvalue { ptr, i64, i64 } %t375, 1
|
|
%t377 = icmp uge i64 %t374, %t376
|
|
br i1 %t377, label %range8925, label %inrange8926
|
|
range8925:
|
|
call void @finch_panic_index(ptr @.str.5915, i64 175, i64 %t374, i64 %t376)
|
|
unreachable
|
|
inrange8926:
|
|
%t378 = extractvalue { ptr, i64, i64 } %t375, 0
|
|
%t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i64 %t374
|
|
%t380 = load { ptr, i64, i64 }, ptr %t379
|
|
store { ptr, i64, i64 } %t373, ptr %a382
|
|
store { ptr, i64, i64 } %t380, ptr %a383
|
|
call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383)
|
|
%t384 = load { ptr, i64, i64 }, ptr %a381
|
|
store { ptr, i64, i64 } %t384, ptr %a386
|
|
store { ptr, i64, i64 } { ptr @.str.5916, i64 31, i64 0 }, ptr %a387
|
|
call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387)
|
|
%t388 = load { ptr, i64, i64 }, ptr %a385
|
|
%t389 = extractvalue { ptr, i64, i64 } %t388, 1
|
|
%t390 = trunc i64 %t389 to i32
|
|
%t391 = extractvalue { ptr, i64, i64 } %t388, 0
|
|
%t392 = icmp eq ptr %t391, null
|
|
%t393 = select i1 %t392, ptr @.str.5917, ptr %t391
|
|
%t394 = call i32 (ptr, ...) @printf(ptr @.str.5918, i32 %t390, ptr %t393)
|
|
%t395 = call i32 (ptr, ...) @printf(ptr @.str.5919)
|
|
%t396 = extractvalue { ptr, i64, i64 } { ptr @.str.5920, i64 74, i64 0 }, 1
|
|
%t397 = trunc i64 %t396 to i32
|
|
%t398 = extractvalue { ptr, i64, i64 } { ptr @.str.5920, i64 74, i64 0 }, 0
|
|
%t399 = icmp eq ptr %t398, null
|
|
%t400 = select i1 %t399, ptr @.str.5921, ptr %t398
|
|
%t401 = call i32 (ptr, ...) @printf(ptr @.str.5922, i32 %t397, ptr %t400)
|
|
%t402 = call i32 (ptr, ...) @printf(ptr @.str.5923)
|
|
%t403 = extractvalue { ptr, i64, i64 } { ptr @.str.5924, i64 66, i64 0 }, 1
|
|
%t404 = trunc i64 %t403 to i32
|
|
%t405 = extractvalue { ptr, i64, i64 } { ptr @.str.5924, i64 66, i64 0 }, 0
|
|
%t406 = icmp eq ptr %t405, null
|
|
%t407 = select i1 %t406, ptr @.str.5925, ptr %t405
|
|
%t408 = call i32 (ptr, ...) @printf(ptr @.str.5926, i32 %t404, ptr %t407)
|
|
%t409 = call i32 (ptr, ...) @printf(ptr @.str.5927)
|
|
%t410 = extractvalue { ptr, i64, i64 } { ptr @.str.5928, i64 0, i64 0 }, 1
|
|
%t411 = trunc i64 %t410 to i32
|
|
%t412 = extractvalue { ptr, i64, i64 } { ptr @.str.5928, i64 0, i64 0 }, 0
|
|
%t413 = icmp eq ptr %t412, null
|
|
%t414 = select i1 %t413, ptr @.str.5929, ptr %t412
|
|
%t415 = call i32 (ptr, ...) @printf(ptr @.str.5930, i32 %t411, ptr %t414)
|
|
%t416 = call i32 (ptr, ...) @printf(ptr @.str.5931)
|
|
%t417 = load i64, ptr %a265
|
|
%t418 = load { ptr, i64, i64 }, ptr %a184
|
|
%t419 = extractvalue { ptr, i64, i64 } %t418, 1
|
|
%t420 = icmp uge i64 %t417, %t419
|
|
br i1 %t420, label %range8927, label %inrange8928
|
|
range8927:
|
|
call void @finch_panic_index(ptr @.str.5933, i64 179, i64 %t417, i64 %t419)
|
|
unreachable
|
|
inrange8928:
|
|
%t421 = extractvalue { ptr, i64, i64 } %t418, 0
|
|
%t422 = getelementptr inbounds { ptr, i64, i64 }, ptr %t421, i64 %t417
|
|
%t423 = load { ptr, i64, i64 }, ptr %t422
|
|
%t424 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t423)
|
|
store { ptr, i64, i64 } { ptr @.str.5932, i64 12, i64 0 }, ptr %a426
|
|
store { ptr, i64, i64 } %t424, ptr %a427
|
|
call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427)
|
|
%t428 = load { ptr, i64, i64 }, ptr %a425
|
|
store { ptr, i64, i64 } %t428, ptr %a430
|
|
store { ptr, i64, i64 } { ptr @.str.5934, i64 1, i64 0 }, ptr %a431
|
|
call void @finch_str_concat(ptr %a429, ptr %a430, ptr %a431)
|
|
%t432 = load { ptr, i64, i64 }, ptr %a429
|
|
%t433 = extractvalue { ptr, i64, i64 } %t432, 1
|
|
%t434 = trunc i64 %t433 to i32
|
|
%t435 = extractvalue { ptr, i64, i64 } %t432, 0
|
|
%t436 = icmp eq ptr %t435, null
|
|
%t437 = select i1 %t436, ptr @.str.5935, ptr %t435
|
|
%t438 = call i32 (ptr, ...) @printf(ptr @.str.5936, i32 %t434, ptr %t437)
|
|
%t439 = call i32 (ptr, ...) @printf(ptr @.str.5937)
|
|
%t440 = extractvalue { ptr, i64, i64 } { ptr @.str.5938, i64 0, i64 0 }, 1
|
|
%t441 = trunc i64 %t440 to i32
|
|
%t442 = extractvalue { ptr, i64, i64 } { ptr @.str.5938, i64 0, i64 0 }, 0
|
|
%t443 = icmp eq ptr %t442, null
|
|
%t444 = select i1 %t443, ptr @.str.5939, ptr %t442
|
|
%t445 = call i32 (ptr, ...) @printf(ptr @.str.5940, i32 %t441, ptr %t444)
|
|
%t446 = call i32 (ptr, ...) @printf(ptr @.str.5941)
|
|
br label %for.step8901
|
|
for.step8901:
|
|
%t447 = load i64, ptr %a265
|
|
%t448 = add i64 %t447, 1
|
|
store i64 %t448, ptr %a265
|
|
br label %for.cond8899
|
|
for.end8902:
|
|
ret i64 1
|
|
}
|
|
|
|
define internal { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %p0, %S.platform.Target %p1, { ptr, i64, i64 } %p2) {
|
|
entry:
|
|
%a1 = alloca { ptr, i64, i64 }, align 16
|
|
%a2 = alloca %S.platform.Target, align 16
|
|
%a3 = alloca { ptr, i64, i64 }, align 16
|
|
%a5 = alloca { ptr, i64, i64 }, align 16
|
|
%a6 = alloca { ptr, i64, i64 }, align 16
|
|
%a7 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a15 = alloca { ptr, i64, i64 }, align 16
|
|
%a17 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a23 = alloca { ptr, i64, i64 }, align 16
|
|
%a24 = alloca { ptr, i64, i64 }, align 16
|
|
%a25 = alloca { ptr, i64, i64 }, align 16
|
|
%a29 = alloca { ptr, i64, i64 }, align 16
|
|
%a30 = alloca { ptr, i64, i64 }, align 16
|
|
%a31 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a34 = alloca { ptr, i64, i64 }, align 16
|
|
%a35 = alloca { ptr, i64, i64 }, align 16
|
|
%a38 = alloca { ptr, i64, i64 }, align 16
|
|
%a39 = alloca { ptr, i64, i64 }, align 16
|
|
%a40 = alloca { ptr, i64, i64 }, align 16
|
|
%a42 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a46 = alloca { ptr, i64, i64 }, align 16
|
|
%a48 = alloca { ptr, i64, i64 }, align 16
|
|
%a52 = alloca { ptr, i64, i64 }, align 16
|
|
%a53 = alloca { ptr, i64, i64 }, align 16
|
|
%a59 = alloca { ptr, i64, i64 }, align 16
|
|
%a60 = alloca { ptr, i64, i64 }, align 16
|
|
%a61 = alloca { ptr, i64, i64 }, align 16
|
|
%a63 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a73 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a77 = alloca { ptr, i64, i64 }, align 16
|
|
%a79 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a84 = alloca { ptr, i64, i64 }, align 16
|
|
%a85 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a88 = alloca { ptr, i64, i64 }, align 16
|
|
%a90 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a95 = alloca { ptr, i64, i64 }, align 16
|
|
%a96 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a100 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a107 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a111 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a117 = alloca { ptr, i64, i64 }, align 16
|
|
%a119 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a127 = alloca { ptr, i64, i64 }, align 16
|
|
%a129 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a133 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca i64, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a147 = alloca { ptr, i64, i64 }, align 16
|
|
%a149 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a153 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a157 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a162 = alloca { ptr, i64, i64 }, align 16
|
|
%a163 = alloca { ptr, i64, i64 }, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a167 = alloca { ptr, i64, i64 }, align 16
|
|
%a170 = alloca { ptr, i64, i64 }, align 16
|
|
%a171 = alloca { ptr, i64, i64 }, align 16
|
|
%a172 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a177 = alloca { ptr, i64, i64 }, align 16
|
|
%a179 = alloca { ptr, i64, i64 }, align 16
|
|
%a180 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a186 = alloca { ptr, i64, i64 }, align 16
|
|
%a187 = alloca { ptr, i64, i64 }, align 16
|
|
%a188 = alloca { ptr, i64, i64 }, align 16
|
|
%a190 = alloca { ptr, i64, i64 }, align 16
|
|
%a191 = alloca { ptr, i64, i64 }, align 16
|
|
%a192 = alloca { ptr, i64, i64 }, align 16
|
|
%a196 = alloca { ptr, i64, i64 }, align 16
|
|
%a197 = alloca { ptr, i64, i64 }, align 16
|
|
%a198 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a202 = alloca { ptr, i64, i64 }, align 16
|
|
%a206 = alloca { ptr, i64, i64 }, align 16
|
|
%a207 = alloca { ptr, i64, i64 }, align 16
|
|
%a208 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a215 = alloca { ptr, i64, i64 }, align 16
|
|
store { ptr, i64, i64 } %p0, ptr %a1
|
|
store %S.platform.Target %p1, ptr %a2
|
|
store { ptr, i64, i64 } %p2, ptr %a3
|
|
%t4 = load { ptr, i64, i64 }, ptr %a1
|
|
store { ptr, i64, i64 } %t4, ptr %a5
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a6
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a7
|
|
%t8 = call i32 @finch_try_read_file(ptr %a6, ptr %a5, ptr %a7)
|
|
%t9 = icmp eq i32 %t8, 0
|
|
%t10 = load { ptr, i64, i64 }, ptr %a7
|
|
%t11 = load { ptr, i64, i64 }, ptr %a6
|
|
br i1 %t9, label %try.failed8929, label %try.ok8930
|
|
try.failed8929:
|
|
%t12 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t10, 2
|
|
ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t12
|
|
try.ok8930:
|
|
store { ptr, i64, i64 } %t11, ptr %a13
|
|
%t14 = call { ptr, i64, i64 } @finch.linker.cacheDir()
|
|
store { ptr, i64, i64 } %t14, ptr %a15
|
|
%t16 = load { ptr, i64, i64 }, ptr %a15
|
|
store { ptr, i64, i64 } %t16, ptr %a18
|
|
store { ptr, i64, i64 } { ptr @.str.5942, i64 4, i64 0 }, ptr %a19
|
|
call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a17
|
|
%t21 = load { ptr, i64, i64 }, ptr %a13
|
|
%t22 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t21, ptr %a24
|
|
store { ptr, i64, i64 } %t22, ptr %a25
|
|
call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25)
|
|
%t26 = load { ptr, i64, i64 }, ptr %a23
|
|
%t27 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0
|
|
%t28 = load { ptr, i64, i64 }, ptr %t27
|
|
store { ptr, i64, i64 } %t26, ptr %a30
|
|
store { ptr, i64, i64 } %t28, ptr %a31
|
|
call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31)
|
|
%t32 = load { ptr, i64, i64 }, ptr %a29
|
|
store { ptr, i64, i64 } %t32, ptr %a34
|
|
store { ptr, i64, i64 } { ptr @.str.5943, i64 3, i64 0 }, ptr %a35
|
|
call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35)
|
|
%t36 = load { ptr, i64, i64 }, ptr %a33
|
|
%t37 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t36)
|
|
store { ptr, i64, i64 } %t20, ptr %a39
|
|
store { ptr, i64, i64 } %t37, ptr %a40
|
|
call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40)
|
|
%t41 = load { ptr, i64, i64 }, ptr %a38
|
|
store { ptr, i64, i64 } %t41, ptr %a43
|
|
store { ptr, i64, i64 } { ptr @.str.5944, i64 2, i64 0 }, ptr %a44
|
|
call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44)
|
|
%t45 = load { ptr, i64, i64 }, ptr %a42
|
|
store { ptr, i64, i64 } %t45, ptr %a46
|
|
%t47 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t47, ptr %a48
|
|
%t49 = call i32 @finch_file_exists(ptr %a48)
|
|
%t50 = icmp ne i32 %t49, 0
|
|
br i1 %t50, label %then8931, label %endif8933
|
|
then8931:
|
|
%t51 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t51, ptr %a52
|
|
call void @finch_str_copy(ptr %a53, ptr %a52)
|
|
%t54 = load { ptr, i64, i64 }, ptr %a53
|
|
%t55 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0
|
|
%t56 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t55, { ptr, i64, i64 } %t54, 1
|
|
ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56
|
|
endif8933:
|
|
%t57 = load { ptr, i64, i64 }, ptr %a15
|
|
%t58 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t57)
|
|
store { ptr, i64, i64 } { ptr @.str.5945, i64 9, i64 0 }, ptr %a60
|
|
store { ptr, i64, i64 } %t58, ptr %a61
|
|
call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61)
|
|
%t62 = load { ptr, i64, i64 }, ptr %a59
|
|
store { ptr, i64, i64 } %t62, ptr %a64
|
|
call void @finch_str_copy(ptr %a63, ptr %a64)
|
|
%t65 = call i64 @finch_shell(ptr %a63)
|
|
%t66 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t66, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.5946, i64 5, i64 0 }, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
%t71 = call i32 @getpid()
|
|
%t72 = sext i32 %t71 to i64
|
|
call void @finch_str_from_int(ptr %a73, i64 %t72)
|
|
%t74 = load { ptr, i64, i64 }, ptr %a73
|
|
store { ptr, i64, i64 } %t70, ptr %a76
|
|
store { ptr, i64, i64 } %t74, ptr %a77
|
|
call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77)
|
|
%t78 = load { ptr, i64, i64 }, ptr %a75
|
|
store { ptr, i64, i64 } %t78, ptr %a79
|
|
store { ptr, i64, i64 } { ptr @.str.5947, i64 6, i64 0 }, ptr %a80
|
|
%t81 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1
|
|
%t82 = load i1, ptr %t81
|
|
br i1 %t82, label %then8934, label %endif8936
|
|
then8934:
|
|
store { ptr, i64, i64 } { ptr @.str.5948, i64 0, i64 0 }, ptr %a80
|
|
br label %endif8936
|
|
endif8936:
|
|
%t83 = load { ptr, i64, i64 }, ptr %a79
|
|
store { ptr, i64, i64 } %t83, ptr %a85
|
|
store { ptr, i64, i64 } { ptr @.str.5949, i64 4, i64 0 }, ptr %a86
|
|
call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86)
|
|
%t87 = load { ptr, i64, i64 }, ptr %a84
|
|
store { ptr, i64, i64 } %t87, ptr %a88
|
|
%t89 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t89, ptr %a91
|
|
store { ptr, i64, i64 } { ptr @.str.5950, i64 4, i64 0 }, ptr %a92
|
|
call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92)
|
|
%t93 = load { ptr, i64, i64 }, ptr %a90
|
|
%t94 = load { ptr, i64, i64 }, ptr %a80
|
|
store { ptr, i64, i64 } %t93, ptr %a96
|
|
store { ptr, i64, i64 } %t94, ptr %a97
|
|
call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97)
|
|
%t98 = load { ptr, i64, i64 }, ptr %a95
|
|
store { ptr, i64, i64 } %t98, ptr %a100
|
|
store { ptr, i64, i64 } { ptr @.str.5951, i64 4, i64 0 }, ptr %a101
|
|
call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101)
|
|
%t102 = load { ptr, i64, i64 }, ptr %a99
|
|
%t103 = load { ptr, i64, i64 }, ptr %a1
|
|
%t104 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t103)
|
|
store { ptr, i64, i64 } %t102, ptr %a106
|
|
store { ptr, i64, i64 } %t104, ptr %a107
|
|
call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107)
|
|
%t108 = load { ptr, i64, i64 }, ptr %a105
|
|
store { ptr, i64, i64 } %t108, ptr %a110
|
|
store { ptr, i64, i64 } { ptr @.str.5952, i64 4, i64 0 }, ptr %a111
|
|
call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111)
|
|
%t112 = load { ptr, i64, i64 }, ptr %a109
|
|
%t113 = load { ptr, i64, i64 }, ptr %a79
|
|
%t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113)
|
|
store { ptr, i64, i64 } %t112, ptr %a116
|
|
store { ptr, i64, i64 } %t114, ptr %a117
|
|
call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117)
|
|
%t118 = load { ptr, i64, i64 }, ptr %a115
|
|
store { ptr, i64, i64 } %t118, ptr %a120
|
|
store { ptr, i64, i64 } { ptr @.str.5953, i64 3, i64 0 }, ptr %a121
|
|
call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121)
|
|
%t122 = load { ptr, i64, i64 }, ptr %a119
|
|
%t123 = load { ptr, i64, i64 }, ptr %a88
|
|
%t124 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t123)
|
|
store { ptr, i64, i64 } %t122, ptr %a126
|
|
store { ptr, i64, i64 } %t124, ptr %a127
|
|
call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127)
|
|
%t128 = load { ptr, i64, i64 }, ptr %a125
|
|
store { ptr, i64, i64 } %t128, ptr %a130
|
|
store { ptr, i64, i64 } { ptr @.str.5954, i64 5, i64 0 }, ptr %a131
|
|
call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131)
|
|
%t132 = load { ptr, i64, i64 }, ptr %a129
|
|
store { ptr, i64, i64 } %t132, ptr %a134
|
|
call void @finch_str_copy(ptr %a133, ptr %a134)
|
|
%t135 = call i64 @finch_shell(ptr %a133)
|
|
store i64 %t135, ptr %a136
|
|
%t137 = load i64, ptr %a136
|
|
%t138 = icmp ne i64 %t137, 0
|
|
br i1 %t138, label %then8937, label %endif8939
|
|
then8937:
|
|
%t139 = load { ptr, i64, i64 }, ptr %a88
|
|
store { ptr, i64, i64 } %t139, ptr %a140
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a141
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a142
|
|
%t143 = call i32 @finch_try_read_file(ptr %a141, ptr %a140, ptr %a142)
|
|
%t144 = icmp eq i32 %t143, 0
|
|
%t145 = load { ptr, i64, i64 }, ptr %a142
|
|
%t146 = load { ptr, i64, i64 }, ptr %a141
|
|
br i1 %t144, label %or.failed8940, label %or.ok8941
|
|
or.failed8940:
|
|
store { ptr, i64, i64 } %t145, ptr %a147
|
|
br label %or.bend8942
|
|
or.bend8942:
|
|
br label %or.end8943
|
|
or.ok8941:
|
|
br label %or.end8943
|
|
or.end8943:
|
|
%t148 = phi { ptr, i64, i64 } [ { ptr @.str.5955, i64 0, i64 0 }, %or.bend8942 ], [ %t146, %or.ok8941 ]
|
|
store { ptr, i64, i64 } %t148, ptr %a149
|
|
%t150 = load { ptr, i64, i64 }, ptr %a79
|
|
%t151 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t150)
|
|
store { ptr, i64, i64 } { ptr @.str.5956, i64 6, i64 0 }, ptr %a153
|
|
store { ptr, i64, i64 } %t151, ptr %a154
|
|
call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154)
|
|
%t155 = load { ptr, i64, i64 }, ptr %a152
|
|
store { ptr, i64, i64 } %t155, ptr %a157
|
|
store { ptr, i64, i64 } { ptr @.str.5957, i64 1, i64 0 }, ptr %a158
|
|
call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158)
|
|
%t159 = load { ptr, i64, i64 }, ptr %a156
|
|
%t160 = load { ptr, i64, i64 }, ptr %a88
|
|
%t161 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t160)
|
|
store { ptr, i64, i64 } %t159, ptr %a163
|
|
store { ptr, i64, i64 } %t161, ptr %a164
|
|
call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164)
|
|
%t165 = load { ptr, i64, i64 }, ptr %a162
|
|
store { ptr, i64, i64 } %t165, ptr %a167
|
|
call void @finch_str_copy(ptr %a166, ptr %a167)
|
|
%t168 = call i64 @finch_shell(ptr %a166)
|
|
%t169 = load { ptr, i64, i64 }, ptr %a149
|
|
store { ptr, i64, i64 } %t169, ptr %a171
|
|
store { ptr, i64, i64 } { ptr @.str.5958, i64 46, i64 0 }, ptr %a172
|
|
call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172)
|
|
%t173 = load { ptr, i64, i64 }, ptr %a170
|
|
%t174 = load { ptr, i64, i64 }, ptr %a3
|
|
store { ptr, i64, i64 } %t173, ptr %a176
|
|
store { ptr, i64, i64 } %t174, ptr %a177
|
|
call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177)
|
|
%t178 = load { ptr, i64, i64 }, ptr %a175
|
|
store { ptr, i64, i64 } %t178, ptr %a180
|
|
store { ptr, i64, i64 } { ptr @.str.5959, i64 30, i64 0 }, ptr %a181
|
|
call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181)
|
|
%t182 = load { ptr, i64, i64 }, ptr %a179
|
|
%t183 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t182, 2
|
|
ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t183
|
|
endif8939:
|
|
%t184 = load { ptr, i64, i64 }, ptr %a88
|
|
%t185 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t184)
|
|
store { ptr, i64, i64 } { ptr @.str.5960, i64 6, i64 0 }, ptr %a187
|
|
store { ptr, i64, i64 } %t185, ptr %a188
|
|
call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188)
|
|
%t189 = load { ptr, i64, i64 }, ptr %a186
|
|
store { ptr, i64, i64 } %t189, ptr %a191
|
|
store { ptr, i64, i64 } { ptr @.str.5961, i64 7, i64 0 }, ptr %a192
|
|
call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192)
|
|
%t193 = load { ptr, i64, i64 }, ptr %a190
|
|
%t194 = load { ptr, i64, i64 }, ptr %a79
|
|
%t195 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t194)
|
|
store { ptr, i64, i64 } %t193, ptr %a197
|
|
store { ptr, i64, i64 } %t195, ptr %a198
|
|
call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198)
|
|
%t199 = load { ptr, i64, i64 }, ptr %a196
|
|
store { ptr, i64, i64 } %t199, ptr %a201
|
|
store { ptr, i64, i64 } { ptr @.str.5962, i64 1, i64 0 }, ptr %a202
|
|
call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202)
|
|
%t203 = load { ptr, i64, i64 }, ptr %a200
|
|
%t204 = load { ptr, i64, i64 }, ptr %a46
|
|
%t205 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t204)
|
|
store { ptr, i64, i64 } %t203, ptr %a207
|
|
store { ptr, i64, i64 } %t205, ptr %a208
|
|
call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208)
|
|
%t209 = load { ptr, i64, i64 }, ptr %a206
|
|
store { ptr, i64, i64 } %t209, ptr %a211
|
|
call void @finch_str_copy(ptr %a210, ptr %a211)
|
|
%t212 = call i64 @finch_shell(ptr %a210)
|
|
%t213 = load { ptr, i64, i64 }, ptr %a46
|
|
store { ptr, i64, i64 } %t213, ptr %a214
|
|
call void @finch_str_copy(ptr %a215, ptr %a214)
|
|
%t216 = load { ptr, i64, i64 }, ptr %a215
|
|
%t217 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0
|
|
%t218 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t217, { ptr, i64, i64 } %t216, 1
|
|
ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t218
|
|
}
|
|
|
|
define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) {
|
|
entry:
|
|
%a1 = alloca %S.linker.Build, align 16
|
|
%a2 = alloca %S.platform.Target, align 16
|
|
%a3 = alloca %S.cimport.CImports, align 16
|
|
%a8 = alloca { ptr, i64, i64 }, align 16
|
|
%a10 = alloca { ptr, i64, i64 }, align 16
|
|
%a11 = alloca { ptr, i64, i64 }, align 16
|
|
%a13 = alloca { ptr, i64, i64 }, align 16
|
|
%a18 = alloca { ptr, i64, i64 }, align 16
|
|
%a19 = alloca { ptr, i64, i64 }, align 16
|
|
%a21 = alloca { ptr, i64, i64 }, align 16
|
|
%a26 = alloca { ptr, i64, i64 }, align 16
|
|
%a27 = alloca { ptr, i64, i64 }, align 16
|
|
%a33 = alloca { ptr, i64, i64 }, align 16
|
|
%a41 = alloca { ptr, i64, i64 }, align 16
|
|
%a43 = alloca { ptr, i64, i64 }, align 16
|
|
%a44 = alloca { ptr, i64, i64 }, align 16
|
|
%a55 = alloca { ptr, i64, i64 }, align 16
|
|
%a64 = alloca { ptr, i64, i64 }, align 16
|
|
%a67 = alloca { ptr, i64, i64 }, align 16
|
|
%a68 = alloca { ptr, i64, i64 }, align 16
|
|
%a69 = alloca { ptr, i64, i64 }, align 16
|
|
%a71 = alloca { ptr, i64, i64 }, align 16
|
|
%a74 = alloca { ptr, i64, i64 }, align 16
|
|
%a75 = alloca { ptr, i64, i64 }, align 16
|
|
%a76 = alloca { ptr, i64, i64 }, align 16
|
|
%a78 = alloca { ptr, i64, i64 }, align 16
|
|
%a80 = alloca { ptr, i64, i64 }, align 16
|
|
%a83 = alloca { ptr, i64, i64 }, align 16
|
|
%a86 = alloca { ptr, i64, i64 }, align 16
|
|
%a91 = alloca { ptr, i64, i64 }, align 16
|
|
%a92 = alloca { ptr, i64, i64 }, align 16
|
|
%a93 = alloca { ptr, i64, i64 }, align 16
|
|
%a97 = alloca { ptr, i64, i64 }, align 16
|
|
%a98 = alloca { ptr, i64, i64 }, align 16
|
|
%a99 = alloca { ptr, i64, i64 }, align 16
|
|
%a101 = alloca { ptr, i64, i64 }, align 16
|
|
%a104 = alloca { ptr, i64, i64 }, align 16
|
|
%a105 = alloca { ptr, i64, i64 }, align 16
|
|
%a106 = alloca { ptr, i64, i64 }, align 16
|
|
%a108 = alloca { ptr, i64, i64 }, align 16
|
|
%a109 = alloca { ptr, i64, i64 }, align 16
|
|
%a110 = alloca { ptr, i64, i64 }, align 16
|
|
%a114 = alloca { ptr, i64, i64 }, align 16
|
|
%a115 = alloca { ptr, i64, i64 }, align 16
|
|
%a116 = alloca { ptr, i64, i64 }, align 16
|
|
%a120 = alloca { ptr, i64, i64 }, align 16
|
|
%a121 = alloca { ptr, i64, i64 }, align 16
|
|
%a122 = alloca { ptr, i64, i64 }, align 16
|
|
%a124 = alloca { ptr, i64, i64 }, align 16
|
|
%a125 = alloca { ptr, i64, i64 }, align 16
|
|
%a126 = alloca { ptr, i64, i64 }, align 16
|
|
%a130 = alloca { ptr, i64, i64 }, align 16
|
|
%a131 = alloca { ptr, i64, i64 }, align 16
|
|
%a132 = alloca { ptr, i64, i64 }, align 16
|
|
%a134 = alloca { ptr, i64, i64 }, align 16
|
|
%a135 = alloca { ptr, i64, i64 }, align 16
|
|
%a136 = alloca { ptr, i64, i64 }, align 16
|
|
%a140 = alloca { ptr, i64, i64 }, align 16
|
|
%a141 = alloca { ptr, i64, i64 }, align 16
|
|
%a142 = alloca { ptr, i64, i64 }, align 16
|
|
%a144 = alloca { ptr, i64, i64 }, align 16
|
|
%a145 = alloca { ptr, i64, i64 }, align 16
|
|
%a146 = alloca { ptr, i64, i64 }, align 16
|
|
%a150 = alloca { ptr, i64, i64 }, align 16
|
|
%a151 = alloca { ptr, i64, i64 }, align 16
|
|
%a152 = alloca { ptr, i64, i64 }, align 16
|
|
%a154 = alloca { ptr, i64, i64 }, align 16
|
|
%a155 = alloca { ptr, i64, i64 }, align 16
|
|
%a156 = alloca { ptr, i64, i64 }, align 16
|
|
%a158 = alloca { ptr, i64, i64 }, align 16
|
|
%a159 = alloca { ptr, i64, i64 }, align 16
|
|
%a161 = alloca i64, align 16
|
|
%a164 = alloca { ptr, i64, i64 }, align 16
|
|
%a165 = alloca { ptr, i64, i64 }, align 16
|
|
%a166 = alloca { ptr, i64, i64 }, align 16
|
|
%a168 = alloca { ptr, i64, i64 }, align 16
|
|
%a169 = alloca { ptr, i64, i64 }, align 16
|
|
%a174 = alloca { ptr, i64, i64 }, align 16
|
|
%a175 = alloca { ptr, i64, i64 }, align 16
|
|
%a176 = alloca { ptr, i64, i64 }, align 16
|
|
%a181 = alloca { ptr, i64, i64 }, align 16
|
|
%a199 = alloca { ptr, i64, i64 }, align 16
|
|
%a200 = alloca { ptr, i64, i64 }, align 16
|
|
%a201 = alloca { ptr, i64, i64 }, align 16
|
|
%a203 = alloca { ptr, i64, i64 }, align 16
|
|
%a204 = alloca { ptr, i64, i64 }, align 16
|
|
%a205 = alloca { ptr, i64, i64 }, align 16
|
|
%a209 = alloca { ptr, i64, i64 }, align 16
|
|
%a210 = alloca { ptr, i64, i64 }, align 16
|
|
%a211 = alloca { ptr, i64, i64 }, align 16
|
|
%a213 = alloca { ptr, i64, i64 }, align 16
|
|
%a214 = alloca { ptr, i64, i64 }, align 16
|
|
%a217 = alloca { ptr, i64, i64 }, align 16
|
|
%a218 = alloca { ptr, i64, i64 }, align 16
|
|
%a219 = alloca { ptr, i64, i64 }, align 16
|
|
%a223 = alloca { ptr, i64, i64 }, align 16
|
|
%a224 = alloca { ptr, i64, i64 }, align 16
|
|
%a225 = alloca { ptr, i64, i64 }, align 16
|
|
%a227 = alloca { ptr, i64, i64 }, align 16
|
|
%a228 = alloca { ptr, i64, i64 }, align 16
|
|
%a229 = alloca { ptr, i64, i64 }, align 16
|
|
%a233 = alloca { ptr, i64, i64 }, align 16
|
|
%a234 = alloca { ptr, i64, i64 }, align 16
|
|
%a235 = alloca { ptr, i64, i64 }, align 16
|
|
%a237 = alloca { ptr, i64, i64 }, align 16
|
|
%a238 = alloca { ptr, i64, i64 }, align 16
|
|
%a239 = alloca { ptr, i64, i64 }, align 16
|
|
%a244 = alloca { ptr, i64, i64 }, align 16
|
|
%a245 = alloca { ptr, i64, i64 }, align 16
|
|
%a246 = alloca { ptr, i64, i64 }, align 16
|
|
%a248 = alloca { ptr, i64, i64 }, align 16
|
|
%a253 = alloca { ptr, i64, i64 }, align 16
|
|
%a254 = alloca { ptr, i64, i64 }, align 16
|
|
%a255 = alloca { ptr, i64, i64 }, align 16
|
|
%a262 = alloca { ptr, i64, i64 }, align 16
|
|
%a263 = alloca { ptr, i64, i64 }, align 16
|
|
%a264 = alloca { ptr, i64, i64 }, align 16
|
|
%a267 = alloca { ptr, i64, i64 }, align 16
|
|
%a268 = alloca { ptr, i64, i64 }, align 16
|
|
%a269 = alloca { ptr, i64, i64 }, align 16
|
|
%a271 = alloca { ptr, i64, i64 }, align 16
|
|
%a273 = alloca i64, align 16
|
|
%a281 = alloca { ptr, i64, i64 }, align 16
|
|
%a283 = alloca { ptr, i64, i64 }, align 16
|
|
%a284 = alloca { ptr, i64, i64 }, align 16
|
|
%a285 = alloca { ptr, i64, i64 }, align 16
|
|
%a290 = alloca { ptr, i64, i64 }, align 16
|
|
%a291 = alloca { ptr, i64, i64 }, align 16
|
|
%a292 = alloca { ptr, i64, i64 }, align 16
|
|
%a296 = alloca { ptr, i64, i64 }, align 16
|
|
%a298 = alloca { ptr, i64, i64 }, align 16
|
|
%a299 = alloca { ptr, i64, i64 }, align 16
|
|
%a300 = alloca { ptr, i64, i64 }, align 16
|
|
%a302 = alloca { ptr, i64, i64 }, align 16
|
|
%a303 = alloca { ptr, i64, i64 }, align 16
|
|
%a304 = alloca { ptr, i64, i64 }, align 16
|
|
%a306 = alloca { ptr, i64, i64 }, align 16
|
|
%a307 = alloca { ptr, i64, i64 }, align 16
|
|
%a311 = alloca { ptr, i64, i64 }, align 16
|
|
%a312 = alloca { ptr, i64, i64 }, align 16
|
|
%a313 = alloca { ptr, i64, i64 }, align 16
|
|
%a316 = alloca { ptr, i64, i64 }, align 16
|
|
%a317 = alloca { ptr, i64, i64 }, align 16
|
|
%a318 = alloca { ptr, i64, i64 }, align 16
|
|
%a320 = alloca { ptr, i64, i64 }, align 16
|
|
%a321 = alloca { ptr, i64, i64 }, align 16
|
|
%a322 = alloca { ptr, i64, i64 }, align 16
|
|
%a326 = alloca { ptr, i64, i64 }, align 16
|
|
%a327 = alloca { ptr, i64, i64 }, align 16
|
|
%a328 = alloca { ptr, i64, i64 }, align 16
|
|
%a330 = alloca { ptr, i64, i64 }, align 16
|
|
%a331 = alloca { ptr, i64, i64 }, align 16
|
|
%a332 = alloca { ptr, i64, i64 }, align 16
|
|
%a336 = alloca { ptr, i64, i64 }, align 16
|
|
%a337 = alloca { ptr, i64, i64 }, align 16
|
|
%a338 = alloca { ptr, i64, i64 }, align 16
|
|
%a340 = alloca { ptr, i64, i64 }, align 16
|
|
%a341 = alloca { ptr, i64, i64 }, align 16
|
|
%a342 = alloca { ptr, i64, i64 }, align 16
|
|
%a346 = alloca { ptr, i64, i64 }, align 16
|
|
%a347 = alloca { ptr, i64, i64 }, align 16
|
|
%a348 = alloca { ptr, i64, i64 }, align 16
|
|
%a350 = alloca { ptr, i64, i64 }, align 16
|
|
%a351 = alloca { ptr, i64, i64 }, align 16
|
|
%a352 = alloca { ptr, i64, i64 }, align 16
|
|
%a354 = alloca { ptr, i64, i64 }, align 16
|
|
%a355 = alloca { ptr, i64, i64 }, align 16
|
|
%a357 = alloca i64, align 16
|
|
%a361 = alloca { ptr, i64, i64 }, align 16
|
|
%a362 = alloca { ptr, i64, i64 }, align 16
|
|
%a363 = alloca { ptr, i64, i64 }, align 16
|
|
%a368 = alloca { ptr, i64, i64 }, align 16
|
|
%a370 = alloca { ptr, i64, i64 }, align 16
|
|
%a371 = alloca { ptr, i64, i64 }, align 16
|
|
%a372 = alloca { ptr, i64, i64 }, align 16
|
|
%a375 = alloca { ptr, i64, i64 }, align 16
|
|
%a376 = alloca { ptr, i64, i64 }, align 16
|
|
%a377 = alloca { ptr, i64, i64 }, align 16
|
|
%a388 = alloca { ptr, i64, i64 }, align 16
|
|
%a389 = alloca { ptr, i64, i64 }, align 16
|
|
%a390 = alloca { ptr, i64, i64 }, align 16
|
|
%a392 = alloca { ptr, i64, i64 }, align 16
|
|
%a393 = alloca { ptr, i64, i64 }, align 16
|
|
%a394 = alloca { ptr, i64, i64 }, align 16
|
|
%a398 = alloca { ptr, i64, i64 }, align 16
|
|
%a399 = alloca { ptr, i64, i64 }, align 16
|
|
%a400 = alloca { ptr, i64, i64 }, align 16
|
|
%a402 = alloca { ptr, i64, i64 }, align 16
|
|
%a403 = alloca { ptr, i64, i64 }, align 16
|
|
%a404 = alloca { ptr, i64, i64 }, align 16
|
|
%a408 = alloca { ptr, i64, i64 }, align 16
|
|
%a409 = alloca { ptr, i64, i64 }, align 16
|
|
%a410 = alloca { ptr, i64, i64 }, align 16
|
|
%a412 = alloca { ptr, i64, i64 }, align 16
|
|
%a413 = alloca { ptr, i64, i64 }, align 16
|
|
%a417 = alloca { ptr, i64, i64 }, align 16
|
|
%a418 = alloca { ptr, i64, i64 }, align 16
|
|
%a425 = alloca { ptr, i64, i64 }, align 16
|
|
%a426 = alloca { ptr, i64, i64 }, align 16
|
|
%a427 = alloca { ptr, i64, i64 }, align 16
|
|
%a431 = alloca { ptr, i64, i64 }, align 16
|
|
%a432 = alloca { ptr, i64, i64 }, align 16
|
|
%a433 = alloca { ptr, i64, i64 }, align 16
|
|
%a436 = alloca { ptr, i64, i64 }, align 16
|
|
%a437 = alloca { ptr, i64, i64 }, align 16
|
|
%a438 = alloca { ptr, i64, i64 }, align 16
|
|
%a442 = alloca { ptr, i64, i64 }, align 16
|
|
%a443 = alloca { ptr, i64, i64 }, align 16
|
|
%a444 = alloca { ptr, i64, i64 }, align 16
|
|
%a449 = alloca { ptr, i64, i64 }, align 16
|
|
%a450 = alloca { ptr, i64, i64 }, align 16
|
|
%a451 = alloca { ptr, i64, i64 }, align 16
|
|
%a455 = alloca { ptr, i64, i64 }, align 16
|
|
%a456 = alloca { ptr, i64, i64 }, align 16
|
|
%a457 = alloca { ptr, i64, i64 }, align 16
|
|
%a460 = alloca { ptr, i64, i64 }, align 16
|
|
%a461 = alloca { ptr, i64, i64 }, align 16
|
|
%a462 = alloca { ptr, i64, i64 }, align 16
|
|
%a467 = alloca { ptr, i64, i64 }, align 16
|
|
%a468 = alloca { ptr, i64, i64 }, align 16
|
|
%a469 = alloca { ptr, i64, i64 }, align 16
|
|
%a474 = alloca { ptr, i64, i64 }, align 16
|
|
%a475 = alloca { ptr, i64, i64 }, align 16
|
|
%a476 = alloca { ptr, i64, i64 }, align 16
|
|
%a480 = alloca { ptr, i64, i64 }, align 16
|
|
%a481 = alloca { ptr, i64, i64 }, align 16
|
|
%a482 = alloca { ptr, i64, i64 }, align 16
|
|
%a484 = alloca { ptr, i64, i64 }, align 16
|
|
%a485 = alloca { ptr, i64, i64 }, align 16
|
|
%a486 = alloca { ptr, i64, i64 }, align 16
|
|
%a488 = alloca { ptr, i64, i64 }, align 16
|
|
%a489 = alloca { ptr, i64, i64 }, align 16
|
|
%a491 = alloca i64, align 16
|
|
%a493 = alloca { ptr, i64, i64 }, align 16
|
|
%a494 = alloca { ptr, i64, i64 }, align 16
|
|
%a495 = alloca { ptr, i64, i64 }, align 16
|
|
%a500 = alloca { ptr, i64, i64 }, align 16
|
|
%a502 = alloca { ptr, i64, i64 }, align 16
|
|
%a505 = alloca { ptr, i64, i64 }, align 16
|
|
%a506 = alloca { ptr, i64, i64 }, align 16
|
|
%a507 = alloca { ptr, i64, i64 }, align 16
|
|
%a509 = alloca { ptr, i64, i64 }, align 16
|
|
%a510 = alloca { ptr, i64, i64 }, align 16
|
|
%a511 = alloca { ptr, i64, i64 }, align 16
|
|
%a515 = alloca { ptr, i64, i64 }, align 16
|
|
%a516 = alloca { ptr, i64, i64 }, align 16
|
|
%a517 = alloca { ptr, i64, i64 }, align 16
|
|
%a519 = alloca { ptr, i64, i64 }, align 16
|
|
%a520 = alloca { ptr, i64, i64 }, align 16
|
|
%a522 = alloca i64, align 16
|
|
%a530 = alloca { ptr, i64, i64 }, align 16
|
|
%a533 = alloca { ptr, i64, i64 }, align 16
|
|
%a534 = alloca { ptr, i64, i64 }, align 16
|
|
%a535 = alloca { ptr, i64, i64 }, align 16
|
|
%a537 = alloca { ptr, i64, i64 }, align 16
|
|
%a538 = alloca { ptr, i64, i64 }, align 16
|
|
%a545 = alloca { ptr, i64, i64 }, align 16
|
|
%a546 = alloca { ptr, i64, i64 }, align 16
|
|
%a547 = alloca { ptr, i64, i64 }, align 16
|
|
%a549 = alloca { ptr, i64, i64 }, align 16
|
|
%a550 = alloca { ptr, i64, i64 }, align 16
|
|
%a551 = alloca { ptr, i64, i64 }, align 16
|
|
store %S.linker.Build %p0, ptr %a1
|
|
store %S.platform.Target %p1, ptr %a2
|
|
store %S.cimport.CImports %p2, ptr %a3
|
|
%t4 = extractvalue { ptr, i64, i64 } { ptr @.str.5963, i64 11, i64 0 }, 0
|
|
%t5 = icmp eq ptr %t4, null
|
|
%t6 = select i1 %t5, ptr @.str.5964, 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 %then8944, label %endif8946
|
|
then8944:
|
|
store { ptr, i64, i64 } { ptr @.str.5965, i64 5, i64 0 }, ptr %a13
|
|
br label %endif8946
|
|
endif8946:
|
|
%t17 = load { ptr, i64, i64 }, ptr %a13
|
|
store { ptr, i64, i64 } %t17, ptr %a18
|
|
call void @finch_str_copy(ptr %a19, ptr %a18)
|
|
%t20 = load { ptr, i64, i64 }, ptr %a19
|
|
store { ptr, i64, i64 } %t20, ptr %a21
|
|
%t22 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5
|
|
%t23 = load i1, ptr %t22
|
|
br i1 %t23, label %then8947, label %else8948
|
|
then8947:
|
|
%t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7
|
|
%t25 = load { ptr, i64, i64 }, ptr %t24
|
|
store { ptr, i64, i64 } %t25, ptr %a26
|
|
call void @finch_str_copy(ptr %a27, ptr %a26)
|
|
%t28 = load { ptr, i64, i64 }, ptr %a27
|
|
store { ptr, i64, i64 } %t28, ptr %a21
|
|
br label %endif8949
|
|
else8948:
|
|
%t29 = extractvalue { ptr, i64, i64 } { ptr @.str.5966, i64 8, i64 0 }, 0
|
|
%t30 = icmp eq ptr %t29, null
|
|
%t31 = select i1 %t30, ptr @.str.5967, ptr %t29
|
|
%t32 = call ptr @getenv(ptr %t31)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a33
|
|
call void @finch_str_from_c(ptr %a33, ptr %t32)
|
|
%t34 = load { ptr, i64, i64 }, ptr %a33
|
|
%t35 = extractvalue { ptr, i64, i64 } %t34, 1
|
|
%t36 = icmp sgt i64 %t35, 0
|
|
br i1 %t36, label %then8950, label %endif8952
|
|
then8950:
|
|
%t37 = extractvalue { ptr, i64, i64 } { ptr @.str.5968, i64 8, i64 0 }, 0
|
|
%t38 = icmp eq ptr %t37, null
|
|
%t39 = select i1 %t38, ptr @.str.5969, ptr %t37
|
|
%t40 = call ptr @getenv(ptr %t39)
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a41
|
|
call void @finch_str_from_c(ptr %a41, ptr %t40)
|
|
%t42 = load { ptr, i64, i64 }, ptr %a41
|
|
store { ptr, i64, i64 } %t42, ptr %a43
|
|
call void @finch_str_copy(ptr %a44, ptr %a43)
|
|
%t45 = load { ptr, i64, i64 }, ptr %a44
|
|
store { ptr, i64, i64 } %t45, ptr %a21
|
|
br label %endif8952
|
|
endif8952:
|
|
br label %endif8949
|
|
endif8949:
|
|
%t46 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2
|
|
%t47 = load { ptr, i64, i64 }, ptr %t46
|
|
%t48 = load %S.platform.Target, ptr %a2
|
|
%t49 = load { ptr, i64, i64 }, ptr %a21
|
|
%t50 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t47, %S.platform.Target %t48, { ptr, i64, i64 } %t49)
|
|
%t51 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t50, 0
|
|
%t52 = xor i1 %t51, true
|
|
%t53 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t50, 2
|
|
%t54 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t50, 1
|
|
br i1 %t52, label %or.failed8953, label %or.ok8954
|
|
or.failed8953:
|
|
store { ptr, i64, i64 } %t53, ptr %a55
|
|
%t56 = load { ptr, i64, i64 }, ptr %a55
|
|
%t57 = extractvalue { ptr, i64, i64 } %t56, 1
|
|
%t58 = trunc i64 %t57 to i32
|
|
%t59 = extractvalue { ptr, i64, i64 } %t56, 0
|
|
%t60 = icmp eq ptr %t59, null
|
|
%t61 = select i1 %t60, ptr @.str.5970, ptr %t59
|
|
%t62 = call i32 (ptr, ...) @printf(ptr @.str.5971, i32 %t58, ptr %t61)
|
|
%t63 = call i32 (ptr, ...) @printf(ptr @.str.5972)
|
|
ret i64 1
|
|
or.ok8954:
|
|
store { ptr, i64, i64 } %t54, ptr %a64
|
|
%t65 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0
|
|
%t66 = load { ptr, i64, i64 }, ptr %t65
|
|
store { ptr, i64, i64 } %t66, ptr %a68
|
|
store { ptr, i64, i64 } { ptr @.str.5973, i64 3, i64 0 }, ptr %a69
|
|
call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69)
|
|
%t70 = load { ptr, i64, i64 }, ptr %a67
|
|
store { ptr, i64, i64 } %t70, ptr %a71
|
|
%t72 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0
|
|
%t73 = load { ptr, i64, i64 }, ptr %t72
|
|
store { ptr, i64, i64 } %t73, ptr %a75
|
|
store { ptr, i64, i64 } { ptr @.str.5974, i64 2, i64 0 }, ptr %a76
|
|
call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76)
|
|
%t77 = load { ptr, i64, i64 }, ptr %a74
|
|
store { ptr, i64, i64 } %t77, ptr %a78
|
|
%t79 = load { ptr, i64, i64 }, ptr %a71
|
|
store { ptr, i64, i64 } %t79, ptr %a80
|
|
%t81 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1
|
|
%t82 = load { ptr, i64, i64 }, ptr %t81
|
|
store { ptr, i64, i64 } %t82, ptr %a83
|
|
%t84 = call i32 @finch_write_file(ptr %a80, ptr %a83)
|
|
%t85 = icmp ne i32 %t84, 0
|
|
store { ptr, i64, i64 } { ptr @.str.5975, i64 0, i64 0 }, ptr %a86
|
|
%t87 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5
|
|
%t88 = load i1, ptr %t87
|
|
br i1 %t88, label %then8955, label %endif8957
|
|
then8955:
|
|
%t89 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0
|
|
%t90 = load { ptr, i64, i64 }, ptr %t89
|
|
store { ptr, i64, i64 } { ptr @.str.5976, i64 10, i64 0 }, ptr %a92
|
|
store { ptr, i64, i64 } %t90, ptr %a93
|
|
call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93)
|
|
%t94 = load { ptr, i64, i64 }, ptr %a91
|
|
store { ptr, i64, i64 } %t94, ptr %a86
|
|
br label %endif8957
|
|
endif8957:
|
|
%t95 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0
|
|
%t96 = load { ptr, i64, i64 }, ptr %t95
|
|
store { ptr, i64, i64 } %t96, ptr %a98
|
|
store { ptr, i64, i64 } { ptr @.str.5977, i64 4, i64 0 }, ptr %a99
|
|
call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99)
|
|
%t100 = load { ptr, i64, i64 }, ptr %a97
|
|
store { ptr, i64, i64 } %t100, ptr %a101
|
|
%t102 = load { ptr, i64, i64 }, ptr %a13
|
|
%t103 = load { ptr, i64, i64 }, ptr %a86
|
|
store { ptr, i64, i64 } %t102, ptr %a105
|
|
store { ptr, i64, i64 } %t103, ptr %a106
|
|
call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106)
|
|
%t107 = load { ptr, i64, i64 }, ptr %a104
|
|
store { ptr, i64, i64 } %t107, ptr %a109
|
|
store { ptr, i64, i64 } { ptr @.str.5978, i64 1, i64 0 }, ptr %a110
|
|
call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110)
|
|
%t111 = load { ptr, i64, i64 }, ptr %a108
|
|
%t112 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3
|
|
%t113 = load { ptr, i64, i64 }, ptr %t112
|
|
store { ptr, i64, i64 } %t111, ptr %a115
|
|
store { ptr, i64, i64 } %t113, ptr %a116
|
|
call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116)
|
|
%t117 = load { ptr, i64, i64 }, ptr %a114
|
|
%t118 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4
|
|
%t119 = load { ptr, i64, i64 }, ptr %t118
|
|
store { ptr, i64, i64 } %t117, ptr %a121
|
|
store { ptr, i64, i64 } %t119, ptr %a122
|
|
call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122)
|
|
%t123 = load { ptr, i64, i64 }, ptr %a120
|
|
store { ptr, i64, i64 } %t123, ptr %a125
|
|
store { ptr, i64, i64 } { ptr @.str.5979, i64 7, i64 0 }, ptr %a126
|
|
call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126)
|
|
%t127 = load { ptr, i64, i64 }, ptr %a124
|
|
%t128 = load { ptr, i64, i64 }, ptr %a71
|
|
%t129 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t128)
|
|
store { ptr, i64, i64 } %t127, ptr %a131
|
|
store { ptr, i64, i64 } %t129, ptr %a132
|
|
call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132)
|
|
%t133 = load { ptr, i64, i64 }, ptr %a130
|
|
store { ptr, i64, i64 } %t133, ptr %a135
|
|
store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %a136
|
|
call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136)
|
|
%t137 = load { ptr, i64, i64 }, ptr %a134
|
|
%t138 = load { ptr, i64, i64 }, ptr %a78
|
|
%t139 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t138)
|
|
store { ptr, i64, i64 } %t137, ptr %a141
|
|
store { ptr, i64, i64 } %t139, ptr %a142
|
|
call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142)
|
|
%t143 = load { ptr, i64, i64 }, ptr %a140
|
|
store { ptr, i64, i64 } %t143, ptr %a145
|
|
store { ptr, i64, i64 } { ptr @.str.5981, i64 3, i64 0 }, ptr %a146
|
|
call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146)
|
|
%t147 = load { ptr, i64, i64 }, ptr %a144
|
|
%t148 = load { ptr, i64, i64 }, ptr %a101
|
|
%t149 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t148)
|
|
store { ptr, i64, i64 } %t147, ptr %a151
|
|
store { ptr, i64, i64 } %t149, ptr %a152
|
|
call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152)
|
|
%t153 = load { ptr, i64, i64 }, ptr %a150
|
|
store { ptr, i64, i64 } %t153, ptr %a155
|
|
store { ptr, i64, i64 } { ptr @.str.5982, i64 5, i64 0 }, ptr %a156
|
|
call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156)
|
|
%t157 = load { ptr, i64, i64 }, ptr %a154
|
|
store { ptr, i64, i64 } %t157, ptr %a159
|
|
call void @finch_str_copy(ptr %a158, ptr %a159)
|
|
%t160 = call i64 @finch_shell(ptr %a158)
|
|
store i64 %t160, ptr %a161
|
|
%t162 = load { ptr, i64, i64 }, ptr %a71
|
|
%t163 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t162)
|
|
store { ptr, i64, i64 } { ptr @.str.5983, i64 6, i64 0 }, ptr %a165
|
|
store { ptr, i64, i64 } %t163, ptr %a166
|
|
call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166)
|
|
%t167 = load { ptr, i64, i64 }, ptr %a164
|
|
store { ptr, i64, i64 } %t167, ptr %a169
|
|
call void @finch_str_copy(ptr %a168, ptr %a169)
|
|
%t170 = call i64 @finch_shell(ptr %a168)
|
|
%t171 = load i64, ptr %a161
|
|
%t172 = icmp ne i64 %t171, 0
|
|
br i1 %t172, label %then8958, label %endif8960
|
|
then8958:
|
|
%t173 = load { ptr, i64, i64 }, ptr %a101
|
|
store { ptr, i64, i64 } %t173, ptr %a174
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a175
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a176
|
|
%t177 = call i32 @finch_try_read_file(ptr %a175, ptr %a174, ptr %a176)
|
|
%t178 = icmp eq i32 %t177, 0
|
|
%t179 = load { ptr, i64, i64 }, ptr %a176
|
|
%t180 = load { ptr, i64, i64 }, ptr %a175
|
|
br i1 %t178, label %or.failed8961, label %or.ok8962
|
|
or.failed8961:
|
|
store { ptr, i64, i64 } %t179, ptr %a181
|
|
br label %or.bend8963
|
|
or.bend8963:
|
|
br label %or.end8964
|
|
or.ok8962:
|
|
br label %or.end8964
|
|
or.end8964:
|
|
%t182 = phi { ptr, i64, i64 } [ { ptr @.str.5984, i64 0, i64 0 }, %or.bend8963 ], [ %t180, %or.ok8962 ]
|
|
%t183 = extractvalue { ptr, i64, i64 } %t182, 1
|
|
%t184 = trunc i64 %t183 to i32
|
|
%t185 = extractvalue { ptr, i64, i64 } %t182, 0
|
|
%t186 = icmp eq ptr %t185, null
|
|
%t187 = select i1 %t186, ptr @.str.5985, ptr %t185
|
|
%t188 = call i32 (ptr, ...) @printf(ptr @.str.5986, i32 %t184, ptr %t187)
|
|
%t189 = call i32 (ptr, ...) @printf(ptr @.str.5987)
|
|
%t190 = extractvalue { ptr, i64, i64 } { ptr @.str.5988, i64 46, i64 0 }, 1
|
|
%t191 = trunc i64 %t190 to i32
|
|
%t192 = extractvalue { ptr, i64, i64 } { ptr @.str.5988, i64 46, i64 0 }, 0
|
|
%t193 = icmp eq ptr %t192, null
|
|
%t194 = select i1 %t193, ptr @.str.5989, ptr %t192
|
|
%t195 = call i32 (ptr, ...) @printf(ptr @.str.5990, i32 %t191, ptr %t194)
|
|
%t196 = call i32 (ptr, ...) @printf(ptr @.str.5991)
|
|
%t197 = load { ptr, i64, i64 }, ptr %a78
|
|
%t198 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t197)
|
|
store { ptr, i64, i64 } { ptr @.str.5992, i64 6, i64 0 }, ptr %a200
|
|
store { ptr, i64, i64 } %t198, ptr %a201
|
|
call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201)
|
|
%t202 = load { ptr, i64, i64 }, ptr %a199
|
|
store { ptr, i64, i64 } %t202, ptr %a204
|
|
store { ptr, i64, i64 } { ptr @.str.5993, i64 1, i64 0 }, ptr %a205
|
|
call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205)
|
|
%t206 = load { ptr, i64, i64 }, ptr %a203
|
|
%t207 = load { ptr, i64, i64 }, ptr %a101
|
|
%t208 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t207)
|
|
store { ptr, i64, i64 } %t206, ptr %a210
|
|
store { ptr, i64, i64 } %t208, ptr %a211
|
|
call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211)
|
|
%t212 = load { ptr, i64, i64 }, ptr %a209
|
|
store { ptr, i64, i64 } %t212, ptr %a214
|
|
call void @finch_str_copy(ptr %a213, ptr %a214)
|
|
%t215 = call i64 @finch_shell(ptr %a213)
|
|
ret i64 1
|
|
endif8960:
|
|
%t216 = load { ptr, i64, i64 }, ptr %a21
|
|
store { ptr, i64, i64 } %t216, ptr %a218
|
|
store { ptr, i64, i64 } { ptr @.str.5994, i64 1, i64 0 }, ptr %a219
|
|
call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219)
|
|
%t220 = load { ptr, i64, i64 }, ptr %a217
|
|
%t221 = load { ptr, i64, i64 }, ptr %a78
|
|
%t222 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t221)
|
|
store { ptr, i64, i64 } %t220, ptr %a224
|
|
store { ptr, i64, i64 } %t222, ptr %a225
|
|
call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225)
|
|
%t226 = load { ptr, i64, i64 }, ptr %a223
|
|
store { ptr, i64, i64 } %t226, ptr %a228
|
|
store { ptr, i64, i64 } { ptr @.str.5995, i64 1, i64 0 }, ptr %a229
|
|
call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229)
|
|
%t230 = load { ptr, i64, i64 }, ptr %a227
|
|
%t231 = load { ptr, i64, i64 }, ptr %a64
|
|
%t232 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t231)
|
|
store { ptr, i64, i64 } %t230, ptr %a234
|
|
store { ptr, i64, i64 } %t232, ptr %a235
|
|
call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235)
|
|
%t236 = load { ptr, i64, i64 }, ptr %a233
|
|
store { ptr, i64, i64 } %t236, ptr %a238
|
|
store { ptr, i64, i64 } { ptr @.str.5996, i64 4, i64 0 }, ptr %a239
|
|
call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239)
|
|
%t240 = load { ptr, i64, i64 }, ptr %a237
|
|
%t241 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0
|
|
%t242 = load { ptr, i64, i64 }, ptr %t241
|
|
%t243 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t242)
|
|
store { ptr, i64, i64 } %t240, ptr %a245
|
|
store { ptr, i64, i64 } %t243, ptr %a246
|
|
call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246)
|
|
%t247 = load { ptr, i64, i64 }, ptr %a244
|
|
store { ptr, i64, i64 } %t247, ptr %a248
|
|
%t249 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2
|
|
%t250 = load i1, ptr %t249
|
|
%t251 = xor i1 %t250, true
|
|
br i1 %t251, label %then8965, label %endif8967
|
|
then8965:
|
|
%t252 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t252, ptr %a254
|
|
store { ptr, i64, i64 } { ptr @.str.5997, i64 4, i64 0 }, ptr %a255
|
|
call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255)
|
|
%t256 = load { ptr, i64, i64 }, ptr %a253
|
|
store { ptr, i64, i64 } %t256, ptr %a248
|
|
br label %endif8967
|
|
endif8967:
|
|
%t257 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5
|
|
%t258 = load i1, ptr %t257
|
|
br i1 %t258, label %then8968, label %endif8970
|
|
then8968:
|
|
%t259 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3
|
|
%t260 = load i1, ptr %t259
|
|
br i1 %t260, label %then8971, label %else8972
|
|
then8971:
|
|
%t261 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t261, ptr %a263
|
|
store { ptr, i64, i64 } { ptr @.str.5998, i64 12, i64 0 }, ptr %a264
|
|
call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264)
|
|
%t265 = load { ptr, i64, i64 }, ptr %a262
|
|
store { ptr, i64, i64 } %t265, ptr %a248
|
|
br label %endif8973
|
|
else8972:
|
|
%t266 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t266, ptr %a268
|
|
store { ptr, i64, i64 } { ptr @.str.5999, i64 8, i64 0 }, ptr %a269
|
|
call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269)
|
|
%t270 = load { ptr, i64, i64 }, ptr %a267
|
|
store { ptr, i64, i64 } %t270, ptr %a248
|
|
br label %endif8973
|
|
endif8973:
|
|
br label %endif8970
|
|
endif8970:
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a271
|
|
%t272 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6
|
|
store i64 0, ptr %a273
|
|
br label %each.cond8974
|
|
each.cond8974:
|
|
%t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t272, i32 0, i32 1
|
|
%t275 = load i64, ptr %t274
|
|
%t276 = load i64, ptr %a273
|
|
%t277 = icmp slt i64 %t276, %t275
|
|
br i1 %t277, label %each.body8975, label %each.end8977
|
|
each.body8975:
|
|
%t278 = load ptr, ptr %t272
|
|
%t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i64 %t276
|
|
%t280 = load { ptr, i64, i64 }, ptr %t279
|
|
store { ptr, i64, i64 } %t280, ptr %a281
|
|
%t282 = load { ptr, i64, i64 }, ptr %a281
|
|
store { ptr, i64, i64 } %t282, ptr %a283
|
|
store { ptr, i64, i64 } { ptr @.str.6001, i64 2, i64 0 }, ptr %a285
|
|
%t286 = call i32 @finch_str_ends(ptr %a283, ptr %a285)
|
|
%t287 = icmp ne i32 %t286, 0
|
|
br i1 %t287, label %then8978, label %else8979
|
|
then8978:
|
|
%t288 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0
|
|
%t289 = load { ptr, i64, i64 }, ptr %t288
|
|
store { ptr, i64, i64 } %t289, ptr %a291
|
|
store { ptr, i64, i64 } { ptr @.str.6002, i64 1, i64 0 }, ptr %a292
|
|
call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292)
|
|
%t293 = load { ptr, i64, i64 }, ptr %a290
|
|
%t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1
|
|
%t295 = load i64, ptr %t294
|
|
call void @finch_str_from_int(ptr %a296, i64 %t295)
|
|
%t297 = load { ptr, i64, i64 }, ptr %a296
|
|
store { ptr, i64, i64 } %t293, ptr %a299
|
|
store { ptr, i64, i64 } %t297, ptr %a300
|
|
call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300)
|
|
%t301 = load { ptr, i64, i64 }, ptr %a298
|
|
store { ptr, i64, i64 } %t301, ptr %a303
|
|
store { ptr, i64, i64 } { ptr @.str.6003, i64 2, i64 0 }, ptr %a304
|
|
call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304)
|
|
%t305 = load { ptr, i64, i64 }, ptr %a302
|
|
store { ptr, i64, i64 } %t305, ptr %a306
|
|
store { ptr, i64, i64 } { ptr @.str.6004, i64 6, i64 0 }, ptr %a307
|
|
%t308 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1
|
|
%t309 = load i1, ptr %t308
|
|
br i1 %t309, label %then8981, label %endif8983
|
|
then8981:
|
|
store { ptr, i64, i64 } { ptr @.str.6005, i64 0, i64 0 }, ptr %a307
|
|
br label %endif8983
|
|
endif8983:
|
|
%t310 = load { ptr, i64, i64 }, ptr %a21
|
|
store { ptr, i64, i64 } %t310, ptr %a312
|
|
store { ptr, i64, i64 } { ptr @.str.6006, i64 4, i64 0 }, ptr %a313
|
|
call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313)
|
|
%t314 = load { ptr, i64, i64 }, ptr %a311
|
|
%t315 = load { ptr, i64, i64 }, ptr %a307
|
|
store { ptr, i64, i64 } %t314, ptr %a317
|
|
store { ptr, i64, i64 } %t315, ptr %a318
|
|
call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318)
|
|
%t319 = load { ptr, i64, i64 }, ptr %a316
|
|
store { ptr, i64, i64 } %t319, ptr %a321
|
|
store { ptr, i64, i64 } { ptr @.str.6007, i64 4, i64 0 }, ptr %a322
|
|
call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322)
|
|
%t323 = load { ptr, i64, i64 }, ptr %a320
|
|
%t324 = load { ptr, i64, i64 }, ptr %a281
|
|
%t325 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t324)
|
|
store { ptr, i64, i64 } %t323, ptr %a327
|
|
store { ptr, i64, i64 } %t325, ptr %a328
|
|
call void @finch_str_concat(ptr %a326, ptr %a327, ptr %a328)
|
|
%t329 = load { ptr, i64, i64 }, ptr %a326
|
|
store { ptr, i64, i64 } %t329, ptr %a331
|
|
store { ptr, i64, i64 } { ptr @.str.6008, i64 4, i64 0 }, ptr %a332
|
|
call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332)
|
|
%t333 = load { ptr, i64, i64 }, ptr %a330
|
|
%t334 = load { ptr, i64, i64 }, ptr %a306
|
|
%t335 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t334)
|
|
store { ptr, i64, i64 } %t333, ptr %a337
|
|
store { ptr, i64, i64 } %t335, ptr %a338
|
|
call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338)
|
|
%t339 = load { ptr, i64, i64 }, ptr %a336
|
|
store { ptr, i64, i64 } %t339, ptr %a341
|
|
store { ptr, i64, i64 } { ptr @.str.6009, i64 3, i64 0 }, ptr %a342
|
|
call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342)
|
|
%t343 = load { ptr, i64, i64 }, ptr %a340
|
|
%t344 = load { ptr, i64, i64 }, ptr %a101
|
|
%t345 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t344)
|
|
store { ptr, i64, i64 } %t343, ptr %a347
|
|
store { ptr, i64, i64 } %t345, ptr %a348
|
|
call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348)
|
|
%t349 = load { ptr, i64, i64 }, ptr %a346
|
|
store { ptr, i64, i64 } %t349, ptr %a351
|
|
store { ptr, i64, i64 } { ptr @.str.6010, i64 5, i64 0 }, ptr %a352
|
|
call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352)
|
|
%t353 = load { ptr, i64, i64 }, ptr %a350
|
|
store { ptr, i64, i64 } %t353, ptr %a355
|
|
call void @finch_str_copy(ptr %a354, ptr %a355)
|
|
%t356 = call i64 @finch_shell(ptr %a354)
|
|
store i64 %t356, ptr %a357
|
|
%t358 = load i64, ptr %a357
|
|
%t359 = icmp ne i64 %t358, 0
|
|
br i1 %t359, label %then8984, label %endif8986
|
|
then8984:
|
|
%t360 = load { ptr, i64, i64 }, ptr %a101
|
|
store { ptr, i64, i64 } %t360, ptr %a361
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a362
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a363
|
|
%t364 = call i32 @finch_try_read_file(ptr %a362, ptr %a361, ptr %a363)
|
|
%t365 = icmp eq i32 %t364, 0
|
|
%t366 = load { ptr, i64, i64 }, ptr %a363
|
|
%t367 = load { ptr, i64, i64 }, ptr %a362
|
|
br i1 %t365, label %or.failed8987, label %or.ok8988
|
|
or.failed8987:
|
|
store { ptr, i64, i64 } %t366, ptr %a368
|
|
br label %or.bend8989
|
|
or.bend8989:
|
|
br label %or.end8990
|
|
or.ok8988:
|
|
br label %or.end8990
|
|
or.end8990:
|
|
%t369 = phi { ptr, i64, i64 } [ { ptr @.str.6011, i64 0, i64 0 }, %or.bend8989 ], [ %t367, %or.ok8988 ]
|
|
store { ptr, i64, i64 } %t369, ptr %a371
|
|
store { ptr, i64, i64 } { ptr @.str.6012, i64 24, i64 0 }, ptr %a372
|
|
call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372)
|
|
%t373 = load { ptr, i64, i64 }, ptr %a370
|
|
%t374 = load { ptr, i64, i64 }, ptr %a281
|
|
store { ptr, i64, i64 } %t373, ptr %a376
|
|
store { ptr, i64, i64 } %t374, ptr %a377
|
|
call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377)
|
|
%t378 = load { ptr, i64, i64 }, ptr %a375
|
|
%t379 = extractvalue { ptr, i64, i64 } %t378, 1
|
|
%t380 = trunc i64 %t379 to i32
|
|
%t381 = extractvalue { ptr, i64, i64 } %t378, 0
|
|
%t382 = icmp eq ptr %t381, null
|
|
%t383 = select i1 %t382, ptr @.str.6013, ptr %t381
|
|
%t384 = call i32 (ptr, ...) @printf(ptr @.str.6014, i32 %t380, ptr %t383)
|
|
%t385 = call i32 (ptr, ...) @printf(ptr @.str.6015)
|
|
%t386 = load { ptr, i64, i64 }, ptr %a78
|
|
%t387 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t386)
|
|
store { ptr, i64, i64 } { ptr @.str.6016, i64 6, i64 0 }, ptr %a389
|
|
store { ptr, i64, i64 } %t387, ptr %a390
|
|
call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390)
|
|
%t391 = load { ptr, i64, i64 }, ptr %a388
|
|
store { ptr, i64, i64 } %t391, ptr %a393
|
|
store { ptr, i64, i64 } { ptr @.str.6017, i64 1, i64 0 }, ptr %a394
|
|
call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394)
|
|
%t395 = load { ptr, i64, i64 }, ptr %a392
|
|
%t396 = load { ptr, i64, i64 }, ptr %a101
|
|
%t397 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t396)
|
|
store { ptr, i64, i64 } %t395, ptr %a399
|
|
store { ptr, i64, i64 } %t397, ptr %a400
|
|
call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400)
|
|
%t401 = load { ptr, i64, i64 }, ptr %a398
|
|
store { ptr, i64, i64 } %t401, ptr %a403
|
|
store { ptr, i64, i64 } { ptr @.str.6018, i64 1, i64 0 }, ptr %a404
|
|
call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404)
|
|
%t405 = load { ptr, i64, i64 }, ptr %a402
|
|
%t406 = load { ptr, i64, i64 }, ptr %a306
|
|
%t407 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t406)
|
|
store { ptr, i64, i64 } %t405, ptr %a409
|
|
store { ptr, i64, i64 } %t407, ptr %a410
|
|
call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410)
|
|
%t411 = load { ptr, i64, i64 }, ptr %a408
|
|
store { ptr, i64, i64 } %t411, ptr %a413
|
|
call void @finch_str_copy(ptr %a412, ptr %a413)
|
|
%t414 = call i64 @finch_shell(ptr %a412)
|
|
ret i64 1
|
|
endif8986:
|
|
%t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1
|
|
%t416 = load { ptr, i64, i64 }, ptr %a306
|
|
store { ptr, i64, i64 } %t416, ptr %a417
|
|
call void @finch_str_copy(ptr %a418, ptr %a417)
|
|
%t419 = load { ptr, i64, i64 }, ptr %a418
|
|
%t420 = load i64, ptr %t415
|
|
%t421 = add i64 %t420, 1
|
|
call void @finch_arr_reserve(ptr %a271, i64 %t421, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64))
|
|
%t422 = load ptr, ptr %a271
|
|
%t423 = getelementptr inbounds { ptr, i64, i64 }, ptr %t422, i64 %t420
|
|
store { ptr, i64, i64 } %t419, ptr %t423
|
|
store i64 %t421, ptr %t415
|
|
%t424 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t424, ptr %a426
|
|
store { ptr, i64, i64 } { ptr @.str.6019, i64 1, i64 0 }, ptr %a427
|
|
call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427)
|
|
%t428 = load { ptr, i64, i64 }, ptr %a425
|
|
%t429 = load { ptr, i64, i64 }, ptr %a306
|
|
%t430 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t429)
|
|
store { ptr, i64, i64 } %t428, ptr %a432
|
|
store { ptr, i64, i64 } %t430, ptr %a433
|
|
call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433)
|
|
%t434 = load { ptr, i64, i64 }, ptr %a431
|
|
store { ptr, i64, i64 } %t434, ptr %a248
|
|
br label %endif8980
|
|
else8979:
|
|
%t435 = load { ptr, i64, i64 }, ptr %a281
|
|
store { ptr, i64, i64 } %t435, ptr %a436
|
|
store { ptr, i64, i64 } { ptr @.str.6021, i64 2, i64 0 }, ptr %a438
|
|
%t439 = call i32 @finch_str_ends(ptr %a436, ptr %a438)
|
|
%t440 = icmp ne i32 %t439, 0
|
|
br label %logic.from8991
|
|
logic.from8991:
|
|
br i1 %t440, label %logic.end8993, label %logic.rhs8992
|
|
logic.rhs8992:
|
|
%t441 = load { ptr, i64, i64 }, ptr %a281
|
|
store { ptr, i64, i64 } %t441, ptr %a442
|
|
store { ptr, i64, i64 } { ptr @.str.6023, i64 2, i64 0 }, ptr %a444
|
|
%t445 = call i32 @finch_str_ends(ptr %a442, ptr %a444)
|
|
%t446 = icmp ne i32 %t445, 0
|
|
br label %logic.rend8994
|
|
logic.rend8994:
|
|
br label %logic.end8993
|
|
logic.end8993:
|
|
%t447 = phi i1 [ true, %logic.from8991 ], [ %t446, %logic.rend8994 ]
|
|
br i1 %t447, label %then8995, label %else8996
|
|
then8995:
|
|
%t448 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t448, ptr %a450
|
|
store { ptr, i64, i64 } { ptr @.str.6024, i64 1, i64 0 }, ptr %a451
|
|
call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451)
|
|
%t452 = load { ptr, i64, i64 }, ptr %a449
|
|
%t453 = load { ptr, i64, i64 }, ptr %a281
|
|
%t454 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t453)
|
|
store { ptr, i64, i64 } %t452, ptr %a456
|
|
store { ptr, i64, i64 } %t454, ptr %a457
|
|
call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457)
|
|
%t458 = load { ptr, i64, i64 }, ptr %a455
|
|
store { ptr, i64, i64 } %t458, ptr %a248
|
|
br label %endif8997
|
|
else8996:
|
|
%t459 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t459, ptr %a461
|
|
store { ptr, i64, i64 } { ptr @.str.6025, i64 1, i64 0 }, ptr %a462
|
|
call void @finch_str_concat(ptr %a460, ptr %a461, ptr %a462)
|
|
%t463 = load { ptr, i64, i64 }, ptr %a460
|
|
%t464 = load { ptr, i64, i64 }, ptr %a281
|
|
%t465 = load %S.platform.Target, ptr %a2
|
|
%t466 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t464, %S.platform.Target %t465)
|
|
store { ptr, i64, i64 } %t463, ptr %a468
|
|
store { ptr, i64, i64 } %t466, ptr %a469
|
|
call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469)
|
|
%t470 = load { ptr, i64, i64 }, ptr %a467
|
|
store { ptr, i64, i64 } %t470, ptr %a248
|
|
br label %endif8997
|
|
endif8997:
|
|
br label %endif8980
|
|
endif8980:
|
|
br label %each.step8976
|
|
each.step8976:
|
|
%t471 = load i64, ptr %a273
|
|
%t472 = add i64 %t471, 1
|
|
store i64 %t472, ptr %a273
|
|
br label %each.cond8974
|
|
each.end8977:
|
|
%t473 = load { ptr, i64, i64 }, ptr %a248
|
|
store { ptr, i64, i64 } %t473, ptr %a475
|
|
store { ptr, i64, i64 } { ptr @.str.6026, i64 3, i64 0 }, ptr %a476
|
|
call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476)
|
|
%t477 = load { ptr, i64, i64 }, ptr %a474
|
|
%t478 = load { ptr, i64, i64 }, ptr %a101
|
|
%t479 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t478)
|
|
store { ptr, i64, i64 } %t477, ptr %a481
|
|
store { ptr, i64, i64 } %t479, ptr %a482
|
|
call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482)
|
|
%t483 = load { ptr, i64, i64 }, ptr %a480
|
|
store { ptr, i64, i64 } %t483, ptr %a485
|
|
store { ptr, i64, i64 } { ptr @.str.6027, i64 5, i64 0 }, ptr %a486
|
|
call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486)
|
|
%t487 = load { ptr, i64, i64 }, ptr %a484
|
|
store { ptr, i64, i64 } %t487, ptr %a489
|
|
call void @finch_str_copy(ptr %a488, ptr %a489)
|
|
%t490 = call i64 @finch_shell(ptr %a488)
|
|
store i64 %t490, ptr %a491
|
|
%t492 = load { ptr, i64, i64 }, ptr %a101
|
|
store { ptr, i64, i64 } %t492, ptr %a493
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a494
|
|
store { ptr, i64, i64 } zeroinitializer, ptr %a495
|
|
%t496 = call i32 @finch_try_read_file(ptr %a494, ptr %a493, ptr %a495)
|
|
%t497 = icmp eq i32 %t496, 0
|
|
%t498 = load { ptr, i64, i64 }, ptr %a495
|
|
%t499 = load { ptr, i64, i64 }, ptr %a494
|
|
br i1 %t497, label %or.failed8998, label %or.ok8999
|
|
or.failed8998:
|
|
store { ptr, i64, i64 } %t498, ptr %a500
|
|
br label %or.bend9000
|
|
or.bend9000:
|
|
br label %or.end9001
|
|
or.ok8999:
|
|
br label %or.end9001
|
|
or.end9001:
|
|
%t501 = phi { ptr, i64, i64 } [ { ptr @.str.6028, i64 0, i64 0 }, %or.bend9000 ], [ %t499, %or.ok8999 ]
|
|
store { ptr, i64, i64 } %t501, ptr %a502
|
|
%t503 = load { ptr, i64, i64 }, ptr %a78
|
|
%t504 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t503)
|
|
store { ptr, i64, i64 } { ptr @.str.6029, i64 6, i64 0 }, ptr %a506
|
|
store { ptr, i64, i64 } %t504, ptr %a507
|
|
call void @finch_str_concat(ptr %a505, ptr %a506, ptr %a507)
|
|
%t508 = load { ptr, i64, i64 }, ptr %a505
|
|
store { ptr, i64, i64 } %t508, ptr %a510
|
|
store { ptr, i64, i64 } { ptr @.str.6030, i64 1, i64 0 }, ptr %a511
|
|
call void @finch_str_concat(ptr %a509, ptr %a510, ptr %a511)
|
|
%t512 = load { ptr, i64, i64 }, ptr %a509
|
|
%t513 = load { ptr, i64, i64 }, ptr %a101
|
|
%t514 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t513)
|
|
store { ptr, i64, i64 } %t512, ptr %a516
|
|
store { ptr, i64, i64 } %t514, ptr %a517
|
|
call void @finch_str_concat(ptr %a515, ptr %a516, ptr %a517)
|
|
%t518 = load { ptr, i64, i64 }, ptr %a515
|
|
store { ptr, i64, i64 } %t518, ptr %a520
|
|
call void @finch_str_copy(ptr %a519, ptr %a520)
|
|
%t521 = call i64 @finch_shell(ptr %a519)
|
|
store i64 0, ptr %a522
|
|
br label %each.cond9002
|
|
each.cond9002:
|
|
%t523 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1
|
|
%t524 = load i64, ptr %t523
|
|
%t525 = load i64, ptr %a522
|
|
%t526 = icmp slt i64 %t525, %t524
|
|
br i1 %t526, label %each.body9003, label %each.end9005
|
|
each.body9003:
|
|
%t527 = load ptr, ptr %a271
|
|
%t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t527, i64 %t525
|
|
%t529 = load { ptr, i64, i64 }, ptr %t528
|
|
store { ptr, i64, i64 } %t529, ptr %a530
|
|
%t531 = load { ptr, i64, i64 }, ptr %a530
|
|
%t532 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t531)
|
|
store { ptr, i64, i64 } { ptr @.str.6031, i64 6, i64 0 }, ptr %a534
|
|
store { ptr, i64, i64 } %t532, ptr %a535
|
|
call void @finch_str_concat(ptr %a533, ptr %a534, ptr %a535)
|
|
%t536 = load { ptr, i64, i64 }, ptr %a533
|
|
store { ptr, i64, i64 } %t536, ptr %a538
|
|
call void @finch_str_copy(ptr %a537, ptr %a538)
|
|
%t539 = call i64 @finch_shell(ptr %a537)
|
|
br label %each.step9004
|
|
each.step9004:
|
|
%t540 = load i64, ptr %a522
|
|
%t541 = add i64 %t540, 1
|
|
store i64 %t541, ptr %a522
|
|
br label %each.cond9002
|
|
each.end9005:
|
|
%t542 = load i64, ptr %a491
|
|
%t543 = icmp eq i64 %t542, 127
|
|
br i1 %t543, label %then9006, label %endif9008
|
|
then9006:
|
|
%t544 = load { ptr, i64, i64 }, ptr %a21
|
|
store { ptr, i64, i64 } { ptr @.str.6032, i64 42, i64 0 }, ptr %a546
|
|
store { ptr, i64, i64 } %t544, ptr %a547
|
|
call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547)
|
|
%t548 = load { ptr, i64, i64 }, ptr %a545
|
|
store { ptr, i64, i64 } %t548, ptr %a550
|
|
store { ptr, i64, i64 } { ptr @.str.6033, i64 32, i64 0 }, ptr %a551
|
|
call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551)
|
|
%t552 = load { ptr, i64, i64 }, ptr %a549
|
|
%t553 = extractvalue { ptr, i64, i64 } %t552, 1
|
|
%t554 = trunc i64 %t553 to i32
|
|
%t555 = extractvalue { ptr, i64, i64 } %t552, 0
|
|
%t556 = icmp eq ptr %t555, null
|
|
%t557 = select i1 %t556, ptr @.str.6034, ptr %t555
|
|
%t558 = call i32 (ptr, ...) @printf(ptr @.str.6035, i32 %t554, ptr %t557)
|
|
%t559 = call i32 (ptr, ...) @printf(ptr @.str.6036)
|
|
ret i64 1
|
|
endif9008:
|
|
%t560 = load i64, ptr %a491
|
|
%t561 = icmp ne i64 %t560, 0
|
|
br i1 %t561, label %then9009, label %endif9011
|
|
then9009:
|
|
%t562 = load { ptr, i64, i64 }, ptr %a502
|
|
%t563 = load %S.cimport.CImports, ptr %a3
|
|
%t564 = load %S.platform.Target, ptr %a2
|
|
%t565 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t562, %S.cimport.CImports %t563, %S.platform.Target %t564)
|
|
ret i64 %t565
|
|
endif9011:
|
|
%t566 = getelementptr inbounds { ptr, i64, i64 }, ptr %a502, i32 0, i32 1
|
|
%t567 = load i64, ptr %t566
|
|
%t568 = icmp sgt i64 %t567, 0
|
|
br i1 %t568, label %then9012, label %endif9014
|
|
then9012:
|
|
%t569 = load { ptr, i64, i64 }, ptr %a502
|
|
%t570 = extractvalue { ptr, i64, i64 } %t569, 1
|
|
%t571 = trunc i64 %t570 to i32
|
|
%t572 = extractvalue { ptr, i64, i64 } %t569, 0
|
|
%t573 = icmp eq ptr %t572, null
|
|
%t574 = select i1 %t573, ptr @.str.6037, ptr %t572
|
|
%t575 = call i32 (ptr, ...) @printf(ptr @.str.6038, i32 %t571, ptr %t574)
|
|
%t576 = call i32 (ptr, ...) @printf(ptr @.str.6039)
|
|
br label %endif9014
|
|
endif9014:
|
|
ret i64 0
|
|
}
|
|
|
|
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
|
|
}
|
|
|